引言

随着大语言模型(LLM)的爆发式发展,检索增强生成(RAG)架构已成为企业级AI应用的标准范式。向量数据库作为RAG的核心基础设施,承载着海量高维向量的存储与高效检索任务。本文从工程实践角度,系统解析向量数据库的核心技术原理与最佳实践。

向量嵌入基础

向量嵌入是将非结构化数据(文本、图像、音频等)映射为高维空间中稠密向量的过程。核心特性包括:

  • 语义保持:语义相似的文本在嵌入空间中距离更近
  • 维度与表达力:常用768/1024/1536维度,维度越高表达力越强但检索开销越大
  • 各向异性:嵌入空间并非均匀分布,需注意校准

主流嵌入模型对比:

模型维度最大Token特点
text-embedding-3-large15368191OpenAPI官方,综合性能强
bge-large-zh-v1.51024512中文场景表现优异
multilingual-e5-large1024512多语言支持,跨语言检索
jina-embeddings-v310248192长文本与代码检索优

向量相似度计算

向量检索的核心是相似度计算,实际系统中常用的三种度量:

余弦相似度(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) 打赏

评论列表 共有 0 条评论

暂无评论