在 RAG(检索增强生成)系统中,向量数据库扮演着至关重要的角色,它负责存储文本经过 Embedding 处理后的向量表示,并能高效地进行向量检索,以找出与查询向量最相似的文档。
1.向量数据库原理
1.向量表示
在 RAG 系统里,文本首先会通过 Embedding 模型(如 OpenAI Embeddings、Sentence Transformers 等)转化为固定维度的向量。这些向量能够捕捉文本的语义信息,使得语义相近的文本在向量空间中距离较近。例如,“苹果公司推出了新产品”和“苹果公司发布了新的产品”这两句话经过 Embedding 后,它们对应的向量在向量空间中的距离会比较小。
2.索引结构
为了实现高效的向量检索,向量数据库通常会采用特定的索引结构。常见的索引结构有:
- KD - Tree(K - Dimensional Tree)
- 原理:它是一种对 k 维空间中的点进行划分的数据结构,通过递归地将 k 维空间划分为两个半空间,从而实现对数据的快速查找。
- 优点:实现相对简单,适用于低维数据(维度通常小于 20)。
- 缺点:随着数据维度的增加,其查询效率会显著下降,出现“维度灾难”问题。
- Ball Tree