@@ -23,22 +23,31 @@ final class PostgresNIOTests {
2323 }
2424
2525 try await client. query ( " CREATE EXTENSION IF NOT EXISTS vector " )
26+ try await PgvectorNIO . registerTypes ( client)
27+
2628 try await client. query ( " DROP TABLE IF EXISTS nio_items " )
2729 try await client. query ( " CREATE TABLE nio_items (id bigserial PRIMARY KEY, embedding vector(3)) " )
2830
29- let embedding1 = Vector ( [ 1 , 1 , 1 ] ) . text ( )
30- let embedding2 = Vector ( [ 2 , 2 , 2 ] ) . text ( )
31- let embedding3 = Vector ( [ 1 , 1 , 2 ] ) . text ( )
32- try await client. query ( " INSERT INTO nio_items (embedding) VALUES ( \( embedding1) ::vector ), (\( embedding2) ::vector ), (\( embedding3) ::vector )" )
31+ let embedding1 = Vector ( [ 1 , 1 , 1 ] )
32+ let embedding2 = Vector ( [ 2 , 2 , 2 ] )
33+ let embedding3 = Vector ( [ 1 , 1 , 2 ] )
34+ try await client. query ( " INSERT INTO nio_items (embedding) VALUES ( \( embedding1) ), ( \( embedding2) ), ( \( embedding3) ) " )
3335
34- let embedding = Vector ( [ 1 , 1 , 1 ] ) . text ( )
35- let rows = try await client. query ( " SELECT id, embedding::text FROM nio_items ORDER BY embedding <-> \( embedding) ::vector LIMIT 5" )
36- for try await (id, embedding) in rows. decode ( ( Int, String ) . self) {
37- print ( id, Vector ( embedding) ! )
36+ let embedding = Vector ( [ 1 , 1 , 1 ] )
37+ let rows = try await client. query ( " SELECT id, embedding FROM nio_items ORDER BY embedding <-> \( embedding) LIMIT 5 " )
38+ for try await (id, embedding) in rows. decode ( ( Int, Vector ) . self) {
39+ print ( id, embedding)
3840 }
3941
4042 try await client. query ( " CREATE INDEX ON nio_items USING hnsw (embedding vector_l2_ops) " )
4143
44+ let halfEmbedding = HalfVector ( [ 1 , 2 , 3 ] )
45+ let sparseEmbedding = SparseVector ( [ 1 , 0 , 2 , 0 , 3 , 0 ] )
46+ let typeRows = try await client. query ( " SELECT \( embedding) , \( halfEmbedding) , \( sparseEmbedding) " )
47+ for try await (v, h, s) in typeRows. decode ( ( Vector, HalfVector, SparseVector) . self) {
48+ print ( v, h, s)
49+ }
50+
4251 taskGroup. cancelAll ( )
4352 }
4453 }
0 commit comments