Skip to content

pgvector/pgvector-dart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pgvector-dart

pgvector support for Dart

Supports the postgres package

Build Status

Getting Started

Run:

dart pub add pgvector

And follow the instructions for your database library:

Or check out some examples:

postgres

Import the library

import 'package:pgvector/pgvector.dart';

Enable the extension

await connection.execute('CREATE EXTENSION IF NOT EXISTS vector');

Create a table

await connection.execute('CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3))');

Insert vectors

await connection.execute(
    Sql.named('INSERT INTO items (embedding) VALUES (@a), (@b), (@c)'),
    parameters: {
      'a': pgvector.encode([1, 1, 1]),
      'b': pgvector.encode([2, 2, 2]),
      'c': pgvector.encode([1, 1, 2])
    });

Get the nearest neighbors

List<List<dynamic>> results = await connection.execute(
    Sql.named('SELECT id, embedding FROM items ORDER BY embedding <-> @embedding LIMIT 5'),
    parameters: {
      'embedding': pgvector.encode([1, 1, 1])
    });
for (final row in results) {
  print(row[0]);
  print(pgvector.decode(row[1].bytes));
}

Add an approximate index

await connection.execute('CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)');
// or
await connection.execute('CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100)');

Use vector_ip_ops for inner product and vector_cosine_ops for cosine distance

See a full example

History

View the changelog

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-dart.git
cd pgvector-dart
createdb pgvector_dart_test
dart test

To run an example:

cd examples/openai
createdb pgvector_example
dart run example.dart

About

pgvector support for Dart

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages