enVector is a product that provides secure vector search functionality using ES2 (Encrypted Similarity Search), which is based on Fully Homomorphic Encryption (FHE). This repository contains self-hosted deployment scripts and client SDK examples.
- π End-to-End Encryption: Secure vector search with FHE (Fully Homomorphic Encryption)
- β‘ High Performance: Optimized vector similarity search algorithms
- ποΈ Microservices Architecture: Scalable and maintainable service design
- π³ Multi-Platform Deployment: Docker Compose and Kubernetes (Helm) support
- π± Python SDK: Easy-to-use client library for integration
- Fully Homomorphic Encryption: Secure computation on encrypted data
- Client-side Key Management: Secret key never leave the client
- Encrypted Vector Storage: All vector data is encrypted at rest (at-rest)
- Secure Search: Search operations performed on encrypted data (in-use)
- Vector Dimensions: Support for 16-4096 dimensional vectors
- Search Speed: Optimized encrtyped similarity search algorithms
- Scalability: Horizontal scaling with Kubernetes
- GPU Support: Optional GPU acceleration for encrypted vector search
- Python 3.9-3.13
- Docker and Docker Compose
- Kubernetes cluster (for K8s deployment)
- Helm 3.0+
- Linux or macOS 11.0+
enVector consists of four main microservices:
- es2e (Endpoint): Main API gateway and client interface
- es2b (Backend): Service orchestration and metadata management
- es2s (Search): Vector search engine and similarity computation
- es2c (Compute): Vector operations and mathematical computations
- PostgreSQL: Metadata storage and management
- MinIO: Vector data storage (S3-compatible)
envector-deployment/
βββ docker-compose/ # Docker Compose deployment
β βββ docker-compose.yml # Multi-service orchestration
β βββ README.md # Docker setup guide
βββ kubernetes-manifests/ # Kubernetes deployment
β βββ helm/ # Helm chart for K8s
β β βββ Chart.yaml # Chart metadata
β β βββ values.yaml # Configurable values
β β βββ templates/ # K8s manifest templates
β βββ README.md # K8s deployment guide
βββ notebooks/ # Python SDK examples
Recommended for Development.
# Clone the repository
git clone https://github.com/CryptoLabInc/envector-deployment.git
cd envector-deployment
# Copy environment file
cp .env.example .env
# Start services
docker compose -f docker-compose/docker-compose.yml -p envector up -d
# Download and run directly from GitHub
curl -O https://raw.githubusercontent.com/cryptolabinc/envector-deployment/main/docker-compose/docker-compose.yml
curl -O https://raw.githubusercontent.com/cryptolabinc/envector-deployment/main/docker-compose/.env.example
# Copy environment file
cp .env.example .env
# Start services
docker compose -f docker-compose.yml -p envector up -d
Recommended for production.
# Clone the repository
git clone https://github.com/CryptoLabInc/envector-deployment.git
cd envector-deployment
# Install Helm chart
helm install envector ./kubernetes-manifests/helm
# Check deployment status
kubectl get pods
# Access services
kubectl get svc
Variable | Description | Default |
---|---|---|
ES2E_TAG |
es2e service image tag | latest |
ES2B_TAG |
es2b service image tag | latest |
ES2S_TAG |
es2s service image tag | latest |
ES2C_TAG |
es2c service image tag | latest |
ES2_LOG_LEVEL |
Logging level | INFO |
ES2E_HOST_PORT |
es2e external port | 50050 |
Edit kubernetes-manifests/helm/values.yaml
to customize:
- Service ports and types
- Resource limits and replicas
- External database connections
- Image repositories and tags
- Python Version: 3.9-3.13
- OS: Linux/macOS 11.0+
pip install es2
import es2
# Initialize connection
es2.init(
host="localhost",
port=50050,
key_path="./keys",
key_id="my_key"
)
# Create index
index = es2.create_index("my_index", dim=512)
# Insert vectors
vectors = [...] # Your 512-dimensional vectors
index.insert(vectors, metadata=["doc1", "doc2"])
# Search
results = index.search(query_vector, top_k=5)
from es2.crypto import KeyGenerator, Cipher
# Generate FHE keys
keygen = KeyGenerator("./keys/my_key")
keygen.generate_keys()
# Create cipher for encryption/decryption
cipher = Cipher(dim=512, enc_key_path="./keys/my_key/EncKey.bin")
This project is proprietary software. For licensing information, please contact heaan.
This is a proprietary software project. For contribution inquiries, please contact heaan.
- Product Information: enVector at heaan
- Technical Support: Please contact heaan