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")

API Notes

  • Indexer.insert_data_row uses a single cluster_id (int). A single-item list is accepted for backward compatibility.

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.0a1-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.0a1-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.0a1-cp313-cp313-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyenvector-1.3.0a1-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.0a1-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.0a1-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyenvector-1.3.0a1-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.0a1-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.0a1-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyenvector-1.3.0a1-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.0a1-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.0a1-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyenvector-1.3.0a1-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.0a1-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.0a1-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.0a1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b2eff8fefefbaeceac194aa07f413cfbdfc7dfccb705d3d5611bdfe0b078f54
MD5 eb2746b8b5772e9db78522354e39d4d0
BLAKE2b-256 8833a01167495fae03ee3c61d9001b9a209266c910cfcc864293c6106a545047

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f7fc5b0d044253c29ef7f6258205dcd2f1e212489a707c367ab9d8e557a2899a
MD5 bf0bc1aa1429ae6d51a2e94a6e5499aa
BLAKE2b-256 ac9d90934e505f6d8350b3230191372dc7f1f28aebc2440bff0093c46cea4362

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 47cc6f02a14d6a587c940c820dd82954b1d642e168b3f582010d9b43b667d251
MD5 44d81b9815d1007948665acef7e6b789
BLAKE2b-256 7a3e2d2d9dee360c6ee506e9382e015d392b61f0eac18a603342376411c5ec79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4f47a95243d8710e15faab23b2cc302c19d407f0d1f8b7b9604e8551669dfca4
MD5 fe5a94433de50b35c0654c0708b082a5
BLAKE2b-256 7b34ec6c73895dd988d6e8d42d8e33466c3f2d3549bb1b2bea2b4acefe901b04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bc5103f0d5f5696509a27aabfd2e4d514356190837afbc12e5cb487896138bdc
MD5 17fa02af699392a087484cb27aa98993
BLAKE2b-256 9f8a3d57d5a67e7610c82c152dcd956ce671810b9f68625858a3f965f167ac3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84d5ac95f7f58d39f36d554378f847fbbe5f21365b384d9cb0cf546db6350693
MD5 7dc55a4a4fd9ffff361c81688339f905
BLAKE2b-256 acadf7c7b990bfd842732e501219be90359fd04258cfcf54b1a8488d221a997c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 07852de4e2327ccc91af7f77cf0f7cad546c28284b54d17b193615bfb0f73968
MD5 5df222cc5811cd07503e3669af899d60
BLAKE2b-256 a57569a6ca7374a0f0ad62c3285fb1c035517d087eabe2b38139e578e0e84e09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c37c68bf355342b69c313b4109cfef1760084698b23165942e7435c001494950
MD5 3bc51abe2abf1cc2d52be3f7b6d2ffc8
BLAKE2b-256 ef5cfa1bc1905bbf2998c59b1fe9d6ec2916e0fa8a407b8f4fe9875759c2f2d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae7348c70968676456913642b81cbe0c84df4349bf2db8d0f403516f23c9fa13
MD5 0aef7cbfcd526b2f124468f29e31aadd
BLAKE2b-256 fc557edae64a2e6faa3feb9ff126d28b18625856379a756cd3362b188c10f29f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1d540e4d92db303768c12a396b210e5f8b33391644d68e9019cbb5a5f82568dc
MD5 69c7d4c7daa5c4679c43b060eaf7b226
BLAKE2b-256 76d778fa40aa2ec900d5987425cb2374f405f5096812a3fdf277125491569c25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a7961caee0db6b1fe4c818794d92ecce08ced6d750bc23ecc74e3c491f57dbe4
MD5 0ef4c7eac1bdebc374aa4deaa7a671bf
BLAKE2b-256 84264b6e93c547cba302cf979a3f3cef4192217826811099eb46bb947502b148

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f4e3b8a8f46d60e4349bf85523c2506be1fdeb77957925d2f69400b6ec924996
MD5 60db2946d14c37fdca67d604014405f8
BLAKE2b-256 80ec2e2f04b79e9ce69bebffaeb6257d741da7701b12626238ed6f3d4a557d8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b123644e2405476db65041fe526c16d4f53491909afaeb9e3e7f3dcba74ffe7b
MD5 7ef88a2b3dbd8e4cccbcd0f5e7d2683b
BLAKE2b-256 1af5c540451c60ae26644d05795fd9ea94012692abbe81cf63324ebd56069d60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 60fb44cc00dc0f65498e97d356281f5b16c1929fad0669e4f45e17590b5d2cfb
MD5 fb61aa472b4f809e8c56900451726a2a
BLAKE2b-256 b5f97c88dff2dcd5408f2bdb5330da7b23f28df34c5178e9372960cda10e0d71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyenvector-1.3.0a1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 084453884c60c73e60049012e779f66f401307fb4517a26c679fd2617303caf9
MD5 f31a855fdde2cbc96be0aecb0649f4d5
BLAKE2b-256 a09142d7fd7f74fee36da849d44eae29b1e68e8fd6f8efd74b5cc72aaacef697

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