Documentation Index Fetch the complete documentation index at: https://docs.cyborg.co/llms.txt
Use this file to discover all available pages before exploring further.
Creates and returns a new encrypted index based on the provided configuration.
// Overload 1: With IndexConfig (explicit configuration)
std ::unique_ptr < cyborg ::EncryptedIndex >
CreateIndex ( const std ::string index_name,
const std ::array < uint8_t , 32 >& index_key,
const IndexConfig & index_config,
const std ::optional < size_t >& max_cache_size = 0 ,
const std ::optional < DistanceMetric >& metric = std ::nullopt,
cyborg ::Logger * logger = nullptr );
// Overload 2: Without IndexConfig (uses IndexIVFFlat defaults)
std ::unique_ptr < cyborg ::EncryptedIndex >
CreateIndex ( const std ::string index_name,
const std ::array < uint8_t , 32 >& index_key,
const std ::optional < size_t >& max_cache_size = 0 ,
const std ::optional < DistanceMetric >& metric = std ::nullopt,
cyborg ::Logger * logger = nullptr );
Parameters
Parameter Type Description index_namestd::stringName of the index to create (must be unique). index_keystd::array<uint8_t, 32>32-byte encryption key for the index, used to secure index data. index_configIndexConfig(Optional in overload 2) Configuration for the index type. When not provided, uses IndexIVFFlat defaults.max_cache_sizestd::optional<size_t>(Optional) Maximum size for the local cache in megabytes (default is 0).metricstd::optional<DistanceMetric>(Optional) Distance metric to override the one set in index_config (default is std::nullopt).loggercyborg::Logger*(Optional) Pointer to a logger instance for capturing operation logs (default is nullptr).
Returns
std::unique_ptr<cyborg::EncryptedIndex>: A pointer to the newly created index (EncryptedIndex ).
Exceptions
Throws if the index name is not unique.
Throws if the index configuration is invalid.
Throws if the index could not be created.
Example Usage
Automatic Index Config
#include "cyborgdb_core/client.hpp"
#include "cyborgdb_core/encrypted_index.hpp"
#include "cyborgdb_core/logger.hpp"
#include <array>
// ... Initialize the client ...
// Create a secure 32-byte key (example: all zeros)
std ::array < uint8_t , 32 > index_key = { 0 };
auto index = client . CreateIndex ( "my_index" , index_key);
Explicit Index Config
#include "cyborgdb_core/client.hpp"
#include "cyborgdb_core/encrypted_index.hpp"
#include "cyborgdb_core/logger.hpp"
#include <array>
// ... Initialize the client ...
// Create a secure 32-byte key (example: all zeros)
std ::array < uint8_t , 32 > index_key = { 0 };
// Example vector dimensionality & number of lists
const size_t vector_dim = 1024 ;
const size_t num_lists = 128 ;
// Create an index configuration (e.g., using an IVFFlat configuration)
IndexIVFFlat index_config ( vector_dim );
// Optional: Create and configure a logger
cyborg ::Logger logger;
logger . Configure ( LogLevel ::Info, true , "index_creation.log" );
auto index = client . CreateIndex ( "my_index" , index_key, index_config, 1000 , DistanceMetric ::Euclidean, & logger);