Skip to main content

A client application for performing encrypted vector search using homomorphic encryption.

Project description

What is enVector?

enVector is a high-performance encrypted vector search service that keeps both your vectors and similarity scores private during computation. The pyenvector Python SDK lets you talk to the enVector server from Python while keeping all sensitive data encrypted end to end.

pyenvector Example

This example walks through the typical pyenvector workflow for encrypted similarity search and vector database operations.


Install and Import

Install the SDK and import it as ev for brevity.

pip install pyenvector
import pyenvector as ev

🔍 Vector Search

1. Initialize enVector

Set up the connection to the enVector server and configure your key material.

ev.init(
    host="localhost",
    port=50050,
    key_path="./keys",
    key_id="quickstart_key",
)

2. Create Index

Create an index before inserting data. Define the index name and vector dimensionality.

index = ev.create_index("quickstart_index", dim=512)

3. Insert Data

Insert vectors into the index. The snippet below generates random 512-dimensional vectors with normalization and metadata.

import numpy as np

# Function to generate normalized random vectors
def generate_random_vector(dim):
    if dim < 32 or dim > 4096:
        raise ValueError(f"Invalid dimension: {dim}.")

    vec = np.random.uniform(-1.0, 1.0, dim)
    norm = np.linalg.norm(vec)

    if norm > 0:
        vec = vec / norm

    return vec

# Prepare sample data
num_data = 10
db_vectors = [generate_random_vector(512) for _ in range(num_data)]
db_metadata = [f"data_{i+1}" for i in range(num_data)]

# Insert into index
index.insert(db_vectors, metadata=db_metadata)

4. Encrypted Similarity Search

Query the index and retrieve encrypted similarity scores that are decrypted on the client side.

query = db_vectors[1]
top_k = 2

result = index.search(query, top_k=top_k, output_fields=["metadata"])
print(result)

🧹 Clean Up

Remove test data and release keys when you are done.

ev.drop_index("quickstart_index")
ev.delete_key("quickstart_key")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyenvector-1.3.0rc1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyenvector-1.3.0rc1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pyenvector-1.3.0rc1-cp313-cp313-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyenvector-1.3.0rc1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyenvector-1.3.0rc1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pyenvector-1.3.0rc1-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyenvector-1.3.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyenvector-1.3.0rc1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pyenvector-1.3.0rc1-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyenvector-1.3.0rc1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyenvector-1.3.0rc1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pyenvector-1.3.0rc1-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyenvector-1.3.0rc1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyenvector-1.3.0rc1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pyenvector-1.3.0rc1-cp39-cp39-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file pyenvector-1.3.0rc1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca80b53573449f532d2a28959a0f86bee38c58c02c7cc115ebcffdd5f7b49c4b
MD5 0b1e11218a3226c38213854673cf88fc
BLAKE2b-256 d9cb7e68920cd1220a58f4a9e23d080578d0f649f37c861caee5f992975535d9

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e65702e473ec60ad1604cfe2a177ba5e0503856c43bcee0f30cd47ce6cc0b61f
MD5 59cb347997deb00fcdc90afffb6bd201
BLAKE2b-256 e242c62305da25c10e8a65b22c472cf7b6a694808a3f05928702d48b5327bda2

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1921e30815a1c0796fed2438f59181307dbcc3470293c417db71e84ddb3deb6
MD5 16e5656f895ab268ced4a0fdefacce86
BLAKE2b-256 870577fa45b4b106d9396660e206be78d9583c79d5b31c824acdf8b69ff58e68

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e5fe0f0da903bbcf58d33e9aeb68f5d61c56223cf3bafebccec2f24ab4f5065b
MD5 6fab800d2bd2fce991cf2601c61ebeff
BLAKE2b-256 7e08f4fe84dfd118d94bab00143942500f9cf39a92e0cfd20d6e03a79a41e9c5

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9abb65c873be0385daecdfc7426c14cfe774cfe9ee55afbff8bcb7c67d3d9a48
MD5 c0fb66707efd62a6c11a2466e740b5f8
BLAKE2b-256 08520de06d15a6590dacb858842aef6a44db23308081739a309ab2ee0f1ed446

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1b54e96ba372214628468e43655c910d09b51ab0871810a986d34ce31cbb6e8
MD5 c586071245c2cff5cc545b17a7580396
BLAKE2b-256 4eee64ae53fd29fa18353bdd357df5fb619457b85c8865bf0682fd432a0f3925

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 477bb3c926867d4417ad89c9b26edfb7d157a4c7f363e0c5b9d60a5560a2793c
MD5 b63b533c0cb4c98a6285ac0fae205e29
BLAKE2b-256 509891baa2c263c0beac6b1c5ff13be2ff3945b61ff32aab4dbff446a8eff67c

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 72a8348efa316bc433308eb080ec07adfaa794c48e3f809bbdcf8b5bad744169
MD5 461b3bde4a626aad87b248b660e0efee
BLAKE2b-256 dceadf0a9837613d2d191560770b92e854d3745846fbc7e735bd240ded01d8a9

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ced1a7ce87da5d828909816f5b5f675a4fef39f2a9c35200ab9a58573d733ae
MD5 b705fcea95044306650a04246c6af880
BLAKE2b-256 bced8feb3685fdbaa2e4c4be046a56e0697b3b9ee9ccaff3ca6aff110d9cd799

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 78f74f5841f2ce61a8c90d5ce859ffdd6518ee7f357e18cc117fd12e5896dbc3
MD5 70387d8e7045fefe8ecc3a86b59da567
BLAKE2b-256 aefc92ce09b6aa7dbea35c2b33a1c1e012011ef9c80e4a9caf688498f85fcc1c

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 acf22f5d9cbb19d3e4de0c0fcca7523ca5d8cc29df16aea0db58f63d1b2987dd
MD5 d0233f3f7ffd2a7ed20cbd0ab40909b9
BLAKE2b-256 fc75f065aac0433675ff26877fd41864454dbb8b005454b517784f7e9e065c02

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a669cc38e6a0e4d6f79114f9ee2f36ff0bcfa9901d781d0f3321e001744e1402
MD5 fa60cf08d122c882cbb943fbb03422a1
BLAKE2b-256 16e1a7a21fe4d6efa78d0859166c6d1441afdec175abf2cd54964cbc7acd1afa

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 742a1666eef27a7d1e13afe5c0e0bae0f820085c9f34d3372d830f9bbb2ad22c
MD5 1d7bcaf77f8605acf44ca0e802f47f05
BLAKE2b-256 d38367ed35053cc7015f1b2369b9b8edc607cd0a7ebf94464ec3a9611caf4550

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e493addbb742104ff24b00780ccaf8f59f46bee27d4358301fe6cf74d16302b8
MD5 485582303635368a994d6a1fbf894548
BLAKE2b-256 858d8cb78ec1dedbbc27025070ed8b50881c1e23c54e0b418f4ad2139bbe8146

See more details on using hashes here.

File details

Details for the file pyenvector-1.3.0rc1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0rc1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 36edc036778a4011a8cbd164ae3e6923012e4a3230cf5408e3d531f18a1cf5e3
MD5 d70978704ef5970b69133abbd6bb298d
BLAKE2b-256 4d74c91dd8ef9ff74403bbaba1ce2219794ec4378566bac881e8abce556c5577

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page