Skip to content

Commit 2bc3fbb

Browse files
committed
Updated style for examples [skip ci]
1 parent 6042e9f commit 2bc3fbb

File tree

8 files changed

+86
-88
lines changed

8 files changed

+86
-88
lines changed

examples/citus/example.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
std::vector<std::vector<float>> random_embeddings(int rows, int dimensions) {
1010
std::random_device rd;
11-
std::mt19937_64 prng(rd());
12-
std::uniform_real_distribution<float> dist(0, 1);
11+
std::mt19937_64 prng{rd()};
12+
std::uniform_real_distribution<float> dist{0, 1};
1313

1414
std::vector<std::vector<float>> embeddings;
1515
embeddings.reserve(rows);
@@ -26,8 +26,8 @@ std::vector<std::vector<float>> random_embeddings(int rows, int dimensions) {
2626

2727
std::vector<int64_t> random_categories(int rows) {
2828
std::random_device rd;
29-
std::mt19937_64 prng(rd());
30-
std::uniform_int_distribution<int64_t> dist(1, 100);
29+
std::mt19937_64 prng{rd()};
30+
std::uniform_int_distribution<int64_t> dist{1, 100};
3131

3232
std::vector<int64_t> categories;
3333
categories.reserve(rows);
@@ -41,13 +41,13 @@ int main() {
4141
// generate random data
4242
int rows = 100000;
4343
int dimensions = 128;
44-
auto embeddings = random_embeddings(rows, dimensions);
45-
auto categories = random_categories(rows);
46-
auto queries = random_embeddings(10, dimensions);
44+
std::vector<std::vector<float>> embeddings = random_embeddings(rows, dimensions);
45+
std::vector<int64_t> categories = random_categories(rows);
46+
std::vector<std::vector<float>> queries = random_embeddings(10, dimensions);
4747

4848
// enable extensions
49-
pqxx::connection conn("dbname=pgvector_citus");
50-
pqxx::nontransaction tx(conn);
49+
pqxx::connection conn{"dbname=pgvector_citus"};
50+
pqxx::nontransaction tx{conn};
5151
tx.exec("CREATE EXTENSION IF NOT EXISTS citus");
5252
tx.exec("CREATE EXTENSION IF NOT EXISTS vector");
5353

@@ -61,8 +61,8 @@ int main() {
6161
conn.close();
6262

6363
// reconnect for updated GUC variables to take effect
64-
pqxx::connection conn2("dbname=pgvector_citus");
65-
pqxx::nontransaction tx2(conn2);
64+
pqxx::connection conn2{"dbname=pgvector_citus"};
65+
pqxx::nontransaction tx2{conn2};
6666

6767
std::cout << "Creating distributed table" << std::endl;
6868
tx2.exec("DROP TABLE IF EXISTS items");
@@ -72,20 +72,20 @@ int main() {
7272

7373
// libpqxx does not support binary COPY
7474
std::cout << "Loading data in parallel" << std::endl;
75-
auto stream = pqxx::stream_to::table(tx2, {"items"}, {"embedding", "category_id"});
75+
pqxx::stream_to stream = pqxx::stream_to::table(tx2, {"items"}, {"embedding", "category_id"});
7676
for (size_t i = 0; i < embeddings.size(); i++) {
77-
stream.write_values(pgvector::Vector(embeddings[i]), categories[i]);
77+
stream.write_values(pgvector::Vector{embeddings[i]}, categories[i]);
7878
}
7979
stream.complete();
8080

8181
std::cout << "Creating index in parallel" << std::endl;
8282
tx2.exec("CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)");
8383

8484
std::cout << "Running distributed queries" << std::endl;
85-
for (auto& query : queries) {
85+
for (const auto& query : queries) {
8686
pqxx::result result = tx2.exec(
8787
"SELECT id FROM items ORDER BY embedding <-> $1 LIMIT 10",
88-
pqxx::params{pgvector::Vector(query)}
88+
pqxx::params{pgvector::Vector{query}}
8989
);
9090
for (const auto& row : result) {
9191
std::cout << row[0].as<int64_t>() << " ";

examples/cohere/example.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ using json = nlohmann::json;
1313

1414
// https://docs.cohere.com/reference/embed
1515
std::vector<std::string> embed(const std::vector<std::string>& texts, const std::string& input_type, char *api_key) {
16-
std::string url = "https://api.cohere.com/v2/embed";
17-
json data = {
16+
std::string url{"https://api.cohere.com/v2/embed"};
17+
json data{
1818
{"texts", texts},
1919
{"model", "embed-v4.0"},
2020
{"input_type", input_type},
@@ -33,7 +33,7 @@ std::vector<std::string> embed(const std::vector<std::string>& texts, const std:
3333
json response = json::parse(r.text);
3434

3535
std::vector<std::string> embeddings;
36-
for (auto& v : response["embeddings"]["ubinary"]) {
36+
for (const auto& v : response["embeddings"]["ubinary"]) {
3737
std::stringstream buf;
3838
for (uint8_t c : v) {
3939
std::bitset<8> b{c};
@@ -51,25 +51,25 @@ int main() {
5151
return 1;
5252
}
5353

54-
pqxx::connection conn("dbname=pgvector_example");
54+
pqxx::connection conn{"dbname=pgvector_example"};
5555

56-
pqxx::nontransaction tx(conn);
56+
pqxx::nontransaction tx{conn};
5757
tx.exec("CREATE EXTENSION IF NOT EXISTS vector");
5858
tx.exec("DROP TABLE IF EXISTS documents");
5959
tx.exec("CREATE TABLE documents (id bigserial PRIMARY KEY, content text, embedding bit(1536))");
6060

61-
std::vector<std::string> input = {
61+
std::vector<std::string> input{
6262
"The dog is barking",
6363
"The cat is purring",
6464
"The bear is growling"
6565
};
66-
auto embeddings = embed(input, "search_document", api_key);
66+
std::vector<std::string> embeddings = embed(input, "search_document", api_key);
6767
for (size_t i = 0; i < input.size(); i++) {
6868
tx.exec("INSERT INTO documents (content, embedding) VALUES ($1, $2)", pqxx::params{input[i], embeddings[i]});
6969
}
7070

71-
std::string query = "forest";
72-
auto query_embedding = embed({query}, "search_query", api_key)[0];
71+
std::string query{"forest"};
72+
std::string query_embedding = embed({query}, "search_query", api_key)[0];
7373
pqxx::result result = tx.exec("SELECT content FROM documents ORDER BY embedding <~> $1 LIMIT 5", pqxx::params{query_embedding});
7474
for (const auto& row : result) {
7575
std::cout << row[0].as<std::string>() << std::endl;

examples/disco/example.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ using disco::Recommender;
1616

1717
std::string convert_to_utf8(const std::string& str) {
1818
std::stringstream buf;
19-
for (auto &v : str) {
19+
for (const auto& v : str) {
2020
if (v >= 0) {
2121
buf << v;
2222
} else {
@@ -40,7 +40,7 @@ Dataset<int, std::string> load_movielens(const std::string& path) {
4040
}
4141

4242
// read ratings and create dataset
43-
auto data = Dataset<int, std::string>();
43+
Dataset<int, std::string> data;
4444
std::ifstream ratings_file(path + "/u.data");
4545
assert(ratings_file.is_open());
4646
while (std::getline(ratings_file, line)) {
@@ -65,29 +65,29 @@ int main() {
6565
return 1;
6666
}
6767

68-
pqxx::connection conn("dbname=pgvector_example");
68+
pqxx::connection conn{"dbname=pgvector_example"};
6969

70-
pqxx::nontransaction tx(conn);
70+
pqxx::nontransaction tx{conn};
7171
tx.exec("CREATE EXTENSION IF NOT EXISTS vector");
7272
tx.exec("DROP TABLE IF EXISTS users");
7373
tx.exec("DROP TABLE IF EXISTS movies");
7474
tx.exec("CREATE TABLE users (id integer PRIMARY KEY, factors vector(20))");
7575
tx.exec("CREATE TABLE movies (name text PRIMARY KEY, factors vector(20))");
7676

77-
auto data = load_movielens(movielens_path);
77+
Dataset<int, std::string> data = load_movielens(movielens_path);
7878
auto recommender = Recommender<int, std::string>::fit_explicit(data, { .factors = 20 });
7979

80-
for (auto& user_id : recommender.user_ids()) {
81-
auto factors = pgvector::Vector(*recommender.user_factors(user_id));
80+
for (const auto& user_id : recommender.user_ids()) {
81+
pgvector::Vector factors{*recommender.user_factors(user_id)};
8282
tx.exec("INSERT INTO users (id, factors) VALUES ($1, $2)", pqxx::params{user_id, factors});
8383
}
8484

85-
for (auto& item_id : recommender.item_ids()) {
86-
auto factors = pgvector::Vector(*recommender.item_factors(item_id));
85+
for (const auto& item_id : recommender.item_ids()) {
86+
pgvector::Vector factors{*recommender.item_factors(item_id)};
8787
tx.exec("INSERT INTO movies (name, factors) VALUES ($1, $2)", pqxx::params{item_id, factors});
8888
}
8989

90-
std::string movie = "Star Wars (1977)";
90+
std::string movie{"Star Wars (1977)"};
9191
std::cout << "Item-based recommendations for " << movie << std::endl;
9292
pqxx::result result = tx.exec("SELECT name FROM movies WHERE name != $1 ORDER BY factors <=> (SELECT factors FROM movies WHERE name = $1) LIMIT 5", pqxx::params{movie});
9393
for (const auto& row : result) {

examples/hybrid/example.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ std::vector<std::vector<float>> embed(const std::vector<std::string>& texts, con
1818
// https://huggingface.co/nomic-ai/nomic-embed-text-v1.5
1919
std::vector<std::string> input;
2020
input.reserve(texts.size());
21-
for (auto& v : texts) {
21+
for (const auto& v : texts) {
2222
input.push_back(taskType + ": " + v);
2323
}
2424

25-
std::string url = "http://localhost:8080/v1/embeddings";
26-
json data = {
25+
std::string url{"http://localhost:8080/v1/embeddings"};
26+
json data{
2727
{"input", input}
2828
};
2929

@@ -38,33 +38,33 @@ std::vector<std::vector<float>> embed(const std::vector<std::string>& texts, con
3838
json response = json::parse(r.text);
3939

4040
std::vector<std::vector<float>> embeddings;
41-
for (auto& v : response["data"]) {
41+
for (const auto& v : response["data"]) {
4242
embeddings.emplace_back(v["embedding"]);
4343
}
4444
return embeddings;
4545
}
4646

4747
int main() {
48-
pqxx::connection conn("dbname=pgvector_example");
48+
pqxx::connection conn{"dbname=pgvector_example"};
4949

50-
pqxx::nontransaction tx(conn);
50+
pqxx::nontransaction tx{conn};
5151
tx.exec("CREATE EXTENSION IF NOT EXISTS vector");
5252
tx.exec("DROP TABLE IF EXISTS documents");
5353
tx.exec("CREATE TABLE documents (id bigserial PRIMARY KEY, content text, embedding vector(768))");
5454
tx.exec("CREATE INDEX ON documents USING GIN (to_tsvector('english', content))");
5555

56-
std::vector<std::string> input = {
56+
std::vector<std::string> input{
5757
"The dog is barking",
5858
"The cat is purring",
5959
"The bear is growling"
6060
};
61-
auto embeddings = embed(input, "search_document");
61+
std::vector<std::vector<float>> embeddings = embed(input, "search_document");
6262

6363
for (size_t i = 0; i < input.size(); i++) {
64-
tx.exec("INSERT INTO documents (content, embedding) VALUES ($1, $2)", pqxx::params{input[i], pgvector::Vector(embeddings[i])});
64+
tx.exec("INSERT INTO documents (content, embedding) VALUES ($1, $2)", pqxx::params{input[i], pgvector::Vector{embeddings[i]}});
6565
}
6666

67-
std::string sql = R"(
67+
std::string sql{R"(
6868
WITH semantic_search AS (
6969
SELECT id, RANK () OVER (ORDER BY embedding <=> $2) AS rank
7070
FROM documents
@@ -86,11 +86,11 @@ int main() {
8686
FULL OUTER JOIN keyword_search ON semantic_search.id = keyword_search.id
8787
ORDER BY score DESC
8888
LIMIT 5
89-
)";
90-
std::string query = "growling bear";
91-
auto query_embedding = embed({query}, "search_query")[0];
89+
)"};
90+
std::string query{"growling bear"};
91+
std::vector<float> query_embedding = embed({query}, "search_query")[0];
9292
double k = 60;
93-
pqxx::result result = tx.exec(sql, pqxx::params{query, pgvector::Vector(query_embedding), k});
93+
pqxx::result result = tx.exec(sql, pqxx::params{query, pgvector::Vector{query_embedding}, k});
9494
for (const auto& row : result) {
9595
std::cout << "document: " << row[0].as<std::string>() << ", RRF score: " << row[1].as<double>() << std::endl;
9696
}

examples/loading/example.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ int main() {
1212
std::vector<std::vector<float>> embeddings;
1313
embeddings.reserve(rows);
1414
std::mt19937_64 prng;
15-
std::uniform_real_distribution<float> dist(0, 1);
15+
std::uniform_real_distribution<float> dist{0, 1};
1616
for (int i = 0; i < rows; i++) {
1717
std::vector<float> embedding;
1818
embedding.reserve(dimensions);
@@ -23,8 +23,8 @@ int main() {
2323
}
2424

2525
// enable extension
26-
pqxx::connection conn("dbname=pgvector_example");
27-
pqxx::nontransaction tx(conn);
26+
pqxx::connection conn{"dbname=pgvector_example"};
27+
pqxx::nontransaction tx{conn};
2828
tx.exec("CREATE EXTENSION IF NOT EXISTS vector");
2929

3030
// create table
@@ -34,14 +34,14 @@ int main() {
3434
// load data
3535
// libpqxx does not support binary COPY
3636
std::cout << "Loading " << rows << " rows" << std::endl;
37-
auto stream = pqxx::stream_to::table(tx, {"items"}, {"embedding"});
37+
pqxx::stream_to stream = pqxx::stream_to::table(tx, {"items"}, {"embedding"});
3838
for (size_t i = 0; i < embeddings.size(); i++) {
3939
// show progress
4040
if (i % 10000 == 0) {
4141
std::cout << '.' << std::flush;
4242
}
4343

44-
stream.write_values(pgvector::Vector(embeddings[i]));
44+
stream.write_values(pgvector::Vector{embeddings[i]});
4545
}
4646
stream.complete();
4747
std::cout << std::endl << "Success!" << std::endl;

examples/openai/example.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ using json = nlohmann::json;
1212
// https://platform.openai.com/docs/guides/embeddings/how-to-get-embeddings
1313
// input can be an array with 2048 elements
1414
std::vector<std::vector<float>> embed(const std::vector<std::string>& input, char *api_key) {
15-
std::string url = "https://api.openai.com/v1/embeddings";
16-
json data = {
15+
std::string url{"https://api.openai.com/v1/embeddings"};
16+
json data{
1717
{"input", input},
1818
{"model", "text-embedding-3-small"}
1919
};
@@ -30,7 +30,7 @@ std::vector<std::vector<float>> embed(const std::vector<std::string>& input, cha
3030
json response = json::parse(r.text);
3131

3232
std::vector<std::vector<float>> embeddings;
33-
for (auto& v : response["data"]) {
33+
for (const auto& v : response["data"]) {
3434
embeddings.emplace_back(v["embedding"]);
3535
}
3636
return embeddings;
@@ -43,26 +43,26 @@ int main() {
4343
return 1;
4444
}
4545

46-
pqxx::connection conn("dbname=pgvector_example");
46+
pqxx::connection conn{"dbname=pgvector_example"};
4747

48-
pqxx::nontransaction tx(conn);
48+
pqxx::nontransaction tx{conn};
4949
tx.exec("CREATE EXTENSION IF NOT EXISTS vector");
5050
tx.exec("DROP TABLE IF EXISTS documents");
5151
tx.exec("CREATE TABLE documents (id bigserial PRIMARY KEY, content text, embedding vector(1536))");
5252

53-
std::vector<std::string> input = {
53+
std::vector<std::string> input{
5454
"The dog is barking",
5555
"The cat is purring",
5656
"The bear is growling"
5757
};
58-
auto embeddings = embed(input, api_key);
58+
std::vector<std::vector<float>> embeddings = embed(input, api_key);
5959
for (size_t i = 0; i < input.size(); i++) {
60-
tx.exec("INSERT INTO documents (content, embedding) VALUES ($1, $2)", pqxx::params{input[i], pgvector::Vector(embeddings[i])});
60+
tx.exec("INSERT INTO documents (content, embedding) VALUES ($1, $2)", pqxx::params{input[i], pgvector::Vector{embeddings[i]}});
6161
}
6262

63-
std::string query = "forest";
64-
auto query_embedding = embed({query}, api_key)[0];
65-
pqxx::result result = tx.exec("SELECT content FROM documents ORDER BY embedding <=> $1 LIMIT 5", pqxx::params{pgvector::Vector(query_embedding)});
63+
std::string query{"forest"};
64+
std::vector<float> query_embedding = embed({query}, api_key)[0];
65+
pqxx::result result = tx.exec("SELECT content FROM documents ORDER BY embedding <=> $1 LIMIT 5", pqxx::params{pgvector::Vector{query_embedding}});
6666
for (const auto& row : result) {
6767
std::cout << row[0].as<std::string>() << std::endl;
6868
}

examples/rdkit/example.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
#include <pqxx/pqxx>
1111

1212
std::string generate_fingerprint(const std::string& molecule) {
13-
std::unique_ptr<RDKit::ROMol> mol(RDKit::SmilesToMol(molecule));
14-
std::unique_ptr<ExplicitBitVect> fp(RDKit::MorganFingerprints::getFingerprintAsBitVect(*mol, 3, 2048));
13+
std::unique_ptr<RDKit::ROMol> mol{RDKit::SmilesToMol(molecule)};
14+
std::unique_ptr<ExplicitBitVect> fp{RDKit::MorganFingerprints::getFingerprintAsBitVect(*mol, 3, 2048)};
1515
std::stringstream buf;
1616
for (size_t i = 0; i < fp->getNumBits(); i++) {
1717
buf << (fp->getBit(i) ? '1' : '0');
@@ -20,21 +20,21 @@ std::string generate_fingerprint(const std::string& molecule) {
2020
}
2121

2222
int main() {
23-
pqxx::connection conn("dbname=pgvector_example");
23+
pqxx::connection conn{"dbname=pgvector_example"};
2424

25-
pqxx::nontransaction tx(conn);
25+
pqxx::nontransaction tx{conn};
2626
tx.exec("CREATE EXTENSION IF NOT EXISTS vector");
2727
tx.exec("DROP TABLE IF EXISTS molecules");
2828
tx.exec("CREATE TABLE molecules (id text PRIMARY KEY, fingerprint bit(2048))");
2929

30-
std::vector<std::string> molecules = {"Cc1ccccc1", "Cc1ncccc1", "c1ccccn1"};
31-
for (auto& molecule : molecules) {
32-
auto fingerprint = generate_fingerprint(molecule);
30+
std::vector<std::string> molecules{"Cc1ccccc1", "Cc1ncccc1", "c1ccccn1"};
31+
for (const auto& molecule : molecules) {
32+
std::string fingerprint = generate_fingerprint(molecule);
3333
tx.exec("INSERT INTO molecules (id, fingerprint) VALUES ($1, $2)", pqxx::params{molecule, fingerprint});
3434
}
3535

36-
std::string query_molecule = "c1ccco1";
37-
auto query_fingerprint = generate_fingerprint(query_molecule);
36+
std::string query_molecule{"c1ccco1"};
37+
std::string query_fingerprint = generate_fingerprint(query_molecule);
3838
pqxx::result result = tx.exec("SELECT id, fingerprint <%> $1 AS distance FROM molecules ORDER BY distance LIMIT 5", pqxx::params{query_fingerprint});
3939
for (const auto& row : result) {
4040
std::cout << row[0].as<std::string>() << ": " << row[1].as<double>() << std::endl;

0 commit comments

Comments
 (0)