Skip to content

Commit 34c2974

Browse files
committed
support float8 neighbors compression
1 parent 244a34a commit 34c2974

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

libsql-sqlite3/src/vectorIndex.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ static struct VectorParamName VECTOR_PARAM_NAMES[] = {
404404
{ "metric", VECTOR_METRIC_TYPE_PARAM_ID, 0, "cosine", VECTOR_METRIC_TYPE_COS },
405405
{ "metric", VECTOR_METRIC_TYPE_PARAM_ID, 0, "l2", VECTOR_METRIC_TYPE_L2 },
406406
{ "compress_neighbors", VECTOR_COMPRESS_NEIGHBORS_PARAM_ID, 0, "float1bit", VECTOR_TYPE_FLOAT1BIT },
407+
{ "compress_neighbors", VECTOR_COMPRESS_NEIGHBORS_PARAM_ID, 0, "float8", VECTOR_TYPE_FLOAT8 },
407408
{ "compress_neighbors", VECTOR_COMPRESS_NEIGHBORS_PARAM_ID, 0, "float32", VECTOR_TYPE_FLOAT32 },
408409
{ "alpha", VECTOR_PRUNING_ALPHA_PARAM_ID, 2, 0, 0 },
409410
{ "search_l", VECTOR_SEARCH_L_PARAM_ID, 1, 0, 0 },

libsql-sqlite3/test/libsql_vector_index.test

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,33 @@ do_execsql_test vector-f64-compress-f32 {
345345
SELECT * FROM vector_top_k('t_f64_f32_idx', vector64('[10,-10,-20,20]'), 4);
346346
} {3 1 2}
347347

348+
do_execsql_test vector-f32-compress-f8 {
349+
CREATE TABLE t_f32_f8( v FLOAT32(4) );
350+
CREATE INDEX t_f32_f8_idx ON t_f32_f8( libsql_vector_idx(v, 'compress_neighbors=float8') );
351+
INSERT INTO t_f32_f8 VALUES ( vector('[1,-1,1,-1]') );
352+
INSERT INTO t_f32_f8 VALUES ( vector('[-1,1,1,-1]') );
353+
INSERT INTO t_f32_f8 VALUES ( vector('[1,-1,-1,1]') );
354+
SELECT * FROM vector_top_k('t_f32_f8_idx', vector('[10,-10,-20,20]'), 4);
355+
} {3 1 2}
356+
357+
do_execsql_test vector-f8 {
358+
CREATE TABLE t_f8( v FLOAT8(4) );
359+
CREATE INDEX t_f8_idx ON t_f8( libsql_vector_idx(v) );
360+
INSERT INTO t_f8 VALUES ( vector8('[1,-1,1,-1]') );
361+
INSERT INTO t_f8 VALUES ( vector8('[-1,1,1,-1]') );
362+
INSERT INTO t_f8 VALUES ( vector8('[1,-1,-1,1]') );
363+
SELECT * FROM vector_top_k('t_f8_idx', vector8('[10,-10,-20,20]'), 4);
364+
} {3 1 2}
365+
366+
do_execsql_test vector-f8-compress-1bit {
367+
CREATE TABLE t_f8_1bit( v FLOAT8(4) );
368+
CREATE INDEX t_f8_1bit_idx ON t_f8_1bit( libsql_vector_idx(v, 'compress_neighbors=float1bit') );
369+
INSERT INTO t_f8_1bit VALUES ( vector8('[1,-1,1,-1]') );
370+
INSERT INTO t_f8_1bit VALUES ( vector8('[-1,1,1,-1]') );
371+
INSERT INTO t_f8_1bit VALUES ( vector8('[1,-1,-1,1]') );
372+
SELECT * FROM vector_top_k('t_f8_1bit_idx', vector8('[10,-10,-20,20]'), 4);
373+
} {3 1 2}
374+
348375
proc error_messages {sql} {
349376
set ret ""
350377
catch {
@@ -355,6 +382,8 @@ proc error_messages {sql} {
355382
set ret [sqlite3_errmsg db]
356383
}
357384

385+
reset_db
386+
358387
do_test vector-errors {
359388
set ret [list]
360389
lappend ret [error_messages {CREATE INDEX t_no_idx ON t_no( libsql_vector_idx(v) )}]

0 commit comments

Comments
 (0)