pgvector-crystal

pgvector examples for Crystal

pgvector-crystal

pgvector examples for Crystal

Supports crystal-pg

Build Status

Getting Started

Follow the instructions for your database library:

Or check out some examples:

crystal-pg

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

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help:

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

To run an example:

cd examples/openai
createdb pgvector_example
crystal examples/openai/example.cr
Repository

pgvector-crystal

Owner
Statistic
  • 5
  • 0
  • 0
  • 0
  • 1
  • about 4 hours ago
  • April 14, 2023
License

MIT License

Links
Synced at

Tue, 21 Apr 2026 12:06:12 GMT

Languages