第六章:知识库 RAG¶
检索增强生成(RAG)是让 AI 基于特定知识回答的关键技术。本章介绍 Dify 的知识库功能。
什么是 RAG?¶
RAG(Retrieval-Augmented Generation)是一种结合检索和生成的技术:
为什么需要 RAG?¶
| 问题 | RAG 解决方案 |
|---|---|
| AI 知识过时 | 更新知识库即可 |
| AI 不知道企业内部信息 | 上传内部文档 |
| AI 会编造答案 | 基于文档回答,可溯源 |
| 需要专业领域知识 | 上传专业资料 |
创建知识库¶
步骤一:上传文档¶
- 进入 知识库 → 创建知识库
- 选择文档来源:
- 上传文件
- 网页抓取
- Notion 同步
- API 导入
支持格式: - 文本文件:TXT, MD, PDF, DOCX - 网页:URL - 结构化数据:CSV, Excel
步骤二:文档处理¶
Dify 自动处理文档:
分段策略¶
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 自动分段 | 智能识别段落边界 | 通用文档 |
| 自定义分段 | 按指定分隔符切分 | 结构化文档 |
| 按段落 | 每段一个分段 | 文章、博客 |
| 按字符数 | 固定长度切分 | 长文档 |
分段参数¶
步骤三:索引设置¶
选择向量数据库:
| 数据库 | 特点 |
|---|---|
| Weaviate | 默认,功能全面 |
| Qdrant | 高性能,支持过滤 |
| Milvus | 大规模场景 |
| Chroma | 轻量级,适合开发 |
选择 Embedding 模型:
| 模型 | 特点 |
|---|---|
| OpenAI text-embedding-3 | 效果好,需付费 |
| 通义千问 Embedding | 中文效果好 |
| 本地模型 | 免费,隐私保护 |
知识库配置详解¶
检索模式¶
Dify 支持三种检索模式:
1. 向量检索
2. 全文检索
3. 混合检索
Top K 设置¶
相似度阈值¶
重排序(Rerank)¶
开启重排序可以提升检索质量:
在应用中使用知识库¶
聊天助手关联知识库¶
- 进入应用编排页面
- 在「上下文」部分点击「添加」
- 选择知识库
- 配置检索参数
提示词中引用知识库¶
工作流中使用知识检索¶
在工作流中添加「知识检索」节点:
配置知识检索节点:
知识库管理¶
文档管理¶
命中统计¶
查看哪些文档被频繁检索:
批量操作¶
# 通过 API 批量导入
curl -X POST 'https://api.dify.ai/v1/datasets/{dataset_id}/document/create_by_text' \
-H 'Authorization: Bearer {api_key}' \
-H 'Content-Type: application/json' \
-d '{
"name": "产品手册",
"text": "文档内容...",
"indexing_technique": "high_quality"
}'
高级功能¶
父子分段¶
将文档分为父分段(大块)和子分段(小块):
结构化数据¶
处理 CSV、Excel 等结构化数据:
实时更新¶
通过 API 实时更新知识库:
import requests
# 添加新文档
requests.post(
"https://api.dify.ai/v1/datasets/{dataset_id}/document/create_by_text",
headers={"Authorization": "Bearer {api_key}"},
json={
"name": "新文档",
"text": "文档内容",
"indexing_technique": "high_quality"
}
)
# 更新文档
requests.post(
"https://api.dify.ai/v1/datasets/{dataset_id}/documents/{doc_id}/update_by_text",
headers={"Authorization": "Bearer {api_key}"},
json={"text": "更新后的内容"}
)
最佳实践¶
1. 文档准备¶
- 清理无关内容(页眉页脚、广告等)
- 统一文档格式
- 添加清晰的标题和结构
2. 分段优化¶
- 根据文档类型选择分段策略
- 测试不同分段长度
- 检查分段是否完整
3. 检索调优¶
- 使用混合检索
- 开启重排序
- 调整 Top K 和阈值
4. 持续改进¶
- 分析检索日志
- 收集用户反馈
- 优化文档内容
常见问题¶
Q: 检索结果不准确?
A: 尝试以下方法: 1. 使用混合检索 + 重排序 2. 调整分段长度 3. 优化文档内容 4. 检查 Embedding 模型
Q: 知识库更新后,检索结果没变?
A: 等待索引更新完成,或手动触发重新索引。
Q: 支持多大规模的知识库?
A: 取决于向量数据库配置,Weaviate 默认支持百万级文档。
小结¶
本章介绍了 Dify 的知识库和 RAG 功能。通过知识库,可以让 AI 基于你的专属知识回答问题。下一章,我们将学习工作流的高级功能。