If you’ve previously created an encrypted index, you can connect to it to add, query or delete data from it. You will need to know the index’s name as well as its key to do so:

import cyborg_vector_search_py as cvs

# Using `memory` storage for this example
index_location = cvs.DBConfig("memory") 
config_location = cvs.DBConfig("memory")

# Create a client
client = cvs.Client(index_location, config_location)

# Provide the index key used when creating the index
# Example key (32 bytes)
index_key = bytes(32)

# Create an encrypted index
index = client.load_index("my_index", index_key)

This creates a new encrypted index with the IVFFlat type. For more details on IVFFlat and other index options, see Configure an Encrypted Index.

You will need to replace index_key with your own index encryption key. For production use, we recommend that you use an HSM or KMS solution.

Encrypted Index Caching

For improved query performance, you can enable encrypted index caching by setting a max_cache_size:

import cyborg_vector_search_py as cvs
import secrets

# Using `memory` storage for this example
index_location = cvs.DBConfig("memory") 
config_location = cvs.DBConfig("memory")

# Create a client
client = cvs.Client(index_location, config_location)

# Generate an encryption key for the index
index_key = secrets.token_bytes(32)

# Set max cache size at 1MB
max_cache_size = 1000000

# Create an encrypted index
index = client.load_index("my_index", index_key, max_cache_size)

API Reference

For more information on loading encrypted indexes, refer to the API reference: