Use Drizzle ORM with pgvector
masterDrizzle ORM 0.31.0+ provides built-in support for vector, halfvec, bit, and sparsevec types. It also includes distance functions like l2Distance and cosineDistance.
import { vector } from 'drizzle-orm/pg-core';
import { l2Distance } from 'drizzle-orm';
const items = pgTable('items', {
id: serial('id').primaryKey(),
embedding: vector('embedding', {dimensions: 3})
});
// Insert
await db.insert(items).values([{embedding: [1, 2, 3]}]);
// Query nearest neighbors
const allItems = await db.select()
.from(items)
.orderBy(l2Distance(items.embedding, [1, 2, 3]))
.limit(5);