1. 混合检索:打破单一检索的局限性
在信息检索领域,我们常常面临一个两难选择:是选择能够精确匹配关键词但缺乏语义理解能力的传统检索方式,还是选择能够理解语义但可能错过精确匹配的现代向量检索?这个问题的答案就是混合检索(Hybrid Search)。
1.1 检索技术的演进历程
信息检索技术经历了几个重要发展阶段:
-
布尔检索时代(1950s-1980s):
- 基于严格的逻辑运算符(AND/OR/NOT)
- 只能做精确匹配,没有相关性排序
- 典型代表:早期图书馆检索系统
-
统计检索时代(1990s-2010s):
- 引入TF-IDF、BM25等统计模型
- 能够对结果进行相关性排序
- 典型代表:传统搜索引擎
-
语义检索时代(2010s至今):
- 使用深度学习模型生成文本向量
- 能够理解语义相似性
- 典型代表:现代推荐系统
-
混合检索时代(当前):
- 结合统计检索和语义检索的优势
- 同时考虑字面匹配和语义相似性
- 典型代表:新一代搜索引擎和知识库系统
1.2 单一检索方式的局限性
在实际应用中,无论是传统的稀疏向量检索(如BM25)还是现代的密集向量检索(如BERT嵌入),都存在明显的局限性:
稀疏向量检索的问题:
- 无法处理同义词("汽车"和"轿车"被视为完全不同)
- 对词形变化敏感("running"和"ran"没有关联)
- 无法理解上下文语义("苹果公司"和"水果苹果"可能混淆)
密集向量检索的问题:
- 可能错过精确的关键词匹配
- 对专业术语或特定名称的检索不够精确
- 模型可能产生"语义漂移"(将不相关的内容判断为相似)
1.3 混合检索的核心思想
混合检索的基本原理是同时使用稀疏向量和密集向量进行检索,然后将两种检索结果进行融合。这种方法的优势在于:
- 提高召回率:确保不遗漏任何可能相关的结果
- 提升准确率:通过双重验证筛选出最相关的内容
- 增强鲁棒性:对不同类型的查询都能有良好表现
在实际系统中,混合检索通常采用以下架构:
code复制查询文本
│
├───▶ 稀疏向量检索(BM25等)
│ │
│ └───▶ 结果列表A
│
└───▶ 密集向量检索(Embedding)
│
└───▶ 结果列表B
│
└───▶ 结果融合(RRF等)
│
└───▶ 最终排序结果
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术实现细节
2.1 稀疏向量检索详解
稀疏向量检索的核心是BM25算法,它的计算公式如下:
code复制score(D,Q) = Σ IDF(q_i) * (f(q_i,D) * (k1 + 1)) / (f(q_i,D) + k1 * (1 - b + b * |D| / avgdl))
其中:
D是文档Q是查询(由词项q1,q2,...qn组成)f(q_i,D)是词项q_i在文档D中的词频|D|是文档长度(词数)avgdl是文档集合的平均长度k1和b是调节参数(通常k1∈[1.2,2.0],b=0.75)
**IDF(逆文档频率)**的计算:
code复制IDF(q_i) = log((N - n(q_i) + 0.5) / (n(q_
