向量数据库(Vector Database)专为高效存储和语义检索高维向量而设计,其核心目标是:
- 支持语义相似性搜索(而非关键词匹配);
- 实现低延迟、高吞吐的近似最近邻(ANN)检索;
- 在准确率(召回率)与效率(速度/内存)之间取得平衡。
索引是实现这一价值的关键技术。索引通过特定数据结构或压缩方式,减少检索时的计算量,平衡 “速度” 与 “精度”;检索则基于索引类型,分为精确匹配与近似匹配两类。
向量数据库索引分类
向量索引的设计围绕 “如何快速定位相似向量” 展开,可按数据结构和压缩级别分为两大维度,不同维度的组合形成实际应用中的索引方案(如 IVF-PQ、HNSW-Flat)。
按数据结构分类(决定检索逻辑)
数据结构是索引的 “骨架”,直接影响高维数据的检索效率和精度。主流结构包括哈希、树、图、倒排文件四种,核心差异体现在高维场景适应性和速度 - 精度权衡上。
索引类型 | 核心原理 | 代表实现 | 优势 | 劣势 | 适用场景 |
哈希索引 | 用局部敏感哈希(LSH)将相似向量映射到同一 “哈希桶”,检索时仅遍历目标桶 | LSH | 超大规模数据下检索速度极快(毫秒级) | 精度低(易漏检相似向量),高维适配差 | 低精度要求的粗筛场景(如推荐系统初筛) |
基于树的索引 | 构建二叉搜索树森林(如 Annoy),相似向量集中在同一子树,逐层缩小搜索范围 | Annoy(Spotify) | 低维数据(<100 维)检索效率高 | 高维数据(>100 维)精度骤降,易过拟合 | 低维向量场景(如传统特征工程数据) |
基于图的索引 | 将向量视为节点,相似向量用边连接,构建 “小世界图”,遍历图寻找近邻 | HNSW、Vamana | 高维数据精度高(召回率 > 95%),速度快 | HNSW 内存占用高;Vamana 实现复杂 | 高维核心场景(如文本 Embedding、图像检索) |
倒排文件索引 | 将向量空间划分为多个 Voronoi 单元(类似聚类),检索时先定位目标单元,再内部搜索 | IVF(Inverted File) | 支持大规模数据,可结合压缩优化内存 | 单元边界易漏检,需调参(n_probes) | 需平衡内存与速度的中大规模场景 |
混合结构:如 NGT = 图 + VP树(Vantage-point Tree),结合图的高召回与树的快速范围搜索。
关键结构细节
基于图的索引(HNSW vs Vamana)
- HNSW(分层可导航小世界):核心是 “分层图”—— 顶层为稀疏长距边(快速跳转),底层为稠密短距边(精准定位)。检索时从顶层入口开始,逐层向下筛选,最终在底层找到近邻,实现 “对数级复杂度”,是目前高维场景的首选(如 Qdrant、Weaviate 默认索引)。
- Vamana:专为 “磁盘存储” 设计,通过迭代修剪冗余边,保留长距边优化遍历效率,支持超大规模数据(无法全量入内存),但目前仅 Milvus 等少数数据库实现稳定版本。
倒排文件索引(IVF)
先通过 k-means 将向量聚类为 M 个单元(质心),构建 “质心→单元内向量” 的倒排表;检索时先计算查询向量与 M 个质心的距离,选择 Top-n 个单元(n_probes 参数),再在这些单元内做精确搜索。n_probes 越大,召回率越高,但速度越慢(需平衡)。
按压缩级别分类(决定内存与速度)
压缩的核心是通过 “损失部分精度” 减少向量存储占用,提升检索速度,分为 “平坦索引”(无压缩)和 “量化索引”(有压缩)两类。
压缩类型 | 核心原理 | 代表方案 | 优势 | 劣势 | 适用场景 |
平坦索引(Flat) | 不压缩,存储原始 32 位 / 64 位浮点向量,检索时计算全量距离 | Flat、IVF-Flat、HNSW-Flat | 精度 100%(无损失),实现简单 | 内存占用高(100 万 384 维向量约 1.5GB),速度慢 | 小数据量(<10 万向量)、高精度需求场景 |
量化索引 | 将向量压缩为低精度格式(如 8 位整数),通过 “重构值” 估计距离 | SQ、PQ、IVF-PQ | 内存占用降低 4-8 倍,检索速度提升 2-5 倍 | 精度损失(PQ 损失比 SQ 大,需调参) | 中大规模数据(>100 万向量)、内存有限场景 |
关键量化技术
- 标量量化(SQ):将向量每个维度的浮点值映射到整数区间(如 - 128~127),通过 “最小值 - 最大值” 归一化实现,压缩率 4 倍(32 位→8 位),精度损失较小,但对高维数据优化有限。
- 产品量化(PQ):更复杂的压缩方式,将高维向量拆分为 m 个低维子向量(如 384 维拆为 12 个 32 维子向量),每个子向量单独聚类量化,存储 “聚类索引” 而非原始值,压缩率可达 16 倍(32 位→2 位)。实际应用中常与 IVF 结合(即 IVF-PQ):IVF 负责缩小搜索单元,PQ 负责压缩单元内向量,平衡 “速度 - 内存 - 精度”(如 Milvus、LanceDB 的核心索引)。
常见组合:IVF-PQ、HNSW-PQ、Vamana-PQ
向量检索类型
检索类型由索引类型决定,核心分为 “精确检索” 和 “近似检索(ANN)”,另有 “混合检索” 结合两种逻辑提升召回率。
精确检索(Exact Search)
- 原理:遍历所有向量,计算查询向量与每个向量的精确距离(如余弦相似度、欧氏距离),返回 Top-K 结果。
- 依赖索引:仅平坦索引(Flat、IVF-Flat、HNSW-Flat),无压缩损失。
- 优缺点:精度 100%,但速度随数据量线性下降(100 万向量需秒级)。
- 适用场景:小数据量(<10 万向量)、高精度刚需场景(如医疗影像检索、金融风控)。
近似检索(Approximate Nearest Neighbor, ANN)
- 原理:不遍历全量数据,通过索引(如 HNSW、IVF-PQ)缩小搜索范围,返回 “近似最优” 结果,牺牲 5%-10% 召回率换取 10-100 倍速度提升。
- 依赖索引:哈希、基于树、基于图、量化索引(如 HNSW、IVF-PQ、Vamana)。
- 核心指标:
- 召回率(Recall):检索到的真实近邻占比(越高越准,通常需≥90%);
- 延迟(Latency):单次检索耗时(越低越快,通常需 < 100ms)。
- 适用场景:中大规模数据(>100 万向量)、实时性需求场景(如推荐系统、语义搜索)。
混合检索(Hybrid Search)
- 原理:结合 “稀疏检索”(如 BM25,基于关键字匹配)和 “稠密检索”(如 Embedding,基于语义匹配),通过权重融合结果(如 BM25 占 40%,Embedding 占 60%)。
- 优势:弥补单一检索缺陷(如 BM25 漏语义、Embedding 漏关键字),召回率提升 10%-20%。
- 实现工具:LangChain 的
EnsembleRetriever、Weaviate 的Hybrid Search功能。 - 适用场景:文本检索(如企业知识库、电商搜索),需同时匹配关键字和语义。
主流流行索引
实际应用中,单一结构或压缩的索引较少,多为 “结构 + 压缩” 的组合方案,以下是 3 种最常用的组合索引:
IVF-PQ(倒排文件 + 产品量化)
- 核心逻辑:IVF 负责 “空间分区”,PQ 负责 “向量压缩”,是 “内存 - 速度 - 精度” 的平衡之选。
- 工作流程:
- 聚类分区:用 k-means 将向量分为 M 个单元,记录每个单元的质心;
- 产品量化:将每个单元内的向量拆分为 m 个子向量,每个子向量聚类为 k 类,存储 “聚类索引”(码本);
- 检索时:
- 步骤 1:计算查询向量与 M 个质心的距离,选择 n_probes 个最近单元;
- 步骤 2:在单元内用 PQ 码本估计向量距离,返回 Top-K 结果。
- 关键参数:
- M(聚类数):M 越大,单元越小,检索越快,但召回率越低(通常设为 100-1000);
- m(子向量数):m 越大,压缩率越低,精度越高(通常设为 12-24);
- n_probes(检索单元数):n_probes 越大,召回率越高,速度越慢(通常设为 5-20)。
- 支持数据库:Milvus、LanceDB、FAISS。
HNSW-PQ(分层图 + 产品量化)
- 核心逻辑:HNSW 保证高维数据的高召回率,PQ 降低内存占用,是 “高维 + 大规模” 场景的首选。
- 工作流程:
- 构建分层图:顶层为稀疏长距边,底层为稠密短距边,每个节点邻居数有上限(避免密集枢纽);
- 向量压缩:用 PQ 将原始向量压缩为低精度码本,存储在节点中;
- 检索时:从顶层随机入口开始,逐层向下筛选候选节点,底层用 PQ 估计距离,返回 Top-K。
- 优势:高维数据召回率 > 95%,内存占用比纯 HNSW 降低 4-8 倍,速度比 IVF-PQ 快 2-3 倍。
- 支持数据库:Qdrant、Weaviate、Chroma(部分版本)。
Vamana(磁盘优化图索引)
- 核心逻辑:专为 “超大规模数据(无法全量入内存)” 设计,通过磁盘存储向量、内存缓存索引,平衡 “容量 - 速度”。
- 关键特性:
- 边修剪:迭代删除冗余边,保留长距边,减少遍历次数;
- 分区合并:支持将数据拆分为多个小索引,合并后性能接近全量索引;
- 兼容 PQ:可结合 PQ 压缩向量,进一步降低磁盘占用。
- 优势:支持 10 亿级向量检索,磁盘存储成本低,延迟 < 200ms。
- 支持数据库:Milvus(稳定版)、Weaviate(实验版)、LanceDB(实验版)。
索引选型指南
选型的核心是平衡 “数据量、维度、精度需求、部署环境” 四大因素,以下为实操决策路径:
场景特征 | 推荐索引 | 关键参数建议 | 推荐数据库 |
小数据(<10 万向量)、高精度 | Flat/HNSW-Flat | - | Chroma、FAISS |
中数据(10 万 - 1000 万)、高维 | HNSW-PQ | m=16,邻居数 = 32 | Qdrant、Weaviate |
大数据(>1000 万)、内存有限 | IVF-PQ | M=512,n_probes=10,m=12 | Milvus、LanceDB |
超大数据(>10 亿)、磁盘存储 | Vamana-PQ | 分区数 = 100,n_probes=20 | Milvus |
文本检索、需关键字 + 语义 | HNSW(混合检索) | BM25 权重 0.4,Embedding 权重 0.6 | Weaviate、Qdrant |
流行的矢量数据库中可用的索引:
趋势:HNSW 是当前事实标准;IVF-PQ 在超大规模场景仍具优势;Vamana/DiskANN 是未来方向。
总结
- 索引是检索的基础:平坦索引对应精确检索,图 / 量化索引对应 ANN 检索,混合检索需结合稀疏 + 稠密索引;
- 权衡是永恒主题:没有 “完美索引”,需根据场景在 “速度(延迟)、精度(召回率)、成本(内存 / 磁盘)” 三者间取舍;
- 高维优先图索引:高维数据(>100 维)下,HNSW/Vamana 的精度远超 IVF / 哈希,是目前的主流选择。
未来展望:
- 磁盘优先架构(如 LanceDB)将降低向量数据库的部署门槛;
- 硬件加速(GPU/FPGA)与向量压缩结合将进一步提升吞吐;
- 多模态索引(文本+图像+音频联合嵌入)将成为新挑战;
- 自动索引调优(AutoML for ANN)将简化参数选择。