elips/docs
C++ API

Config & GraphParams

The elips::Config struct specifies all indexing algorithms, distance metrics, HNSW graph connectivity, durability policies, and segment sizes.

Overview

Configuration objects are passed when opening an ElipsInstance or initializing individual Vault instances.

Config Struct

cpp
struct Config {
    std::uint16_t dimension{128};
    Metric metric{Metric::cosine};
    IndexType index_type{IndexType::hnsw};
    GraphParams graph_params{};
    Durability durability{Durability::sync_on_commit};
    AccessMode access_mode{AccessMode::read_write};
    std::size_t segment_size_bytes{64 * 1024 * 1024}; // 64MB default
};

GraphParams Struct

cpp
struct GraphParams {
    std::size_t m{16};                   // Max bi-directional links per node
    std::size_t ef_construction{200};    // Search queue capacity during construction
    std::size_t ef_search{50};           // Search queue capacity during query time
    float compaction_ratio{0.2f};       // Tombstone threshold to trigger auto-vacuum
};

Metrics & Policies Enums

cpp
enum class Metric {
    cosine,
    euclidean,
    dot_product
};

enum class IndexType {
    hnsw,
    exact,
    ivf_flat,
    ivf_pq
};

enum class Durability {
    sync_on_commit,  // fsync WAL on every commit
    wal_only,        // write WAL without forcing fsync immediately
    in_memory        // skip disk writing completely
};

enum class AccessMode {
    read_write,
    read_only
};

Tuning Recipes

1. High Recall / Accuracy Setup

cpp
elips::Config config;
config.dimension = 1536;
config.metric = elips::Metric::cosine;
config.index_type = elips::IndexType::hnsw;
config.graph_params.m = 32;
config.graph_params.ef_construction = 400;
config.graph_params.ef_search = 128;

2. Ultra Low Latency Setup

cpp
elips::Config config;
config.dimension = 384;
config.metric = elips::Metric::dot_product;
config.index_type = elips::IndexType::hnsw;
config.graph_params.m = 12;
config.graph_params.ef_construction = 100;
config.graph_params.ef_search = 24;