Skip to main content

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

Project description

What is ES2?

ES2 (Encrypted Similarity Search) is a high-performance encrypted vector search engine designed to protect data privacy during similarity search. It enables users to search over encrypted vectors without ever exposing the raw data or query.

By leveraging advanced encryption techniques such as homomorphic encryption and secure computation, ES2 ensures that both the vector data and similarity scores remain confidential — even during computation.

ES2 is provided as a Python client package. For more details, visit https://heaan.com/.

ES2 Example

This example demonstrates the complete workflow of the ES2 Python SDK, showcasing its capabilities for encrypted similarity search and vector database operations.


Import ES2

At the very first time, you should install and import the es2 package to use Python APIs.

pip install es2
import es2

🔍 Vector Search

1. Initialize ES2

To use the ES2 service, initialization is required. This includes establishing a connection to the ES2 server and configuring settings necessary for vector search.

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

2. Create Index

You need to create an index before inserting data. The index is defined by its name and vector dimensionality.

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

3. Insert Data

You can insert random or real vectors into the created index. Below is an example using 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

Use a query vector to find similar vectors. The index object enables encrypted search and decryption of scores 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

To remove test data and release keys, you can call:

es2.drop_index("quickstart_index")
es2.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.

es2-1.2.0a4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

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

es2-1.2.0a4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.3 MB view details)

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

es2-1.2.0a4-cp313-cp313-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

es2-1.2.0a4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

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

es2-1.2.0a4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.3 MB view details)

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

es2-1.2.0a4-cp312-cp312-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

es2-1.2.0a4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

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

es2-1.2.0a4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.3 MB view details)

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

es2-1.2.0a4-cp311-cp311-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

es2-1.2.0a4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

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

es2-1.2.0a4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.3 MB view details)

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

es2-1.2.0a4-cp310-cp310-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

es2-1.2.0a4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.5 MB view details)

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

es2-1.2.0a4-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (3.3 MB view details)

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

es2-1.2.0a4-cp39-cp39-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file es2-1.2.0a4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1f7588caab41b4705e3ac71f48fdc82ea3c4f2f0cca8a788c8362383e9327841
MD5 b31c7457d4848833c357bd97d88a7b2f
BLAKE2b-256 24741dfa533ca53f9ed3a59ceb98e491ff221a2a9c5a921a1886e9ff5ee12ef8

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1b0975aa3f01df44911fca2b6ca6a2e4b73640e1f58f766f2d64df396e51ba75
MD5 512e76b872566f6a3e3ed3f31e333ff4
BLAKE2b-256 10cbb73261603f5fff168ca593cf968ce50a1261efad90278a0bb057414b0bca

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 78a256b5681524f1e8d5f677cf68c7545e0c4e1506d5d70992334ec9f8df8bd7
MD5 29d1cae6894c3dfb658b1eacab3a736b
BLAKE2b-256 9ab3f34b79ed5394c5b719ac9f25179b0fb4dfad0183c09bb6ededfcef590656

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0ffaf4eb49d335e38bdeae0db47c60498d0509952df776b92dea47fad82e8e14
MD5 939bd796bac52bb17c6d2eaca1cfcae4
BLAKE2b-256 092fc81a7c55f7826af6833257c7240e75a2d0fbce7af5b6e45b06abc3688535

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b224d1ceaed17941d90b74660df490a123189fbc00046491f80e159747ed932f
MD5 1706ec51102087d175911d0762f6c889
BLAKE2b-256 accba8a681824aeeb7aaade3a4280d7b129f64060799cb2246099e084f61701d

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 298e723de4e90a0580410c4afd4a296b0c425cde2b6f0e633914c275eac9b782
MD5 d057bb2cf014b5bc525b93c643f495ee
BLAKE2b-256 ca10e173a48c1e99c29ddd862143951c4798d58c15df5554eac9d190a725fed2

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 21fd3ab4adee261813278bcf74f1a15429a593067269bb0fb310b0a4a55c79ff
MD5 397eba34a1e55c6266805c3e9f731f95
BLAKE2b-256 1a0e4fe7827e55427139af581a029f4dec6132e4f54a1631fbb5809475421eab

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 865d58b721f1b2738f2eaef854bb09276b16c658a3483e6df82d99a1f843e153
MD5 fdb3e814d8ed02c5419e41c17a9a9364
BLAKE2b-256 00310b6253d0c9848e216bbee70d63a27e9151c0152a3246fbcfbf7f0eddce72

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 863e3221d25724074f9fc7ed28732c13934b86902fee0b4bec200ba01ddda170
MD5 fff98404b98564b7fb4207e0c4fc6d75
BLAKE2b-256 11b118503b4bcb916fa4f17d3fd8c03fb609420da4716498acbc6d7704f67ed7

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45f0f0381714f1b21f5e98d8b62ad4464bb65cc27b11ae968e10f13757a537b9
MD5 649de955401d3b76756e70a69584d552
BLAKE2b-256 ef202c5b715a2aef01ecb348c6cabbf8aca25163de97249cf69be5bb155d8679

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7eea20154382dc9bf8e6eb4662ff31a396d7e09ae4feb7741d8ade48ae785b37
MD5 7f101539848a1e6d66025858db48b04c
BLAKE2b-256 eb3356a3fe17db9ce7fe55e266d13d7e5d5c422821f36b89d15c39f188b07df3

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1a663a5d37706157982a9239c9fa37a8f7b7b8f6438b5d9ba4fc1f62995a1bf5
MD5 89d456a79162c7cc3f68dfb0e8a76a6d
BLAKE2b-256 1f2e228403526958cafcad0be4dd9022ca5901fba49cb06106239acbf73d8885

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bd50f9a0a5b01955ca96db9757b4c1285f6c28817a4485b7d9ac2661d91842ee
MD5 d547e3bb008ef8cfc6a66a420c4954b1
BLAKE2b-256 2e3e442d6e30ecd0083c174be44cac2921fe998834069a677dbb24647c4161d5

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.2.0a4-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8490258cfbe0dadcf4b89320c655e401ad3184ce12f14a9eb8cd4248bb3588d3
MD5 a71845c459718d47ae542f4be191158c
BLAKE2b-256 3154c44dee4dfe7f0b1da9412ef026476734ffd453b7d22965398436082d8b74

See more details on using hashes here.

File details

Details for the file es2-1.2.0a4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: es2-1.2.0a4-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for es2-1.2.0a4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd351d6ad359304164637505c5f3c64d838f3b0291ca50ea1fe97d0999e71b99
MD5 279675fe5d0888635a03a628d35351c1
BLAKE2b-256 8229d92bb885637e63e1e7e18cc34057dffdcab20f980e88b6483353e13ad6fe

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