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.0rc3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

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

pyenvector-1.2.0rc3-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.0rc3-cp313-cp313-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyenvector-1.2.0rc3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

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

pyenvector-1.2.0rc3-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.0rc3-cp312-cp312-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyenvector-1.2.0rc3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.6 MB view details)

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

pyenvector-1.2.0rc3-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.0rc3-cp311-cp311-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyenvector-1.2.0rc3-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.0rc3-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.0rc3-cp310-cp310-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyenvector-1.2.0rc3-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.0rc3-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.0rc3-cp39-cp39-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file pyenvector-1.2.0rc3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2179161776fc7d8a16bd81f7c30d64650965fead9703b87d78f24fd1748fb7b8
MD5 42725901f00755bc4ede3a52341816ed
BLAKE2b-256 30b6ba28e6b38a70a44383f834f72ca1e6478673b715e47ac15ee910994a7d77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 132dc50acb6428f8e79f65ce40242a4699f698b5419d4b51d046e5a93e51bae1
MD5 289ba15bd5adbf2db3d1708404a98120
BLAKE2b-256 89f36a8759b4c4539857ff49a703a05743346b884e57270c8caa465462bf13e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 879d1f7ade36991322ccec7b678f4b407e4266f41c5bae655fe8ddd6a8fb8e17
MD5 447f95d92b25201ed538af9b8839fcfe
BLAKE2b-256 169692d9498c65c9ed63e9cd761ee8a9f0f4c5e7ed4f11c77a43d42e3dffedf1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a59a3154f0eaa08e5c966618a3b03bfeb678337d6354b867f4c7ff7be0522120
MD5 10efa0fb7fec334a0487ee50c81b3fef
BLAKE2b-256 2b362755467f00ef5470de83acb52bd543aea51e8997500221f8e425d8fd8702

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 398bac1de47e5b4e78b902b8ce06c92bbff053318a614cee5163cff132bb40bd
MD5 b32c65ef6e63195289ea9be3938c5d2f
BLAKE2b-256 cc8baf3306b2b69d1d1b1007baa1f6a3c4182a468e02965d219468e26b1069ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0a3d461267a478fb9e7c04355bb1c4ab1d5d6d9fc5d342d597d812f732b455a
MD5 230a0c6be2169c4a2e7d3bfe1bea0c31
BLAKE2b-256 811ded932ce33cc9cc3bebbaba0b7877b32956f54306d11ca88218c440ec62e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 385f2350ae8e25db23bb1c7b421bcf57d8eca64da55e9bcddbc6ee09253f1a7e
MD5 0201ed5383381032e09b3106701bfe89
BLAKE2b-256 066608e129593d7fc9744d3b0a83c0deaedf59ad6d15564a7771fff5e43b4b6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c5c86c6557b4bf9d5e25af420a3277bc162c80d90a4a4be722753eed400d906a
MD5 5908662c8c94da3e3eeed4e322261bb4
BLAKE2b-256 1e79451635922e616ab749416e0cd3f73f15c0a30d3bb834375fcb510413379a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 57b574b3f679b47f7b7f3e8b37143c3210a7a14ef02689801eacc8ebeb4e2c13
MD5 be9a25b1b6a929f7957ccfa3bf9d1345
BLAKE2b-256 6851bee3546ba9320e1ebfd539837c0981af98c8a639774311d69dd2176b0faf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 698d6d8d342bc7b272dd412a9a03a88ce19b667670d4d534cb154c8eb87ee477
MD5 388aeba868c8db1d915d5212ec9bf373
BLAKE2b-256 74066d232be046d025abe513297e5a808f1d7171efe2f08852d0d646bdb1048b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eae4ecbf8f57c8dadfc347367fccc421d5438b0637148ff30327eb326a567a54
MD5 b5c5bf8f18de2c054ad760593004abc2
BLAKE2b-256 7883b1a524baf052e7f98d9df415e963117324538325a7ea052232604937296a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e54d8c94dc1c3198513d8d803b7459a3d6ee91b2b8482e09fc7e65b674603517
MD5 f9f8acd43db92e391949ec8eca22387a
BLAKE2b-256 ec504c306abb7ede51e3d0c7266c6048e3921a69148fe6e02cf51f3511cd5a41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0dda3601162a7597158c6602404b2c4627d758843af5e50d092e7ad2e140c877
MD5 a0bb4130a476b6ce2f07a6831b58d9e3
BLAKE2b-256 7db481e4d5f2206a82e9c9a2fd456409281ba5f902c1c956c9643400fee8c6c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1e9d61a0247d92d14f695d8f1321e7554278b0d145ccf7a8b0effc52b9a2961a
MD5 245d5a51d13ce687900201498ffc04d0
BLAKE2b-256 fcaaaa0c8be02005d7f7ac628e2a310c4fc0b8b83e7999cd24ee845a2d7710c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.2.0rc3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5414694acd57f716dc18da9a55b1232750b46c84f9a8578ef69425416e0f1c7f
MD5 b85b4b28b13d8c62785f0411169795ae
BLAKE2b-256 3ffb610d07568f4bd1cab83be2ee5f1f56760cdd5c4e6bc8808a2e38a10a7397

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