Add ANN search support for vec0 virtual table (#273)

Add approximate nearest neighbor infrastructure to vec0: shared distance
dispatch (vec0_distance_full), flat index type with parser, NEON-optimized
cosine/Hamming for float32/int8, amalgamation script, and benchmark suite
(benchmarks-ann/) with ground-truth generation and profiling tools. Remove
unused vec_npy_each/vec_static_blobs code, fix missing stdint.h include.
This commit is contained in:
Alex Garcia 2026-03-31 01:03:32 -07:00 committed by GitHub
parent e9f598abfa
commit 0de765f457
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 2177 additions and 2116 deletions

View file

@ -3,6 +3,7 @@
#include <stdlib.h>
#include <stddef.h>
#include <stdint.h>
int min_idx(
const float *distances,
@ -62,12 +63,17 @@ enum Vec0DistanceMetrics {
VEC0_DISTANCE_METRIC_L1 = 3,
};
enum Vec0IndexType {
VEC0_INDEX_TYPE_FLAT = 1,
};
struct VectorColumnDefinition {
char *name;
int name_length;
size_t dimensions;
enum VectorElementType element_type;
enum Vec0DistanceMetrics distance_metric;
enum Vec0IndexType index_type;
};
int vec0_parse_vector_column(const char *source, int source_length,