pgvector examples for Crystal
Supports crystal-pg
Follow the instructions for your database library:
Enable the extension
db.exec "CREATE EXTENSION IF NOT EXISTS vector"
Create a table
db.exec "CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3))"
Insert vectors
embedding1 = "[1,1,1]"
embedding2 = "[2,2,2]"
embedding3 = "[1,1,2]"
db.exec "INSERT INTO items (embedding) VALUES ($1), ($2), ($3)", embedding1, embedding2, embedding3
Get the nearest neighbors
embedding = "[1,1,1]"
db.query("SELECT id, embedding::text FROM items ORDER BY embedding <-> $1 LIMIT 5", embedding) do |rs|
rs.each do
id, embedding = rs.read(Int64, String)
puts "#{id}: #{embedding}"
end
end
See a full example
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features
To get started with development:
git clone https://github.com/pgvector/pgvector-crystal.git
cd pgvector-crystal
shards install
createdb pgvector_crystal_test
crystal src/example.cr