@@ -133,6 +133,8 @@ float vectorDistanceL2(const Vector *pVector1, const Vector *pVector2){
133133 return vectorF32DistanceL2 (pVector1 , pVector2 );
134134 case VECTOR_TYPE_FLOAT64 :
135135 return vectorF64DistanceL2 (pVector1 , pVector2 );
136+ case VECTOR_TYPE_FLOAT8 :
137+ return vectorF8DistanceL2 (pVector1 , pVector2 );
136138 default :
137139 assert (0 );
138140 }
@@ -928,13 +930,11 @@ static void vectorExtractFunc(
928930 }
929931}
930932
931- /*
932- ** Implementation of vector_distance_cos(X, Y) function.
933- */
934- static void vectorDistanceCosFunc (
933+ static void vectorDistanceFunc (
935934 sqlite3_context * context ,
936935 int argc ,
937- sqlite3_value * * argv
936+ sqlite3_value * * argv ,
937+ float (* vectorDistance )(const Vector * pVector1 , const Vector * pVector2 )
938938){
939939 char * pzErrMsg = NULL ;
940940 Vector * pVector1 = NULL , * pVector2 = NULL ;
@@ -983,7 +983,7 @@ static void vectorDistanceCosFunc(
983983 sqlite3_free (pzErrMsg );
984984 goto out_free ;
985985 }
986- sqlite3_result_double (context , vectorDistanceCos (pVector1 , pVector2 ));
986+ sqlite3_result_double (context , vectorDistance (pVector1 , pVector2 ));
987987out_free :
988988 if ( pVector2 ){
989989 vectorFree (pVector2 );
@@ -993,6 +993,20 @@ static void vectorDistanceCosFunc(
993993 }
994994}
995995
996+ /*
997+ ** Implementation of vector_distance_cos(X, Y) function.
998+ */
999+ static void vectorDistanceCosFunc (sqlite3_context * context , int argc , sqlite3_value * * argv ){
1000+ vectorDistanceFunc (context , argc , argv , vectorDistanceCos );
1001+ }
1002+
1003+ /*
1004+ ** Implementation of vector_distance_l2(X, Y) function.
1005+ */
1006+ static void vectorDistanceL2Func (sqlite3_context * context , int argc , sqlite3_value * * argv ){
1007+ vectorDistanceFunc (context , argc , argv , vectorDistanceL2 );
1008+ }
1009+
9961010/*
9971011 * Marker function which is used in index creation syntax: CREATE INDEX idx ON t(libsql_vector_idx(emb));
9981012*/
@@ -1013,6 +1027,7 @@ void sqlite3RegisterVectorFunctions(void){
10131027 FUNCTION (vector8 , 1 , 0 , 0 , vector8Func ),
10141028 FUNCTION (vector_extract , 1 , 0 , 0 , vectorExtractFunc ),
10151029 FUNCTION (vector_distance_cos , 2 , 0 , 0 , vectorDistanceCosFunc ),
1030+ FUNCTION (vector_distance_l2 , 2 , 0 , 0 , vectorDistanceL2Func ),
10161031
10171032 FUNCTION (libsql_vector_idx , -1 , 0 , 0 , libsqlVectorIdx ),
10181033 };
0 commit comments