Skip to content

Commit 45e241d

Browse files
committed
Add Bit Vector
Queries for bit vector operator
1 parent 5043d50 commit 45e241d

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

src/main/kotlin/griffio/Main.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package griffio
22

33
import app.cash.sqldelight.ColumnAdapter
44
import app.cash.sqldelight.driver.jdbc.asJdbcDriver
5+
import com.pgvector.PGbit
56
import com.pgvector.PGvector
67
import griffio.migrations.Items
78
import griffio.queries.Sample
@@ -14,12 +15,16 @@ private fun getSqlDriver() = PGSimpleDataSource().apply {
1415
password = ""
1516
}.asJdbcDriver()
1617

18+
val bitVectorAdapter = object: ColumnAdapter<PGbit, String> {
19+
override fun decode(databaseValue: String): PGbit = PGbit(databaseValue)
20+
override fun encode(value: PGbit): String = value.toString()
21+
}
1722
val vectorAdapter = object: ColumnAdapter<PGvector, String> {
1823
override fun decode(databaseValue: String): PGvector = PGvector(databaseValue)
1924
override fun encode(value: PGvector): String = value.toString()
2025
}
2126

22-
val adapters = Items.Adapter(vectorAdapter)
27+
val adapters = Items.Adapter(vectorAdapter, bitVectorAdapter)
2328

2429
fun main() {
2530
val driver = getSqlDriver()
@@ -52,4 +57,8 @@ fun main() {
5257
sample.vectorQueries.selectMultiply().executeAsList().forEach(::println)
5358
println("selectNegativeDistanceOperator")
5459
sample.vectorQueries.selectNegativeDistanceOperator().executeAsList().forEach(::println)
60+
println("selectHammingDistanceOperator")
61+
sample.vectorQueries.selectHammingDistanceOperator().executeAsList().forEach(::println)
62+
println("selectJaccardDistanceOperator")
63+
sample.vectorQueries.selectJaccardDistanceOperator().executeAsList().forEach(::println)
5564
}
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1+
import com.pgvector.PGbit;
12
import com.pgvector.PGvector;
23

34
CREATE EXTENSION IF NOT EXISTS vector;
45

56
CREATE TABLE items (
67
id BIGSERIAL PRIMARY KEY,
7-
embedding VECTOR(3) AS PGvector
8+
embedding VECTOR(3) AS PGvector,
9+
bits BIT(3) AS PGbit
810
);
911

12+
1013
CREATE INDEX idx_embedding_hnsw ON items USING hnsw (embedding vector_l2_ops);
1114

1215
CREATE INDEX idx_embedding_ivfflat ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);

src/main/sqldelight/griffio/queries/vector.sq

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
insert:
2-
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');
2+
INSERT INTO items (embedding, bits) VALUES ('[1,2,3]', '000'), ('[4,5,6]', '111');
33

44
select:
55
SELECT *
@@ -52,3 +52,9 @@ SELECT avg(embedding) FROM items;
5252

5353
selectNegativeDistanceOperator:
5454
SELECT embedding <#> embedding FROM items;
55+
56+
selectHammingDistanceOperator :
57+
SELECT bits <~> bits FROM items;
58+
59+
selectJaccardDistanceOperator :
60+
SELECT bits <%> bits FROM items;

0 commit comments

Comments
 (0)