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.2.0a5-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.2.0a5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.4 MB view details)

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

pyenvector-1.2.0a5-cp313-cp313-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyenvector-1.2.0a5-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.2.0a5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.4 MB view details)

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

pyenvector-1.2.0a5-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyenvector-1.2.0a5-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.2.0a5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.4 MB view details)

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

pyenvector-1.2.0a5-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyenvector-1.2.0a5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

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

pyenvector-1.2.0a5-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.4 MB view details)

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

pyenvector-1.2.0a5-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyenvector-1.2.0a5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

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

pyenvector-1.2.0a5-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.4 MB view details)

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

pyenvector-1.2.0a5-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.2.0a5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ddf7dda95465db928599521a6cc90f35b0e78816cb1dd8bd3cc4a3165c23f71e
MD5 a3737ec255f7baa1f5f24252c48cf2ca
BLAKE2b-256 700b68be7ea41261283a484da952c0ef0cf0199416b0c607bd42a9c74119e2fe

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b8dbed7e40f297663e515cb155a5de385fbf521253a71ea05017904866bcb039
MD5 85ba3aac33752bf26ecd588c01ad1024
BLAKE2b-256 15a9acb7f45c48a6ae56b7ec52c6b54acba66c781a3d20b6db986fe0f4c83d79

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 655831a486fe2246ffff3226094fe2a592dc6af7d062958816ab507f05034de4
MD5 c4c866fa99c0efd5f16e7e09e7aaf3db
BLAKE2b-256 dc7cc512e116549ee89c0b4fb056ef2f9f7f0b02fe17939eebbdc0dd344b6aed

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3bbf3ca52bda1c8a7107591abf5a96d1778b0d961969d5d7b5807a94db553ef
MD5 bf5eb0f551f5c5800ed0bdc2031ec9fb
BLAKE2b-256 bdb4a804ffad4d01898d75fa8b3db711c3d295b1f4c87b3da735a64529bc0fb0

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4a052092139421f08e2da54f2652c26c1049d14b1ba64f7c055eed53b5552f57
MD5 72813001d570e43e302dcd7f2c30a462
BLAKE2b-256 676911d8bff1ee0a27d81e90d224dc2497abe4b2593529bc9e0eeccee28c2498

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f038073a7719550b3805bc287c991703e3f92a41e3cec18a128b512d0eac5570
MD5 b86faa0d64d83ee812d59be29e895a9c
BLAKE2b-256 25da60139f2da6f82e4cb814967cff776f2097dfdb6c4209aec489b28c6ca68b

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aa69871814dd2148d3742edc9ede433760bd82796351df2dc8c7d417acf2fb5b
MD5 8565b47bfe6b38d5875da1d09544c82c
BLAKE2b-256 740c0bd09a1d99c93307e97a5725f6d3b03c98244051175cfe21e8a2a4a11c2b

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2c95c9e49206ee841457c55bffb0382a77dcb865ebc4f6337f84784d98ec2e44
MD5 90a0a5917afdd38857f0520e8b9bab04
BLAKE2b-256 e7f3083d02f36ffe88c61237ce37ec7f0fa45f4a3b39404de223c78ba9cfd8bb

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e3c0cd289c0536bda1621c4de858f44d34a5b4cf2a82db61db6c2ae7d24748ce
MD5 83511cc50ce17a886fc666d785099c6b
BLAKE2b-256 5f950857aca3c16c4165baa7f45203f038be7cf44aa3b4688e58bd7dc59f5897

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 df60d8e34538056d440b02a48700b214bd2303733678e3d40bbaf6e135311283
MD5 bcbaecdfe2c32911d87ef9bf13c9d25d
BLAKE2b-256 d6a27c405033f911c56e13757f90e6938bffcdfcf371b149ce627fe581c0c49f

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c017e84eb3c2699081d757c2c395047b2a3005510c00166fc8344312b7cad52d
MD5 15570484c959406246b2f65fb8d816e1
BLAKE2b-256 46cc57f735556fc815ba55e3c3fab544a83179f750054d756d20b8a1b25acc4a

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 918a8d2e70fbef2a098db4a69ab7dd45dc51a9395fa537db02603819652cbbcd
MD5 4e0c7bd5c17ca4806fe1e0db146964f1
BLAKE2b-256 8bca57a243a0eda6265b940d2d0d6ebdfbedfdfbed6e372c51593b44ad90a448

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 03efdd9f4d6f2fb64872cb20d0b03647bd898c559bf3eab9d47855a6fc0a65ad
MD5 97fb6a2f46adffd6858c7b0c0bdab569
BLAKE2b-256 3ed9c3549b20bee73d7efee2b4f766d77d2645827919055b38bf02b32480854d

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 941be777bd4a79fa7f596b919cd05e43a5c931f39d2b2b17fa86191a78ccf50c
MD5 21a56ca6b108560ab6224cfeeb2c6968
BLAKE2b-256 4397dc0ca7b9471a6b945fb4a5e0e2480ef5405c94e75ca71aad4c0e641b0953

See more details on using hashes here.

File details

Details for the file pyenvector-1.2.0a5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0a5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 43bd6415190d7bd4e5c4eafb64c45cf314f0b458b8f2a1e4b41b17a5f8eed08c
MD5 ff185cacefc0be26b35672f93376ed18
BLAKE2b-256 ae69cf902653689c07a98a24827f21cace2b0366ad82be182f41e798c02d22cd

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