LangChain VectorStore integration for Envector (ES2) encrypted vector search
Project description
LangChain Envector Integration
Encrypted vector search for LangChain using Envector (ES2), powered by homomorphic encryption (CKKS). This repo ships a LangChain-compatible VectorStore and retriever utilities built on the high-level es2 Python SDK.
Features
- LangChain
VectorStoreinterface withsimilarity_search,from_texts, etc. - Optional
VectorStoreRetrieverhelper for quick RAG integrations. - Client-side encryption handled transparently by the SDK, including score thresholds and filtering.
Installation
- Python 3.9–3.13 (recommend 3.11)
- Create and activate a virtualenv:
python3.11 -m venv .venv && source .venv/bin/activate
- Install runtime dependencies:
pip install -U pip setuptools wheelpip install es2==1.1.0 langchain sentence-transformers
Usage Overview
- Configure Envector using
EnvectorConfig, pointing to your ES2 endpoint and keys. - Initialize embeddings (or provide pre-computed vectors).
- Instantiate
Envector(config=cfg, embeddings=emb)and calladd_textsoras_retriever. - Run
similarity_searchor plug the retriever into your LangChain pipeline.
See
notebooks/for end-to-end walkthroughs and thelibs/envectorpackage for implementation details.
Configuration
Key dataclasses live in libs/envector/config.py:
ConnectionConfig: address or host/port for ES2.KeyConfig: key path, key ID, optional preset/eval mode.IndexSettings: index name, dimension (16–4096), query encryption mode, optional output fields and fetch parameters.EnvectorConfig: wraps the above and enables auto-creation viacreate_if_missing.
Data Model
- Each vector stores a single
metadatastring in ES2. - To align with LangChain’s
Document, inserts wrap data as JSON:{"text": ..., "metadata": ...}. - Retrieval unwraps JSON, returning
Document(page_content=text, metadata={...}). - Client-side filtering requires the JSON envelope to include an object under
metadata.
Limitations
- Item-level delete/update is unsupported (drop the index to reset).
- Manual item IDs are not accepted; returned IDs from
add_textsare ephemeral. - Filtering happens client-side; ensure metadata is JSON for structured filters.
Troubleshooting
- Connection issues: verify ES2 address and registered keys.
- Embeddings mismatch: ensure embedding dimension equals
index.dimwhen supplying vectors. - Unexpected raw strings: confirm inserts used the JSON envelope.
Contributing
See CONTRIBUTE.md for development, testing, and PR guidelines.
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 Distributions
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_envector-0.1.2-py3-none-any.whl.
File metadata
- Download URL: langchain_envector-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70f85485f680d35f6d7aa05f434b34aa13e42d6b2a422c37ffff5b568b7861cc
|
|
| MD5 |
73c9d4225a23aa217776fbd7ebc17fc9
|
|
| BLAKE2b-256 |
58705436287963e2e10fbd0b51e94f21650c13ca37271123b70ac617188e85b8
|