LangChain integration for HyperspaceDB - Hyperbolic Vector Database with Edge-Cloud Federation
Project description
LangChain HyperspaceDB Integration
Official LangChain integration for HyperspaceDB - a hyperbolic vector database with Edge-Cloud Federation.
Features
- 🌐 Hyperbolic Geometry: Poincaré ball model for hierarchical embeddings
- 🔄 Edge-Cloud Federation: Offline-first with automatic sync
- 🌳 Merkle Tree Sync: Efficient data replication and verification
- 🗜️ 1-bit Quantization: 64x memory reduction with minimal accuracy loss
- 🔍 Built-in Deduplication: Content-based hashing prevents duplicates
- ⚡ High Performance: Written in Rust for maximum speed
Installation
pip install langchain-hyperspace
Quick Start
Basic Usage
from langchain_hyperspace import HyperspaceVectorStore
from langchain_openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.document_loaders import TextLoader
# Initialize embeddings
embeddings = OpenAIEmbeddings()
# Create vector store
vectorstore = HyperspaceVectorStore(
host="localhost",
port=50051,
collection_name="my_documents",
embedding_function=embeddings,
api_key="your_api_key" # Optional
)
# Load and split documents
loader = TextLoader("path/to/document.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
# Add documents to vector store
vectorstore.add_documents(docs)
# Search for similar documents
query = "What is the main topic?"
results = vectorstore.similarity_search(query, k=4)
for doc in results:
print(doc.page_content)
RAG (Retrieval-Augmented Generation) Example
from langchain_hyperspace import HyperspaceVectorStore
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain.chains import RetrievalQA
# Setup
embeddings = OpenAIEmbeddings()
vectorstore = HyperspaceVectorStore(
host="localhost",
port=50051,
collection_name="knowledge_base",
embedding_function=embeddings
)
# Create RAG chain
llm = ChatOpenAI(model_name="gpt-4")
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(search_kwargs={"k": 3})
)
# Ask questions
response = qa_chain.run("What are the key features of HyperspaceDB?")
print(response)
Content Deduplication
HyperspaceDB automatically deduplicates content using SHA-256 hashing:
vectorstore = HyperspaceVectorStore(
host="localhost",
port=50051,
collection_name="deduplicated_docs",
embedding_function=embeddings,
enable_deduplication=True # Default
)
# Adding the same text twice will only store it once
vectorstore.add_texts([
"This is a unique document",
"This is a unique document", # Duplicate - will be skipped
"This is another document"
])
Sync Verification (Edge-Cloud Federation)
Check synchronization status using Merkle Tree digest:
# Get collection digest
digest = vectorstore.get_digest()
print(f"Logical Clock: {digest['logical_clock']}")
print(f"State Hash: {digest['state_hash']}")
print(f"Vector Count: {digest['count']}")
print(f"Bucket Hashes: {len(digest['buckets'])} buckets")
Configuration
Connection Options
vectorstore = HyperspaceVectorStore(
host="localhost", # Server host
port=50051, # gRPC port
collection_name="default", # Collection name
embedding_function=embeddings,
api_key=None, # Optional API key
dimension=1536, # Vector dimension (must match embeddings)
metric="l2", # Distance metric: 'l2', 'cosine', 'dot'
enable_deduplication=True # Enable content-based deduplication
)
Distance Metrics
l2: Euclidean distance (default)cosine: Cosine similaritydot: Dot product
Advanced Usage
Metadata Filtering
# Add documents with metadata
vectorstore.add_texts(
texts=["Document 1", "Document 2"],
metadatas=[
{"source": "web", "category": "tech"},
{"source": "pdf", "category": "science"}
]
)
# Search with metadata filter (coming soon)
results = vectorstore.similarity_search(
"technology trends",
k=5,
filter={"category": "tech"}
)
Batch Operations
# Add large batches efficiently
texts = [f"Document {i}" for i in range(10000)]
metadatas = [{"index": i} for i in range(10000)]
vectorstore.add_texts(texts, metadatas=metadatas)
Running HyperspaceDB Server
Using Docker
docker run -p 50051:50051 -p 50050:50050 \
-e HYPERSPACE_API_KEY=your_secret_key \
hyperspacedb/hyperspace-server:latest
From Source
git clone https://github.com/yourusername/hyperspace-db
cd hyperspace-db
cargo build --release
HYPERSPACE_API_KEY=your_secret_key ./target/release/hyperspace-server
Development
Setup
git clone https://github.com/yourusername/hyperspace-db
cd hyperspace-db/integrations/langchain-python
# Install in development mode
pip install -e ".[dev]"
# Generate protobuf files
./generate_proto.sh
Running Tests
pytest tests/
Code Quality
# Format code
black src/ tests/
# Lint
ruff check src/ tests/
# Type check
mypy src/
Examples
See the examples/ directory for complete examples:
rag_chatbot.py: RAG chatbot with memorydocument_qa.py: Document Q&A systemsemantic_search.py: Semantic search engineedge_sync.py: Edge-Cloud synchronization demo
Documentation
Performance
HyperspaceDB is optimized for:
- Insert: 10K+ vectors/second
- Search: <10ms p99 latency
- Memory: 64x reduction with 1-bit quantization
- Sync: Merkle Tree-based differential sync
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
License
Apache License 2.0 - see LICENSE for details.
Support
- GitHub Issues: Report bugs
- Discord: Join community
- Email: support@hyperspacedb.io
Citation
If you use HyperspaceDB in your research, please cite:
@software{hyperspacedb2024,
title = {HyperspaceDB: Hyperbolic Vector Database with Edge-Cloud Federation},
author = {HyperspaceDB Team},
year = {2024},
url = {https://github.com/yourusername/hyperspace-db}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_hyperspace-3.1.4.tar.gz.
File metadata
- Download URL: langchain_hyperspace-3.1.4.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d1e78c9e2580b977f2db5522d9d2054c5edebb2d4cbec83105badf3865f540f
|
|
| MD5 |
f98521d4858f53bc284cc26fc3d6259d
|
|
| BLAKE2b-256 |
371c4f9f1af1489a5bca87bd2235e2fe6985a657b85af0d385ad428cba546879
|
File details
Details for the file langchain_hyperspace-3.1.4-py3-none-any.whl.
File metadata
- Download URL: langchain_hyperspace-3.1.4-py3-none-any.whl
- Upload date:
- Size: 24.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9cab772c6117b4b122117b8a7edff43ff7378840c188c6fc4f324b33c6e5932
|
|
| MD5 |
481d62d938f0c418c157b954fae5cde1
|
|
| BLAKE2b-256 |
3b9919b1cb6141c81d0f3d34cee6a8891eb92f4090ed641b0c928f55cfbf6d8a
|