Skip to content

索引算法

PistaDB 提供 8 种可互换的索引算法。每个数据库只能激活一种索引;请根据规模、召回率目标和内存预算挑选。

索引算法适用场景
LINEAR暴力精确扫描基准测试、小规模嵌入集
HNSW分层可导航小世界图RAG 首选 —— 速度与召回率最佳平衡
IVF倒排文件索引(k-means 聚类)有训练预算的大型知识库
IVF_PQIVF + 乘积量化内存受限的部署环境
DISKANNVamana 图(DiskANN)十亿级向量集合
LSH局部敏感哈希极低内存占用场景
SCANN各向异性向量量化(Google ScaNN)MIPS / 余弦场景下的极致召回率
SQ标量量化(uint8)4 倍内存与存储压缩,无需训练

如何选择

        ┌─ 小于 1 万向量?     ─────────────→ LINEAR(精确,零配置)

        ├─ 文本场景追求速度/召回率? ───→ HNSW

嵌入集合

        ├─ 内存受限?            ─────────→ IVF_PQ 或 SQ

        └─ 接近十亿级?          ─────────→ DISKANN
  • HNSW 是 RAG 场景的默认推荐。根据召回率目标调整 hnsw_Mhnsw_ef_constructionhnsw_ef_search(见示例)。
  • IVF / IVF_PQ / SCANN 需要训练。先在有代表性的样本上调用 db.train()
  • SQ 是最简单的内存优化:4× 压缩,召回率几乎无损,且无需训练步骤。

距离度量

所有索引都支持全部 5 种距离度量。文本嵌入(OpenAI、Cohere、BGE、GTE)用 COSINE;预归一化嵌入用 IP,在数学上等价但更快。

完整参考

包括 HNSW 调参、IVF 训练、SQ 内存压缩、ScaNN 两阶段搜索在内的完整示例,见仓库中的 docs/examples.md

基于 MIT 协议发布