七:知识库(RAG)构建与优化:让AI准确回答专业问题的终极武器
由于大模型有上下文长度限制(如 32K),我们不能把整本 PDF 直接喂给 AI。必须将文档拆分成小段落,每段独立向量化。策略说明适用场景固定长度切片按字符数切割(如每 500 字一段)通用场景,简单高效按标题分割识别##等标题层级,保持语义完整技术文档、手册句子边界分割在句号、换行处切分,避免断句自然语言文本语义分割(Sentence-BERT)使用模型判断语义边界,最智能高精度要求场景“按标题
在实际业务中,大模型常常“一本正经地胡说八道”——因为它不知道你公司的产品细节、内部流程或行业术语。
如何让 AI “只说你知道的内容”?答案就是:RAG(Retrieval-Augmented Generation,检索增强生成)。
Dify 内置了强大的知识库系统,支持上传 PDF、Word、TXT 等文档,自动切片、向量化,并在用户提问时智能检索相关内容,注入 Prompt 实现精准回答。
本文将带你:
✅ 手把手搭建知识库
✅ 深入解析文本切片与向量化流程
✅ 掌握提升检索准确率的五大实战技巧
让你的 AI 助手从“通识学霸”变成“领域专家”。
一、上传文档并建立知识库
🧭 第一步:创建知识库
- 登录 Dify 控制台
- 进入左侧菜单 → “知识库”
- 点击 “新建知识库”
- 输入名称(如“产品手册”、“客服FAQ”)
- 选择分段策略(稍后详解)
- 点击“创建”
✅ 建议:为不同业务场景创建独立知识库,便于权限管理和精准检索。
📎 第二步:上传文档
支持格式:
- ✅
.pdf
(含扫描件自动OCR识别) - ✅
.docx
,.pptx
,.xlsx
- ✅
.txt
,.md
- ✅
.csv
(结构化数据支持)
操作步骤:
- 进入知识库详情页
- 点击“上传文件”
- 拖入或选择本地文件
- 设置文档权限(可选)
- 点击“确认上传”
⏱️ 系统会自动完成:解析 → 切片 → 向量化 → 存入向量数据库
📊 查看处理状态
上传后,你会看到每份文档的处理进度:
- 解析状态(成功/失败)
- 分段数量
- 向量生成状态
- 可预览每个文本块的内容
💡 提示:如果文档较大(>50MB),建议分批上传,避免超时。
二、文本切片策略与向量化流程解析
这是 RAG 的核心技术环节。切得好,检索才准;向量强,匹配才稳。
🔍 什么是文本切片(Text Splitting)?
由于大模型有上下文长度限制(如 32K),我们不能把整本 PDF 直接喂给 AI。必须将文档拆分成小段落,每段独立向量化。
Dify 提供多种切片策略:
策略 | 说明 | 适用场景 |
---|---|---|
固定长度切片 | 按字符数切割(如每 500 字一段) | 通用场景,简单高效 |
按标题分割 | 识别 # , ## 等标题层级,保持语义完整 |
技术文档、手册 |
句子边界分割 | 在句号、换行处切分,避免断句 | 自然语言文本 |
语义分割(Sentence-BERT) | 使用模型判断语义边界,最智能 | 高精度要求场景 |
✅ 推荐组合:“按标题分割” + “句子边界微调”,兼顾结构与语义。
🧠 向量化流程解析
切片完成后,Dify 会调用 embedding 模型将每段文本转换为向量(即“数字指纹”),存储在向量数据库中。
流程如下:
原始文档
↓ 解析(Unstructured / PyPDF2)
文本片段列表
↓ 清洗(去噪、去广告、标准化编码)
干净文本块
↓ 调用 Embedding 模型(如 text-embedding-ada-002)
向量表示(vector)
↓ 存入向量数据库(Milvus / Weaviate / PGVector)
可供检索的索引
💡 默认使用 OpenAI 的
text-embedding-ada-002
,也支持国产模型(如通义、bge)。
⚙️ 如何选择 embedding 模型?
模型 | 特点 | 是否推荐 |
---|---|---|
OpenAI text-embedding-ada-002 | 效果好,稳定性高 | ✅ 强烈推荐(SaaS版默认) |
BAAI/bge-base-zh | 中文优化,开源免费 | ✅ 自建部署首选 |
Tongyi/text-embedding-v1 | 阿里云出品,中文表现优秀 | ✅ 支持私有化调用 |
Jina Embeddings | 多语言支持好 | ✅ 国际化项目可用 |
📌 在 Dify 的“模型管理”中可配置多个 embedding 模型并自由切换。
三、提高检索准确率的五大技巧
即使有了知识库,AI 仍可能“答非所问”。根本原因往往是:检索不准。
以下是五个经过验证的优化技巧,大幅提升 RAG 效果。
✅ 技巧 1:关键词增强(Hybrid Search)
纯向量检索容易忽略关键词匹配。Dify 支持 混合检索(Keyword + Vector):
- 先用 BM25 或 Elasticsearch 做关键词匹配
- 再用向量检索找语义相似内容
- 最后融合排序(Reciprocal Rank Fusion)
🔧 开启方式:在知识库设置中启用“关键词检索”
📌 效果:显著提升对“专有名词”“缩写词”的召回率。
✅ 技巧 2:元数据过滤(Metadata Filtering)
为文档或文本块添加元数据,实现精准筛选。
示例场景:
- 文档来源:
source: "用户手册_v2.pdf"
- 所属部门:
dept: "客服"
- 发布时间:
date: "2025-03"
然后在 Prompt 中添加过滤条件:
请仅参考 2025 年发布的文档回答问题。
Dify 会在检索时自动过滤 date < 2025
的片段。
🛠️ 配置路径:上传文档时手动填写元数据,或通过 API 批量注入。
✅ 技巧 3:查询扩展(Query Expansion)
用户提问太简短?AI 看不懂?
启用 查询扩展 功能,让系统自动补全语义:
原始查询 | 扩展后 |
---|---|
“退款流程” | “如何申请退款?退款需要哪些材料?退款多久到账?” |
“登录失败” | “账号无法登录怎么办?密码错误如何重置?” |
实现方式:
- 使用 LLM 自动生成相关问题
- 将多个查询并行检索,合并结果
💡 在 Dify 高级设置中开启“更多类似问题”功能即可。
✅ 技巧 4:重排序(Reranking)
向量检索返回 Top-K 结果后,再用更强大的模型进行二次打分排序。
例如:
- 向量库返回 20 个候选片段
- 使用
bge-reranker
模型重新打分 - 取 Top-3 注入 Prompt
✅ 显著提升最终答案的相关性。
📌 Dify 已集成主流 reranker 模型,可在“检索设置”中启用。
✅ 技巧 5:Prompt 注入优化
即使检索到了正确内容,如果 Prompt 写得不好,AI 也可能视而不见。
推荐模板结构:
请根据以下【知识库内容】回答问题,要求:
- 必须基于文档内容,不要编造
- 如果没有相关信息,回答“暂无资料”
【知识库内容】
{{retrieved_content}}
【当前问题】
{{query}}
【回答】
💡 加上“不要编造”等指令,能有效抑制幻觉。
✅ 实战案例:构建企业级 FAQ 问答系统
我们以某 SaaS 公司为例,构建一个客服知识机器人:
-
上传文件:
产品功能说明.pdf
常见问题FAQ.docx
价格策略表.xlsx
-
设置元数据:
category: pricing
、category: onboarding
-
启用混合检索 + 查询扩展
-
设计 Prompt:
你是 {{company}} 的官方客服,请严格依据知识库回答。
-
测试效果:
- 问:“免费版支持多少用户?” → 正确返回“最多5人”
- 问:“怎么升级到企业版?” → 返回付款链接和流程图
🎯 准确率从 60% 提升至 92%!
✅ 总结:RAG 是 AI 落地的关键一环
环节 | 关键动作 | 工具支持 |
---|---|---|
文档上传 | 支持多格式解析 | ✅ Dify 内置 |
文本切片 | 按标题/语义分割 | ✅ 多种策略可选 |
向量化 | 调用 embedding 模型 | ✅ 支持 OpenAI/BGE/通义 |
检索优化 | 混合搜索、rerank、元数据过滤 | ✅ 全链路支持 |
Prompt 设计 | 引导 AI 正确使用知识 | ✅ 可视化编排 |
知识库不是“有就行”,而是要“用得准”。只有持续优化 RAG 流程,才能让 AI 真正成为你的“超级员工”。
更多推荐
所有评论(0)