You need to enable JavaScript to run this app.
导航
稀疏+稠密向量混合检索
最近更新时间:2024.07.19 19:56:55首次发布时间:2024.07.19 19:56:55

说明

本文主要介绍知识库中利用稀疏和稠密向量等模型方案的特点和应用场景。

原理介绍

稀疏向量

利用词汇匹配优化信息检索,依赖词袋模型将查询和文档表示为高维向量,各元素对应词语及重要性,适用于关键词检索。
假设我们有一个文档向量,其中只包含几个特定特征的标识,比如向量 [0, 0, 1, 0, 1,...],其中 1 可能表示存在某个特定关键词(如“科技”, “知识”),而其他位置为 0。这个向量就是相对稀疏的,它明确标记了与某些特定关键词相关的信息。

  • 优点:存储和计算效率高,资源要求低。在特定场景模式下表现好。
  • 缺点:难以捕捉更丰富细腻的语义和相似性。例如检索语句为“红色的漂亮苹果”,如果文档中写的是“色泽艳丽的红苹果非常好看”,可能由于没有精准匹配到“红色”“漂亮”这两个具体关键词而错过。

稠密向量

利用语言模型优化信息检索,用 Embedding 模型将查询和文档映射到低维向量空间,使 Query 与 Doc 匹配转化为向量相似度问题,适用于语义检索。
假设我们有一个文本,通过预训练的 Embedding 模型得到的稠密向量 [0.25, -0.1, 0.3, 0.7, -0.4, ...],它是通过对文本进行深度语义分析得到的。这个向量包含了许多非零的具体数值,就是稠密向量。

  • 优点:可以理解多义词,处理错别字和语法错误,提供语义相关度更高的答案。
  • 缺点:缺乏查找特定的关键字或短语的能力,对 Embedding 模型能力依赖性较强。例如检索语句是“最新电子产品评测”,如果文档中写的是“这里有各类最新上架的电子产品的详细介绍与相关的用户评测”,可能因语义理解偏差而未能准确关联。

传统的向量库产品只支持稠密向量检索,这种方案能够理解概念和上下文,提供语义相关度更高的答案。但是在某些场景下需要查找特定的关键字或短语,需要在检索阶段使用稀疏向量检索,在检索时能查找特定关键词。
为了实现更好的检索召回效果或者迁移利用已有的关键词检索能力,知识库支持用户基于关键词和语义进行混合检索,依赖向量库对稠密向量和稀疏向量的检索能力。

知识库混合检索方案

混合检索

知识库在对原始文档进行解析和切片后,利用向量化模型同时将文本表示为稠密向量和稀疏向量,并把这种混合了稠密向量和稀疏向量的向量组合存入向量库中。而在进行检索的过程中,向量化模型会把用户所提供的检索输入文本同样地表示为稠密向量和稀疏向量,通过同时检索向量库的向量空间,同步检索召回一批相关文档切片。
图片

混合检索优势

  • 混合检索既能充分发挥稠密检索在复杂语义关系中的优势,同时利用稀疏检索的高效性,有效地实现高精度和高效率的检索任务。
  • 在一个特定的向量数据库当中,既能够存储稠密向量,也能够容纳稀疏向量,节省存储成本。
  • 可以对数据库内的稠密向量和稀疏向量进行同步检索,进而获取到 Top K 结果,而无需将其分开进行两次检索以分别得到 Top K 个结果后再来最终获得 Top K,这样大大提高了检索的效率和便捷性。
  • 混合检索效果优于稀疏检索或者稠密检索单路召回。

使用方法

说明

知识库支持使用稠密检索的高精度版使用混合检索的多功能版等不同的文本向量模型

用户界面使用示例

说明

关键步骤1:在知识库配置时选择合适的向量化模型。

配置类别

参数名称

参数说明

知识库配置

向量化模型

可选 Doubao-embedding 模型(多功能版)、Doubao-embedding 模型、文本向量模型(高精度版)、文本向量模型(多功能版)。必填
各个向量化模型的特点和使用建议:

  • Doubao-embedding+多功能版——综合字节自研向量化模型及多功能版的优势,融合语义和关键词检索,适合大多数场景,检索效果表现最佳。模型会分别使用高质量的向量化模型产出稠密向量和稀疏向量,分别适用于语义检索和关键词检索。
  • Doubao-embedding——字节跳动自研向量化模型,支持中英双语和高精度纯语义检索,支持4k Token的较长输入窗口,在纯语义检索的场景带来更好的表现。默认向量维度为 2048 维,若数据量极大且性能要求极高时,可考虑降维到 1024 以提升检索效率。
  • 短文本高精度+多功能版——基于语言模型抽取字面匹配特征及语义特征,检索时兼顾两者,能带来最好的检索效果。模型会分别使用高质量的向量化模型产出稠密向量和稀疏向量,分别适用于语义检索和关键词检索。这个模型在关注语义相似性的同时兼顾字面上的匹配,带来更优的检索效果。
  • 多功能版——支持 8k Token 的长输入窗口,同时也支持多语言检索和跨语言检索。模型会产出稠密向量和稀疏向量,分别适用于语义检索和关键词检索。这个模型在关注语义相似性的同时兼顾字面上的匹配,带来更优的检索效果。
  • 短文本高精度版——支持中文,在纯语义检索中能带来较好的检索效果。

图片

说明

关键步骤2: 调整 Dense Weight 参数大小

配置类别

参数

作用

取值范围

知识库-高级配置

Dense Weight

在创建知识库时,如果选择的向量化模型和索引算法支持混合检索,则检索时系统会同时考虑问题与候选文本片的语义相关性和字面上的匹配程度,获得更准确的检索结果。
Dense Weight 参数用于控制检索时语义相似程度的重要性权重,越偏向 1 表示越倾向于语义检索,越偏向 0 则表示越偏向于关键词匹配检索。

[0.2, 1]

图片

SDK 请求示例

说明

关键步骤1:在知识库配置时选择合适的向量化模型。

详细 SDK 配置参考:create_collection

说明

关键步骤2:调整 Dense Weight 参数大小。

详细 SDK 配置参考:search_and_generate