Skip to content

Commit 3c3e627

Browse files
committed
Other vector functions
1 parent a5aa679 commit 3c3e627

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

pgvector-module/src/main/kotlin/griffio/PgVectorModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,13 @@ private class PgVectorTypeResolver(private val parentResolver: TypeResolver) : P
6262
when (functionExpr.functionName.text.lowercase()) {
6363
"binary_quantize" -> IntermediateType(PostgreSqlType.BIT)
6464
"cosine_distance" -> IntermediateType(PrimitiveType.REAL)
65+
"inner_product" -> IntermediateType(PrimitiveType.REAL)
66+
"l1_distance" -> IntermediateType(PrimitiveType.REAL)
67+
"l2_distance" -> IntermediateType(PrimitiveType.REAL)
68+
"l2_normalize" -> IntermediateType(PgVectorSqlType.VECTOR)
6569
"subvector" -> IntermediateType(PgVectorSqlType.VECTOR)
70+
"vector_dims" -> IntermediateType(PostgreSqlType.INTEGER)
71+
"vector_norm" -> IntermediateType(PrimitiveType.REAL)
6672
else -> parentResolver.functionType(functionExpr)
6773
}
6874
}

src/main/kotlin/griffio/Main.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,12 @@ fun main() {
2626
sample.vectorQueries.selectCosineDistance().executeAsList().forEach(::println)
2727
println("binaryQuantize")
2828
sample.vectorQueries.selectBinaryQuantize().executeAsList().forEach(::println)
29+
println("l2Distance")
30+
sample.vectorQueries.selectL2Distance().executeAsList().forEach(::println)
31+
println("innerProduct")
32+
sample.vectorQueries.selectInnerProduct().executeAsList().forEach(::println)
33+
println("euclideanDistance")
34+
sample.vectorQueries.selectL1Distance().executeAsList().forEach(::println)
35+
println("selectL2Normalize")
36+
sample.vectorQueries.selectL2Normalize().executeAsList().forEach(::println)
2937
}

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,21 @@ SELECT cosine_distance('[1,1]'::VECTOR, '[-1,-1]');
1919

2020
selectBinaryQuantize:
2121
SELECT binary_quantize('[0,0.1,-0.2,-0.3,0.4,0.5,0.6,-0.7,0.8,-0.9,1]'::VECTOR);
22+
23+
selectVectorNorm:
24+
SELECT round(vector_norm('[1,1]')::NUMERIC, 5);
25+
26+
selectL2Distance:
27+
SELECT l2_distance('[0,0]'::VECTOR, '[3,4]');
28+
29+
selectInnerProduct:
30+
SELECT inner_product('[1,2]'::VECTOR, '[3,4]');
31+
32+
selectL1Distance:
33+
SELECT l1_distance('[1,2,3,4,5,6,7,8,9]'::VECTOR, '[0,3,2,5,4,7,6,9,8]');
34+
35+
selectL2Normalize:
36+
SELECT l2_normalize('[3,4]'::VECTOR);
37+
38+
39+

0 commit comments

Comments
 (0)