Skip to content

Commit abf43af

Browse files
committed
introduce V3 on-disk vector index format with aligned metadata
1 parent 848b08e commit abf43af

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

libsql-sqlite3/src/vectorIndexInt.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,11 @@ typedef u8 MetricType;
104104
/*
105105
* 1 - v1 version; node block format: [node meta] [node vector] [edge vectors] ... [ [u64 unused ] [u64 edge rowid] ] ...
106106
* 2 - v2 version; node block format: [node meta] [node vector] [edge vectors] ... [ [u32 unused] [f32 distance] [u64 edge rowid] ] ...
107+
* 3 - v3 version; node meta aligned to 8-byte boundary (instead of having u64 + u16 size - we round it up to u64 + u64)
107108
*/
108109
#define VECTOR_FORMAT_V1 1
109-
#define VECTOR_FORMAT_DEFAULT 2
110+
#define VECTOR_FORMAT_V2 2
111+
#define VECTOR_FORMAT_DEFAULT 3
110112

111113
/* type of the vector index */
112114
#define VECTOR_INDEX_TYPE_PARAM_ID 2

libsql-sqlite3/src/vectordiskann.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,11 @@ void blobSpotFree(BlobSpot *pBlobSpot) {
299299
**************************************************************************/
300300

301301
int nodeMetadataSize(int nFormatVersion){
302-
return (sizeof(u64) + sizeof(u16));
302+
if( nFormatVersion <= VECTOR_FORMAT_V2 ){
303+
return (sizeof(u64) + sizeof(u16));
304+
}else{
305+
return (sizeof(u64) + sizeof(u64));
306+
}
303307
}
304308

305309
int edgeMetadataSize(int nFormatVersion){

0 commit comments

Comments
 (0)