[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/pgvector/pgvector-cpp/master/examples/citus/example.cpp [Back]  [Original]

#include 
#include 
#include 
#include 

#include 
#include 

std::vector random_embeddings(int rows, int dimensions) {
    std::random_device rd;
    std::mt19937_64 prng{rd()};
    std::uniform_real_distribution dist{0, 1};

    std::vector embeddings;
    embeddings.reserve(rows);
    for (int i = 0; i < rows; i++) {
        std::vector embedding;
        embedding.reserve(dimensions);
        for (int j = 0; j < dimensions; j++) {
            embedding.push_back(dist(prng));
        }
        embeddings.push_back(embedding);
    }
    return embeddings;
}

std::vector random_categories(int rows) {
    std::random_device rd;
    std::mt19937_64 prng{rd()};
    std::uniform_int_distribution dist{1, 100};

    std::vector categories;
    categories.reserve(rows);
    for (int i = 0; i < rows; i++) {
        categories.push_back(dist(prng));
    }
    return categories;
}

int main() {
    // generate random data
    int rows = 100000;
    int dimensions = 128;
    std::vector embeddings = random_embeddings(rows, dimensions);
    std::vector categories = random_categories(rows);
    std::vector queries = random_embeddings(10, dimensions);

    // enable extensions
    pqxx::connection conn{"dbname=pgvector_citus"};
    pqxx::nontransaction tx{conn};
    tx.exec("CREATE EXTENSION IF NOT EXISTS citus");
    tx.exec("CREATE EXTENSION IF NOT EXISTS vector");

    // GUC variables set on the session do not propagate to Citus workers
    // https://github.com/citusdata/citus/issues/462
    // you can either:
    // 1. set them on the system, user, or database and reconnect
    // 2. set them for a transaction with SET LOCAL
    tx.exec("ALTER DATABASE pgvector_citus SET maintenance_work_mem = '512MB'");
    tx.exec("ALTER DATABASE pgvector_citus SET hnsw.ef_search = 20");
    conn.close();

    // reconnect for updated GUC variables to take effect
    pqxx::connection conn2{"dbname=pgvector_citus"};
    pqxx::nontransaction tx2{conn2};

    std::cout 

Web Proxy Viewer  |  New URL  |  Original Page