From e7453347277326ea12480b26ff7825c0f3f15e59 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 17 Jul 2024 10:13:39 -0700 Subject: [PATCH] Added docs for getting items within a certain distance with Kysely - closes #24 --- README.md | 9 +++++++++ tests/kysely.test.mjs | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/README.md b/README.md index 195fac4..843d0bd 100644 --- a/README.md +++ b/README.md @@ -247,6 +247,15 @@ const items = await db.selectFrom('items') Also supports `maxInnerProduct`, `cosineDistance`, `l1Distance`, `hammingDistance`, and `jaccardDistance` +Get items within a certain distance + +```javascript +const items = await db.selectFrom('items') + .selectAll() + .where(l2Distance('embedding', [1, 2, 3]), '<', 5) + .execute(); +``` + Add an approximate index ```javascript diff --git a/tests/kysely.test.mjs b/tests/kysely.test.mjs index 067e310..bb4b494 100644 --- a/tests/kysely.test.mjs +++ b/tests/kysely.test.mjs @@ -108,6 +108,13 @@ test('kysely example', async () => { .execute(); assert.deepEqual(items.map(v => v.id), [2, 3, 1, 4]); + // within distance + items = await db.selectFrom('kysely_items') + .selectAll() + .where(l2Distance('embedding', [1, 1, 1]), '<', 0.5) + .execute(); + assert.deepEqual(items.map(v => v.id), [1]); + await db.schema.createIndex('kysely_items_embedding_idx') .on('kysely_items') .using('hnsw')