用途:sqlite-vec 是 SQLite 的轻量级向量相似度搜索扩展,用于在 SQLite 内直接存储嵌入向量并执行 KNN 查询,从而在本地实现语义搜索,无需引入外部向量数据库。
主要能力:支持三种向量元素类型——float[N](32 位浮点,常见于 OpenAI、Cohere 等嵌入)、int8[N](量化嵌入)、bit[N](二值量化,存储最紧凑);提供 vec0 虚拟表作为向量搜索的主结构,列类型包括向量列、元数据列(可过滤)、分区键列(分片加速过滤查询)和辅助列(以 + 前缀,不参与过滤)。距离度量支持 l2(默认)、cosine、hamming(仅位向量)。
使用方式:在 Python 中加载扩展并启用:db.enable_load_extension(True); sqlite_vec.load(db); db.enable_load_extension(False)。向量需序列化为 BLOB 或 JSON 字符串,可用 serialize_float32、serialize_int8 辅助函数,NumPy 数组可直接传入。建表使用 CREATE VIRTUAL TABLE ... USING vec0(...)。KNN 查询形如 SELECT rowid, distance FROM vec_items WHERE embedding MATCH ? AND k = 10 ORDER BY distance。元数据过滤支持 =、!=、>、>=、<、<=、BETWEEN,不支持 IS NULL、LIKE、GLOB、REGEXP 与标量函数。还提供 vec_distance_l2/cosine/hamming、vec_f32/vec_int8/vec_bit 构造器、vec_length、vec_type、vec_to_json、vec_add、vec_sub、vec_normalize、vec_slice、vec_quantize_binary、vec_each 等函数,并支持与源表 JOIN、分区键过滤与 Matryoshka 嵌入(vec_slice 后 vec_normalize)。
适用场景:多租户检索、混合搜索(向量 + 元数据过滤)、语义搜索、量化压缩检索。
限制与注意事项:需先用固定维度建表,维度必须与嵌入模型输出长度一致;元数据过滤运算符受限;分区键建议每个唯一值有 100+ 向量,最多使用 1-2 个,避免过度分片;k 建议保持在 10-100。安装方式、Python 绑定细节、收费与价格、性能基准等资料暂未提供。