Adds or updates vector embeddings in the index. If an item already exists at id
, then it will be overwritten.
void Upsert(Array2D<float>& vectors,
const std::vector<std::string>& ids,
const std::vector<std::vector<uint8_t>>& contents = {},
const std::vector<std::string>& json_metadata_array = {});
Parameters
Parameter | Type | Description |
---|
ids | std::vector<std::string>& | Unique identifiers for each vector. |
vectors | Array2D<float> | 2D container with vector embeddings to index. |
contents | std::vector<std::vector<uint8_t>>& | (Optional) Item contents in bytes. |
json_metadata_array | std::vector<std::string>& | (Optional) Item metadata in serialized JSON strings. |
Exceptions
Example Usage
cyborg::Array2D<float> embeddings{{0.1, 0.2, 0.3}, {0.4, 0.5, 0.6}};
std::vector<std::string> ids = {"item_1", "item_2"};
// Upsert without additional item data
index->Upsert(embeddings, ids);
// Upsert with associated items
std::vector<std::vector<uint8_t>> items = {
{'a', 'b', 'c'}, {'d', 'e', 'f'}, {'g', 'h', 'i'}
};
index->Upsert(embeddings, ids, items);
// Upsert with metadata
std::vector<std::string> metadata = {"\"type\": \"image\"", "\"type\": \"text\""}
index->Upsert(embeddings, ids, items, metadata);