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 32-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
- es2o (Orchestrator): Manages and schedules compute requests
- es2c (Compute): Executes vector search and similarity computations
- PostgreSQL: Metadata storage and management
- MinIO: Vector data storage (S3-compatible)
envector-deployment/
βββ docker-compose/ # Docker Compose deployment
β βββ docker-compose.envector.yml # Core application services
β βββ docker-compose.infra.yml # Postgres + MinIO (adds readiness deps to core)
β βββ docker-compose.gpu.yml # GPU override for es2c
β βββ .env.example # environment variables for es2
β βββ start_envector.sh # easy-to-use helper script
β βββ 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. See more details in docker-compose README.
# Clone the repository
git clone https://github.com/CryptoLabInc/envector-deployment.git
cd envector-deployment/docker-compose
# Copy environment file (optional)
# If .env is missing, ./start_envector.sh will be created from .env.example automatically
cp .env.example .env
# Start services (performs preflight: Docker, PAT login if needed, license token)
./start_envector.sh
# OR docker compose -f docker-compose.envector.yml -f docker-compose.infra.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.envector.yml
curl -O https://raw.githubusercontent.com/cryptolabinc/envector-deployment/main/docker-compose/docker-compose.infra.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.envector.yml -f docker-compose.infra.yml -p envector up -dRecommended 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 |
ES2O_TAG |
es2o 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 es2import 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 = [
[0.001 * i for i in range(512)],
[0.001 * i + 0.001 for i in range(512)],
]
index.insert(vectors, metadata=["doc1", "doc2"])
# Search
results = index.search(vectors[0], 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.json")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