Skip to content

Latest commit

 

History

History
69 lines (48 loc) · 1.61 KB

README.md

File metadata and controls

69 lines (48 loc) · 1.61 KB

pgvector-crystal

pgvector examples for Crystal

Supports crystal-pg

Build Status

Getting Started

Follow the instructions for your database library:

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