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.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

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

es2-1.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

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

es2-1.1.2-cp313-cp313-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

es2-1.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

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

es2-1.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

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

es2-1.1.2-cp312-cp312-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

es2-1.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

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

es2-1.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

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

es2-1.1.2-cp311-cp311-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

es2-1.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

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

es2-1.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

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

es2-1.1.2-cp310-cp310-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

es2-1.1.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

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

es2-1.1.2-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (5.9 MB view details)

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

es2-1.1.2-cp39-cp39-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file es2-1.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c42f2285ed52f598e83f3eb0c55be1cc2f2e92c98ab29f8c46c80adbfc5d37d2
MD5 57f6c07eaac1f7609af66c56a553d7e8
BLAKE2b-256 53201ee703ddadcd6b6b71c837b4d1b71366d1b430cfbd6492bb0dc19099509e

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 de5969b33be91dc097daa8cd53414a99f7fe827c950d8c3da0ed630c8b649249
MD5 0dbfdb914396fdeee7b0713d9f44d79b
BLAKE2b-256 6068936b09f3b582df7dc0e785dd251a3513543ed84c84ffe0d0f219f06018ce

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: es2-1.1.2-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.13, 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.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 533b5a367a1168839349739c3fffd44f435e94ace569414c187ecf39951f35b2
MD5 d8a98676de0c89f657b5c6982cf589a2
BLAKE2b-256 97584cfbf42015e62fdec24006bf0aefd4eda872fa162cd37156f238113baa31

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5f235e2a1e70ee5d223b8126eac964f1b6d4e2714e86a6d1d26071917fdb4ba0
MD5 ab83e765c941e3c25d6c46089225675d
BLAKE2b-256 5641c795940173a590dd9c124ef0854cf306d9f9530fc306017d927e98fc404c

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 627f82f8c92fbbc3ac65e7da11d55b633269dc396bfcd206d741f5b22116a1ac
MD5 56eb4cd7feaa324feb4614e4d6de69fe
BLAKE2b-256 5a5eed7d1d2b198971a97b567cc893f865a43c4991adc511d15799bf70e89c61

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: es2-1.1.2-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.12, 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.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 500503a60d2751b0185c3b961f71d5d971eaffab1f9efb69d3d6f06466707259
MD5 22aaa5f9d6fe42b498d9df9dd614737a
BLAKE2b-256 ffb4a41611b255edfa871a2c8d4ceb7e3e70311ff265b996296bbc1b23db7d5b

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5cc1558a07114327c608606f300a8d417b592bc12b39c020a5d585ee4ec9b408
MD5 8d061821cc245a0d6e1b807bd9d044be
BLAKE2b-256 6dac07bdb04054f05b78a01d5a9acc1b85a5b827bd4f725d756a460edf2deb90

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7754f202817f1b32cd7acd6ca21be643ebfd6bdca316d3e5e098f6635a635ce4
MD5 cf492c2a64bb8e90865b4d5bb4512806
BLAKE2b-256 3e616c21b73e89eb38a3864e54c56ffd9af5acb1edd126b5206916f4b143d9a5

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: es2-1.1.2-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.11, 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.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11394766af80abc758ea71e7461b013eafd30fcd9b9e7fc67be45c9ca6ff556b
MD5 df4be7e04dd9dab3d49622eef5f740a4
BLAKE2b-256 a74531ac1e826f07b775dc1cd9d7c3e247986554ae49ba6171aaa0a5b5222ad6

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dba4ba259b66f0bfb050bb08a263e1cbbe1f012460df63666d83c503872680ae
MD5 2c8a0620af33773ba33d6761b2dbb4ce
BLAKE2b-256 b2d3e9f8cf7b4b547a60726288f8146af461ff24bead495ea6eb1e3b07b4eb7e

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d28f23a9e10911f53fdb90ca2fb289d1e95d28f39aaeb4b90dc43f7833150d29
MD5 8a5b06e65e87b4a6c40eeba090e81996
BLAKE2b-256 1645a45a8dd883241bbf58efc24617bb1759492c7a40bfcbdb75ef3a8379edd5

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: es2-1.1.2-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.10, 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.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84c374fa3d73e00c5076cd7ea1faf2b8a36f5496da284006fdce7d4da2e1e496
MD5 06923b6412e2134a8010d5f6cf91680d
BLAKE2b-256 257352770acd48bdbfde11f5661f2fff256fda5a0e3d9b6460e51df4c8cbbb6e

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e05ff9cedcbf7fe26b3bddcdf8372e1f1a053580020562ad5d65ff79769817ba
MD5 3223b1ab2eda71aca0abf8f0bfc3fe22
BLAKE2b-256 cb144f9d5c8bd041f87da5eb1ed993e1ff501bd50ccd9372c00422d582b8fdf3

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for es2-1.1.2-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 af91443cc36e5a02a4de21ffb73e56b4b1ad673dbc6a983315c3121b53748aba
MD5 e6fd1824eee5db0507a649fca1b623a2
BLAKE2b-256 eda89a89f4e644f46f9ad859382d7a13feba1e0788c48de962b4e55d911202e8

See more details on using hashes here.

File details

Details for the file es2-1.1.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: es2-1.1.2-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.6 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.1.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98c4c338d0cb9fa9db24b3e0e9324e9c0ad96783a91d39e985b1dbfa9f41a6f1
MD5 3a8a57aa05f951b3b9c0ab3037a35ce0
BLAKE2b-256 c1ba1a525a069688c027536ccc7b4737f2490c0be89145c643081cf4e0162338

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