Add ANN search support for vec0 virtual table

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-29 19:44:44 -07:00
parent dfd8dc5290
commit bf2455f2ba
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,