4.6 知识库问答逻辑(RAG)
Pop 的知识库问答能力基于 RAG(Retrieval-Augmented Generation,检索增强生成)技术构建。RAG 能让 AI 在回答用户问题时,不仅依赖模型自身的知识,还能结合你上传的文档内容,从而做到:
- 回答更准确可控
- 内容可追溯
- 不再“幻想”没有依据的内容
本章节将完整讲解 Pop 内部是如何从你的知识库检索相关段落,并将其用于 AI 回答的。
🧠 一、什么是 RAG?
简单理解:
RAG = 文档检索(Retrieval) + LLM 生成(Generation)
流程图如下:
用户提问 → 语义向量生成 → 检索文档片段 → 选择最相关内容 → 提交给 LLM → 生成答案
RAG 的价值在于:
- LLM 不需要记住所有资料
- 你可以实时更新知识库
- 所有回答都基于可验证的文档内容
🔎 二、Pop RAG 的三阶段流程
Pop 在执行知识库问答时包含 3 个关键阶段:
阶段 1:召回(Retrieval)
阶段 2:重排(Ranking)
阶段 3:生成(Generation)
我们依次说明。
📍 阶段 1:召回(Retrieval)
Pop 同时使用两种检索方式:
- 向量检索(KNN)
- BM25 文本检索
并从两者分别召回前 N 条相关片段(通常为 10 ~ 30 条)。
示意:
Query → Embedding → 向量库 → Top K 片段
Query → 文本分词 → BM25 → Top K 片段
这样能提升召回的覆盖率,避免遗漏重要信息。
📚 阶段 2:重排(Re-ranking)
召回片段后,Pop 会执行一系列排序步骤,以确保最终输入给 AI 的内容是最佳的。
排序流程:
- 去重(去掉重复或相似片段)
- 相似度加权
- BM25 + Embedding 多路排序融合
- 文档优先级排序(同一文档的内容尽量连续)
- 片段长度控制(处理过短或过长的 Chunk)
最终一般选出 3 ~ 6 个最相关的片段 作为 “证据块”。
✨ 阶段 3:生成(Generation)
最终选出的文档片段会被整合到提示词(Prompt)中,加入:
- 问题
- 文档原文
- 引用格式
- 回答规则
示例 Prompt 结构:
你是一名专业助手,请根据下面提供的文档回答用户的问题。
如果文档中找不到答案,请明确告诉用户“文档中没有相关信息”。
【文档片段1】
...
【文档片段2】
...
【文档片段3】
...
问题:{User_Query}
模型在生成答案时将严格参考文档内容,避免胡乱编造。
📌 三、Pop 的 RAG 特性
1. 可追溯性
回答中引用的内容都可以追溯到:
- 文档来源
- 具体段落
- 片段 ID
2. 多片段融合
如果需要回答的问题跨多个段落,Pop 会自动:
- 合并相关片段
- 消除重复
- 解决上下文缺失问题
3. 非结构化文本增强
对于 PDF、网页等结构复杂内容,Pop 会自动:
- 保留标题路径
- 保留页面编号
- 保留语义上下文
4. 防止 AI 编造
Pop 的 RAG 模板包含:
- “没有信息就不要回答”
- “只能根据文档回答”
等严格的控制规则。
📊 四、RAG 效果示例
用户问题:
Pop 的知识库存储结构是怎样的?
召回片段:
- Chunk 17:知识库存储结构概述
- Chunk 18:向量索引与 BM25 说明
模型回答:
Pop 的知识库存储结构由文档、文档片段与双索引(BM25 + 向量索引)组成……
(后略)
用户能够看到引用来源与段落。
💡 五、什么时候 RAG 很有用?
- 产品文档问答
- API 接口查询
- FAQ 客服机器人
- 企业内部知识库
- 政策文件、法律条文查询
- 研发文档、技术方案
RAG 适用于 任何需要“根据文档回答问题” 的场景。
⚠️ 六、RAG 的局限
RAG 再强,也有一定局限性:
- 文档质量过差 → 分段效果差
- 图片为主的文档 → 需要 OCR
- 过于抽象的问题 → 可能无答案
- 模型能力较弱时 → 整合能力不足
因此 Pop 强调:
高质量知识库源文档 = 高质量问答基础。
✅ 总结
RAG 是 Pop 知识库问答的核心能力:
| 阶段 | 职责 |
|---|---|
| 召回 | 找到可能相关的文档内容 |
| 重排 | 选出最相关、最有用的片段 |
| 生成 | 用片段作为依据回答问题 |
通过 RAG,Pop 能够提供:
- 更精准
- 更可靠
- 更可追溯
- 更符合业务需求
的知识库问答体验。