Insert
Inserting Data into Index
There are multiple ways to insert data into an index:
Plaintext vectors (with automatic index encryption)
Pre-encrypted vectors (CipherBlock)
Vectors with metadata
⚠️ Note: Since the index metric is inner product (IP), vectors must be normalized before insertion. Normalization ensures that similarity scores reflect cosine similarity rather than raw magnitude differences.
1. Inserting Plaintext (with Index Encryption)
You can insert plaintext vectors in bulk using list[list[float]], list[np.ndarray], or a 2D numpy.ndarray.
If index_encryption is enabled in the index configuration, the vectors will be automatically encrypted before insertion.
For detailed configuration, refer to Index Configuration.
Example
import numpy as np
import pyenvector as ev
ev.init(address="localhost:50050", key_path="keys", key_id="example")
index = ev.create_index("example_index", dim=512)
vecs = np.random.rand(100, 512)
# vecs = [[0.001, 0.02, ..., 0.127]] # List[List[float]]
# vecs = [np.random.rand(512)] * 100 # List[np.ndarray]
# Normalize vectors before insertion (required for inner product metric)
vecs = vecs / np.linalg.norm(vecs, axis=1, keepdims=True)
index.insert(vecs)
# Output:
# Index(
# IndexConfig(
# index_name="example_index",
# dim=512,
# key_path='keys',
# key_id='example',
# ),
# num_entities=100,
# cipher=<pyenvector.crypto.cipher.Cipher object at 0x7f1776199d60>
#)
3. Inserting with Metadata
You can insert vectors together with metadata.
Metadata should be provided as a list of strings. If metadata_encryption=True is enabled in the index configuration, the metadata will be encrypted before being stored.
Example
import numpy as np
import pyenvector as ev
ev.init(address="localhost:50050", key_path="keys", key_id="example")
index = ev.create_index("example_index", dim=512)
vecs = np.random.rand(100, 512)
# Normalize vectors for inner product metric
vecs = vecs / np.linalg.norm(vecs, axis=1, keepdims=True)
metadatas = [f"metadata_{i}" for i in range(100)]
index.insert(vecs, metadata=metadatas)
# Output:
# Index(
# IndexConfig(
# index_name="example_index",
# dim=512,
# key_path='keys',
# key_id='example',
# ),
# num_entities=100,
# cipher=<pyenvector.crypto.cipher.Cipher object at 0x7f1776199d60>
#)Last updated

