引言
随着大语言模型(LLM)的爆发式发展,检索增强生成(RAG)架构已成为企业级AI应用的标准范式。向量数据库作为RAG的核心基础设施,承载着海量高维向量的存储与高效检索任务。本文从工程实践角度,系统解析向量数据库的核心技术原理与最佳实践。
向量嵌入基础
向量嵌入是将非结构化数据(文本、图像、音频等)映射为高维空间中稠密向量的过程。核心特性包括:
- 语义保持:语义相似的文本在嵌入空间中距离更近
- 维度与表达力:常用768/1024/1536维度,维度越高表达力越强但检索开销越大
- 各向异性:嵌入空间并非均匀分布,需注意校准
主流嵌入模型对比:
| 模型 | 维度 | 最大Token | 特点 |
|---|---|---|---|
| text-embedding-3-large | 1536 | 8191 | OpenAPI官方,综合性能强 |
| bge-large-zh-v1.5 | 1024 | 512 | 中文场景表现优异 |
| multilingual-e5-large | 1024 | 512 | 多语言支持,跨语言检索 |
| jina-embeddings-v3 | 1024 | 8192 | 长文本与代码检索优 |
向量相似度计算
向量检索的核心是相似度计算,实际系统中常用的三种度量:
余弦相似度(Cosine Similarity)
$$cos(\theta) = \frac{\vec{A} \cdot \vec{B}}{|\vec{A}| \times |\vec{B}|}$$
取值范围[-1, 1],对向量长度不敏感,适用于归一化后的嵌入向量。
点积相似度(Dot Product)
$$\text{score} = \sum_{i=1}^{n} A_i \times B_i$$
计算效率高,现代嵌入模型通常要求归一化后使用点积等价于余弦相似度。
L2欧氏距离
$$d(\vec{A}, \vec{B}) = \sqrt{\sum_{i=1}^{n}(A_i - B_i)^2}$$
距离越小越相似,贴近几何空间直觉,适用于部分非归一化场景。
工程选择建议:绝大多数现代嵌入模型支持归一化,优先使用内积(等价于余弦计算量更小)。
近似最近邻(ANN)索引算法
暴力扫描N个d维向量需要O(Nd)时间,大规模场景下不可接受。ANN索引以极少精度损失换取数量级检索速度提升。
HNSW(分层可导航小世界)
基于多层跳表结构的图索引,构建机理:
- 顶层稀疏导航,逐层细化
- 每个节点连接最近邻的M个节点(通常M=16~64)
- 贪心搜索 局部优化
参数配置:M=16(构建),ef_construction=200(质量),ef_search=128(检索)。召回率可达99% ,但内存占用较高(需全量向量 图结构在内存中)。
IVF(倒排扁平)
先聚类后查找的两阶段检索:
- 训练阶段:K-Means聚类,生成K个Voronoi单元(质心)
- 查询阶段:计算query到所有质心的距离,选择最近的nprobe个单元
- 候选集 = 被选单元内所有向量
nprobe=10~256,nprobe越大召回率越高但越慢。适合十亿级数据量。
IVF-PQ(倒排乘积量化)
在IVF基础上对向量做乘积量化(Product Quantization)压缩:
- 将d维向量拆分为m个子空间
- 每个子空间用k-means聚类生成256个质心(uint8)
- 原始32维float(128字节)压缩为32字节(m=32子空间)
- 压缩率约4倍,内存大幅降低,但量化损失导致精度下降
索引选型决策矩阵
| 场景 | 推荐索引 | 数据规模 | 精度要求 |
|---|---|---|---|
| 高召回实时检索 | HNSW |
评论列表 共有 0 条评论 |

发表评论 取消回复