基本概念
稀疏向量是一种特殊的向量,它仅包含少数几个非零元素,其余元素为0。这种数据结构特性使得稀疏向量非常适合表示在大量数据点中只含有少量活跃值的场景,如文本数据中的词频分布。
关键字检索是通过将查询词与文档中的文本内容进行匹配,这通常是基于文本的直接查询,而不包含深层的语义分析。在关键字检索中,可以用稀疏向量来高效地表示和处理文档集合中的关键词信息,稀疏向量中的每个非空值,都可以对应一个词语的权重分数。在实际的 AI 应用及搜索推荐等业务场景中,尤其是在文本检索的场景中,混合使用语义检索(稠密向量)和关键字检索(稀疏向量)可以进一步改善检索效果,弥补在语义检索中对具体数字、编码、数学公式等不敏感以及语义过度泛化的问题。
实现机制
在文本写入时,每个文档被分解成单独的词汇,通过哈希函数将这些词汇映射到特定的索引值。基于索引值,通过 BM25 算法计算每个词的词频以及与原文档的相关性,形成稀疏向量存储于数据库。在文本检索时,检索的文本信息同样被分解成单独的词汇,通过哈希函数将这些词汇映射到特定索引,得到查询文本的词向列表,通过 BM25算法计算每一个词汇对应的稀疏向量,再与原始数据库的相似性计算得分比较,按得分排序,返回检索结果。
在进行稠密向量和稀疏向量的混合检索时,同一段文本内容,可以通过 Embedding 模型生成稠密向量,也可以通过 tcvdb-text 等工具生成对应的稀疏向量。这两个向量分别表示了语义级别和词级别的信息,共同存储在同一个集合内。在进行混合检索时,两路向量会分别检索 Top M 和 Top N 条相似数据,随后通过加权、RRF 等 Rerank 方法,得到综合两路信息的排序结果,最终返回排序最靠前的Top K条数据。
功能与限制
功能 | 功能描述 | 使用限制 |
混合检索 | 1. 创建集合时,指定稀疏向量字段与索引方式。 2. 通过 tcvdb-text 传入文本生成稀疏向量,并写入。 3. 使用稠密向量 + 稀疏向量混合检索方法,支持加权(Weighted)、RRF 等排序,对两路召回的结果进行排序。 | 每个集合仅支持定义1个稀疏向量字段,每条稀疏向量最多支持1024个非空值。 稀疏向量仅支持 IP 和 COSINE 两种相似度计算方法。 |
稀疏向量生成工具 | 当前支持中文、英文两种文本语言,默认为中文。 |