# 06 知识库 RAG

## 学习目标

你将理解 Dify 知识库的作用，并学会排查“搜不到、答不准、乱引用”的问题。

## RAG 是什么

RAG 可以粗略理解为：

1. 用户提问。
2. 系统从你的资料中检索相关片段。
3. 模型根据这些片段生成回答。

它的目标不是让模型“记住”你的资料，而是在回答时把资料找出来，作为上下文交给模型。

## 知识库不是万能的

知识库效果差，常见原因不是 Dify 设置错，而是资料本身有问题：

- 文档过期。
- 标题混乱。
- 一个段落混了多个主题。
- PDF 解析质量差。
- 表格内容缺少上下文。
- 多份文档互相矛盾。

## 文档准备

上传前先整理：

- 删除无关页眉页脚。
- 给每个主题加标题。
- 拆分过长段落。
- 删除重复内容。
- 标注版本和适用范围。
- 把图片中的重要文字转成文本。

## 知识库描述

知识库描述会影响系统判断什么时候使用资料。描述要写边界。

差的描述：

```text
产品资料
```

好的描述：

```text
本知识库包含 2026 年公开版产品帮助文档，覆盖账号注册、套餐价格、功能限制、发票、售后和常见故障。适合回答用户使用产品前后的操作问题。不包含内部政策、未来路线图和未公开折扣。
```

## 检索参数

### Top K

返回多少个候选片段。太低容易漏，太高容易混入噪声。

### Score Threshold

最低相似度阈值。太高可能搜不到，太低可能召回无关内容。

### Rerank

重排模型会对召回结果重新排序，通常能提升相关性，但会增加成本和延迟。

官方文档也提到，知识库层和应用层都有检索设置，可以看成连续两层过滤：知识库设置决定初始候选池，应用设置进一步重排或缩小范围。

## 测试方法

至少准备三类问题：

1. 资料中有明确答案。
2. 资料中没有答案。
3. 需要综合多个段落。

记录：

- 是否召回正确片段。
- 回答是否基于片段。
- 是否编造资料外内容。
- 是否需要调整切分、阈值或 Prompt。

## 常见错误

- 只调模型，不整理文档。
- 知识库描述过短。
- 把内部资料和公开资料混在一起。
- 资料外问题没有拒答策略。
- Top K 和阈值乱调，没有记录对比结果。

## 本章交付物

- 一个小型 FAQ 知识库。
- 一份知识库描述。
- 15 个测试问题。
- 一张 RAG 调试记录表。

