📚 实战教程

RAG 实战:从文档切分到可验证回答

让知识库问答不仅能回答,还能说明依据、识别缺失信息并安全拒答。

一、先定义检索边界

RAG 不是把所有文档塞进提示词。先确定允许纳入的来源、更新频率、访问权限和文档版本,并为每个片段保留来源标识。

二、切分文档并保留上下文

优先按标题、段落和列表切分,避免把步骤拆散。每个片段至少保留文档名、章节、版本或更新时间等元数据。

chunk = {
    "text": "...",
    "source": "docs/guide.md",
    "section": "Authentication",
    "version": "placeholder"
}

示例中的版本值是占位符;生产数据应来自真实文档元数据。

三、检索和生成分开评估

  1. 先检查正确文档是否出现在 Top-K 结果中。
  2. 再检查模型是否只使用检索到的证据。
  3. 对没有证据的问题要求明确说明“资料不足”。
  4. 对权限受限文档在检索层过滤,而不是生成后再隐藏。

四、回答必须带引用

回答应返回来源标题、章节或稳定链接。引用不能只写一个模糊的“知识库”,否则用户无法复核。

五、最小测试集

本文讲解 RAG 的可复现设计方法,没有声称已在某个具体模型、向量数据库或生产数据集上完成性能测试。实际效果需要使用目标语料建立评测集后验证。