知识库/索引与分词(BM25 / KNN / Hybrid)

4.5 索引与分词(BM25 / KNN / Hybrid)

Pop 的知识库检索系统由三大核心技术组成:
BM25(关键词检索) + KNN 向量检索(语义检索) + Hybrid 混合检索(融合两者优势)

本节将详细解释它们的原理、存储结构、优缺点以及最佳使用场景。


📚 一、Pop 的检索系统架构

Pop 使用双索引结构:

Chunk 文本数据
 ├── BM25 索引库(关键词倒排索引)
 └── 向量索引库(Embedding 语义检索)

前端选择不同检索方式时,Pop 会分别调用对应的索引模块。


🔍 二、BM25(关键词检索)

BM25 是传统搜索引擎使用的检索算法,它基于“词匹配”而非语义理解。

2.1 BM25 原理简介

BM25 根据三类因素计算相似度:

因素 作用
词频 TF 某个词在 Chunk 中出现多少次
逆文档频率 IDF 词的稀有程度(越稀有越重要)
Chunk 长度 避免长文本得分过高

2.2 BM25 适用场景

场景 说明
查询包含专业术语 例如 API 文档、型号、指令、变量名
查询拼写非常准确 如 “SR-71”、“gpt-embedding-api”
查询短句或关键词 FAQ、标题搜索、精确定位

2.3 BM25 的优点

  • 不需要 Embedding,速度快
  • 对专业名词、代码片段识别能力强
  • 不受模型质量影响

2.4 BM25 的缺点

  • 无法理解语义
  • “同义词”“解释类问题”效果弱
  • 不能回答描述型问题(如 “这个功能是做什么的?”)

🧠 三、KNN(向量检索)

KNN(k-nearest neighbors)基于 Embedding 向量,通过计算相似度找到语义上最接近的 Chunk。

3.1 原理

流程如下:

  1. 对 Chunk 生成 Embedding(向量,如 1024 维)
  2. 将向量写入向量数据库
  3. 查询时对 Query 生成嵌入
  4. 使用余弦相似度 / 内积 找最近 K 个 Chunk

距离越近 → 语义越相似。

3.2 KNN 的优势

  • 能理解语义,不需要关键词匹配
  • 同义词、改写、模糊表达都能检索
  • 在智能问答场景中表现最佳

例如:

用户问:“如何设置域名绑定?”

即使文档写的是“站点域名配置”,KNN 仍能命中。

3.3 KNN 的不足

  • 对专业词、代码、参数名表现不如 BM25
  • 依赖向量模型,质量与模型能力高度相关
  • 向量库体量大时需要更强整合(索引构建)

⚡ 四、Hybrid(混合检索)

Hybrid 是 BM25 与 KNN 的融合策略,结合两者优势,Pop 默认优先使用 Hybrid 模式。

4.1 Hybrid 的工作原理

常见融合方式:

Hybrid Score = α * BM25_Score + β * Embedding_Score

Pop 使用权重融合 + 分段排序策略,确保:

  • 专业术语由 BM25 命中
  • 描述性问题由 KNN 命中
  • 综合排序后返回最优的前 N 个片段

4.2 Hybrid 的最佳场景

场景 BM25 KNN Hybrid
代码、命令 ✔️ ✔️
专业术语 ✔️ ✔️
模糊提问 ✔️ ✔️
长句描述 ✔️ ✔️
FAQ 类问答 ✔️ ✔️ ✔️
大型综合知识库 ⭐ 必须使用

因此 Hybrid 是“通用最佳策略”。


🔡 五、Pop 的分词机制

5.1 BM25 分词

Pop 对 BM25 使用:

  • 中文分词器(自动切词)
  • 英文、数字按空格与符号拆分
  • 特殊符号处理(如 URL、路径)

例如:

"如何绑定域名到网站?"
→ ["如何", "绑定", "域名", "网站"]

5.2 KNN 分词

KNN 依赖 Embedding 模型,而不是传统分词:

  • 模型会自动处理中文
  • 自动识别语义单元
  • 无需手动分词

例如 OpenAI 的 Embedding 会自动理解:

“绑定域名” ≈ “域名配置”

📊 六、权重调整与排序规则

Pop 的 Hybrid 检索采用多步排序:

  1. BM25 得分排序
  2. Embedding 相似度排序
  3. 权重融合
  4. 去重
  5. 按文档优先级重新排序
  6. 综合评分产出最终结果

这种排序在大多数知识库中表现稳定可靠。


📌 七、建议使用策略

你的知识库类型 推荐检索方式
技术文档 / API / 代码库 Hybrid(最优)
FAQ、标准文档 Hybrid
纯文本书籍 KNN
超多公式 / 专业符号 BM25 + Hybrid
索引规模巨大(> 1e6 chunks) KNN + 限定 BM25

✅ 总结

Pop 的三种检索方式各有优势:

检索方式 擅长 不擅长
BM25 专业名词、精确匹配 语义理解弱
KNN 同义/模糊查询、长句提问 专业词效果弱
Hybrid 综合最强、默认推荐 需双索引、占用资源较多

Hybrid 是 Pop 默认的核心检索方式,也是最适合大多数知识库问答的选择。