
做数据治理的人大概都经历过那种翻箱倒柜式的查证业务同事拿着一份数据字典来问某个字段属于哪个分级、该由哪个部门负责你得同时打开制度文件、分级标准、流程说明三份材料才能拼出完整答案。这期 Dify 入门系列我直接把 RAG 实战讲透——用 Dify 搭一个数据治理知识库把制度文档变成能问答、能溯源、能随时更新的智能助手。适合正在做数据治理、数据资产管理或者刚接触 Dify 想快速落地知识库问答的人。我会沿着文档准备、建库上传、检索调优、应用编排、日常维护这条实际操作路径一步步拆解所有参数和踩坑点都来自真实项目经验。1. 为什么说数据治理是 RAG 落地最典型的场景之一1.1 先想清楚 RAG 到底解决什么RAGRetrieval-Augmented Generation检索增强生成这两年快被说烂了但很多人对它的理解还停留在给大模型配个外挂资料库。更准确地说RAG 解决的是大模型在知识密度高、答案要求严谨、内容又经常变动的场景下如何基于资料作答的问题。我用一个类比来理解闭卷考试和开卷考试。直接问大模型相当于闭卷考试它只能靠训练时记住的东西回答答错了你也不知道它是从哪句话推理出来的这种自信的胡说放到数据治理场景里非常危险。RAG 是开卷考试先检索到相关的制度原文再让模型基于检索片段组织答案答案后面能附带原文位置相当于引用出处。这个区别决定了 RAG 适合处理哪类问题问题答案不在模型脑子里而在你手头的文档里同时答案错误有代价不能瞎编。数据治理恰好两个条件都满足。1.2 数据治理内容的特点刚好匹配 RAG 的能力边界我做过的数据治理项目里知识资产通常长这样数据分级分类管理办法、数据标准规范、数据质量规则、元数据字典、权限管理流程说明、应急预案外加一堆零散的会议纪要口径确认。这些文档的特点是总量不大但单份内容很长结构性强按章条划分术语不统一业务叫法和技术定义经常对不上更新频繁每年都有新制度发布或旧条款修订。这样的内容如果直接丢给大模型做普通问答结果必然是政策条款背不准、口径前后矛盾、引用出处找不到。而 RAG 的检索环节把答案来源锁死在文档库内模型只能在你划定的范围内发挥表达组织能力合规性就大大提高。数据治理的岗位性质决定了你不能拍脑袋回答业务问题特别是数据分级这种事关合规的判定必须拿制度原文说事。1.3 为什么不上微调很多人会问直接微调一个模型专门学这堆制度不是更聪明从成本上算一笔账就明白了。数据治理制度文档一年改好几版每改一次就要重新准备训练语料、跑一轮微调、做评估。按目前微调的人力投入来算一个小团队根本维护不起。而且微调后的模型依然答不出这句话出自哪个制度的第几条——它学到的是文字规律不是带位置引用的知识条目。RAG 没有这个问题文档更新直接替换知识库里的文件重新索引就行了模型本体不动。这也是我在实际项目里坚持用 RAG 而不是微调处理治理类文档的核心理由知识是可插拔、可追溯、可回滚的。1.4 Dify 在这套链路里替你做了哪些脏活自己从零写一个 RAG 系统你得处理文档解析、分段、向量化、检索、重排序、提示词编排这么一串环节。Dify 这类平台的价值不是把链路变简单而是把链路里最容易出错的脏活变成了可视化操作上传文档帮你解析分段选好 Embedding 模型自动向量化知识库和对话应用之间一键关联每个环节都有调试入口。这期的主角就是 Dify 的知识库Knowledge Base模块。我会沿着一条完整的落地路径走一遍从文档准备到建库上传到检索调优到应用编排最后聊日常维护。你可以把它当成一份可以直接照着操作的检查单。2. 物料准备哪些文档能进知识库哪些不能2.1 先筛选再入库别把知识库当成垃圾桶很多第一次建知识库的人第一反应是把我手头所有资料都传上去。这是个非常危险的冲动。知识库的质量直接决定问答质量而知识库的质量在文档进库的那一刻就基本定型了。你传进去一份质量很差的扫描件、一份过期的制度版本后面检索调优做得再精细它也是污染源。我在做某中型企业的数据治理知识库时先花了整整两天做语料筛选和清洗。最终的入库清单大概是这样的结构正式制度类数据分级分类管理办法、数据安全管理规范、数据质量考核办法——这类是核心必须有完整原文。标准口径类数据字典、指标口径说明、编码规范——负责统一术语。流程操作类权限申请流程、数据共享审批流程、应急预案操作手册。高频问答类业务部门常问的某某字段怎么定级离职人员账号多久回收这类问题历史上都有确认口径整理成 QA 文档效果极好。2.2 哪些文档不能直接进我用一张表总结一下常见的入库判断方便你对照手里的文件做决定文档特征是否适合直接入库说明带章条的正式制度 PDF适合但要做解析检查文字型 PDF 可直接解析扫描件必须先 OCR表格密集的 Excel 数据字典慎入需要转换表格解析后容易丢失列关系建议转成表格 Markdown明文带版本号的旧制度看情况建议先归档旧版本应单独隔离避免和现行版本混淆涉敏名单、真实账号密码绝对不能入知识库本质是检索服务越权暴露风险很高聊天记录、邮件截图不建议噪声多、口径不统一检索效果差扫描图片、照片白板不建议除非 OCR 质量高文字错了检索就废了2.3 清洗和格式化决定检索上限的隐性工作文档格式对 RAG 效果的影响远比很多人以为的大。Dify 内置的分段机制会把长文本切成若干片段但在哪个位置切取决于文档自身的结构。如果文档本身是排版混乱的 Word 转 PDF分段时很容易把一个条款从中间切断。我的经验是正式制度文件尽量转成 Markdown 或带标题结构的文本再上传。Markdown 的标题层级对 Dify 来说是很友好的分段参照。数据字典这类结构化的表格我会先把它转成每个表一行说明 字段清单列表的结构化文本而不是直接丢一个上千行的 Excel 进库。另外要处理几个细节去掉每页重复的页眉页脚避免检索时反复命中无意义内容统一半角全角符号把第一条、第二条这类条款编号保留完整因为后续问答很可能以条款编号作为检索线索。2.4 一个实际的语料清单参考我上一个项目里最终入库的是 40 多份文档被拆成了 2000 多个分段。结构上我没有把所有文档混在一个库里而是按治理制度数据字典流程规范QA 口径分了四个知识库。这样做的原因后面会讲——多个知识库在应用里可以分别设置召回权重比一个巨型知识库灵活得多排查问题也更容易。3. 从上传到分段Dify 知识库创建的完整操作路径3.1 动手前的两个前置条件第一个是确认 Dify 版本和部署方式。社区版和云版本在知识库功能上没有本质差异但涉及私有化部署的同学要注意知识库的向量索引会占用较大存储空间Embedding 模型的调用也要有稳定的网络出口。第二个是准备好大语言模型和 Embedding 模型的 API Key。在 Dify 的设置-模型供应商里先配好模型创建知识库时才能选到 Embedding 模型。这里特别提醒知识库用的 Embedding 模型最好和对话应用里的大模型分开考虑。Embedding 模型决定的是文档片段在向量空间里的排布方式它对检索召回的影响甚至比主模型还大。我习惯选开源 Embedding 模型因为效果稳定、费用可控而且后续如果想切换更换模型的成本相对小。3.2 创建知识库时的两个关键选择在 Dify 里点知识库创建知识库会先让你做两个选择。第一个是索引方式高质量模式还是经济模式。高质量模式会调用 Embedding 模型对每个分段做向量化检索时按向量相似度召回效果好但消耗 API 额度经济模式基本就是关键词匹配省资源但效果差距明显。做数据治理这种对准确率要求高的场景没有悬念直接选高质量。第二个是分段设置。Dify 默认的分段长度在 500 个字符左右分段重叠 50 个字符左右。这里我建议不要直接照搬默认值要根据你的文档结构调整。我常用的参数是参数默认值数据治理文档建议调整理由分段长度500 tokens300-500治理条款通常一两条构成一个语义单元太长了会把相邻不相关条款捆在一起分段重叠50 tokens80-120重叠太少会切断跨段的上下文适中可以让关键词命中更稳自定义分段标识关闭开启按 Markdown 标题/条款编号切制度文档有章条结构按自然边界切比按长度切好上传文档后在分段规则里可以选择是否用自定义分段标识符。对有明确章节结构的制度 PDF我强烈建议开启分段标识用正则表达式匹配第 X 条 / X.X / ## 标题这类位置。这样切出来的分段每个片段几乎都自带语义边界后续问答的准确率会有明显提升。3.3 分段质检入库后必须做的一件事很多人上传完文档看到处理完成就以为大功告成这是要吃亏的。在 Dify 的知识库分段列表里可以查看每个分段的具体内容。我每次入库后都会随机抽查一部分分段重点看三件事第一分段是否把一句话从中间切断。如果一段结尾是个逗号、一段开头是个动词说明分段边界没选对要么缩短分段长度要么开启自定义分段标识。第二表格内容是否变形了。数据字典这类文档最容易出现列错位发现后我会回到原料阶段重新转换成结构文本再传。第三页眉页脚是不是混进了正文。如果检索时经常命中第 X 页 共 Y 页多半就是清洗没做干净。在分段列表里可以直接编辑分段内容合并、拆分、删除、加标签。这一步虽然繁琐但它是后期检索调优的基础值得认真花时间。4. 检索调优为什么明明有内容却回答不出来4.1 三种检索方式别只会用向量检索知识库建好了不代表答案就能被正确找到。检索效果不好最常见的现象是人眼明明看到知识库里有答案但问答时模型说未找到相关信息。这不是模型笨而是检索环节没把相关片段捞出来。Dify 在检索设置里提供了几种召回策略向量检索、全文检索、混合检索。我简单说下各自的使用场景检索方式原理适合场景弱点向量检索把问题和分段都转成向量算相似度语义相近但用词不同的查询对专有名词拼写、精确编号不敏感全文检索关键词匹配需要精确命中条款编号、术语同义改写能力弱换个说法就漏混合检索两者结合 权重配比治理制度问答的最佳起点需要额外调参回调噪声变大在数据治理场景里用户的问法往往和制度原文措辞对不上。比如制度里写核心数据资产业务同事问的是重要数据字段制度里写数据分级同事问的是密级怎么定。语义差异让纯全文检索失灵术语改写又让纯向量检索产生候选偏差。所以我一般从混合检索起步再用重排序把相关性不高的片段压下去。4.2 TopK 和召回阈值怎么调召回数量TopK决定每次取几个片段给大模型当参考。设太小比如 2只要前两段都不是目标答案后面再相关也没机会设太大比如 10模型会被一堆不相关的内容干扰乱花渐欲迷人眼。我的起步值是 5也就是说默认召回 5 个候选片段。如果发现答案不稳定我会先在召回测试里看前 5 个片段的排序是否合理。另外 Dify 还支持设置召回分数阈值低于阈值的片段会被过滤。这个阈值调起来要小心设太高会把正确答案过滤掉设太低又等于没设。建议根据测试结果来回调整先设在 0.3 左右观察正确片段的最低分再把它当作边界。4.3 重排序模型提高精度的关键一步如果混合检索后TopK 里老是混进看着相关、实际无关的分段就需要重排序Rerank模型介入。它的原理是把检索出的候选片段和用户查询再做一次精细化打分把真正相关的片段排在前面。Dify 里配置重排序模型后可以把它加进检索链路。我的经验是治理制度库加和不加 Rerank准确率体感差距非常大。不加的时候前几名经常是踩中同一关键词的多个相似条款加了之后模型能根据上下文的语义相关性把最匹配的那一条顶上来。重排序模型调的 API 额度比 Embedding 贵但换来的是答案可靠性的提升对数据治理这种正确性优先的场景这笔钱值得花。4.4 用召回测试定位问题Dify 知识库详情页有召回测试功能可以输入一个问题直接看哪些分段被召回、各自的相关度分数、命中的内容片段。排查检索问题时我养成了这样一个工作习惯先输入真实业务问法比如异地备份的数据要按什么标准存储看召回结果里有没有预期片段。如果没有换用制度原文里的规范化术语再测一次比如数据异地存储规范。两次结果对比就能判断是语义匹配问题还是内容缺失问题。如果加了规范化术语依然召回不到大概率是文档本身没解析好或分段切错了回到源头处理。如果规范化术语能召回但口语问法不行就考虑加同义词扩展——在分段编辑里给关键词补几个业务叫法效果立竿见影。我踩过一个很典型的坑某个项目里数据分类和数据分级是两个不同的概念制度里分别有章节。业务提问这个字段属于什么分类分级两个片段都能召回但重排序老把分类排到分级前面。最后我是在 QA 口径文档里手动新增了一条解释两者关系的问答分段才彻底解决排序混乱的问题。这说明调检索不是只调参数知识库的内容结构也要跟着打磨。5. 应用编排把知识库接进对话应用里5.1 创建对话应用并绑定知识库在 Dify 里点创建应用选择聊天助手或工作流应用。我个人建议如果只是做内部问答聊天助手足够如果要在回答前做多路召回、人工审核、结果结构化再上工作流。无论哪种在应用的上下文里把刚才建好的知识库关联进去这是把知识库接到应用上的关键一步。关联知识库时可以设置每个知识库的召回权重。我习惯把治理制度设在最高数据字典次之QA 口径再次——这样问题是制度层面的优先命中规范原文问题是字典字段的才落到数据字典。多个知识库的召回权重怎么调全靠自己项目的问答日志反馈去迭代没有一劳永逸的公式。5.2 系统提示词决定了模型怎么答提示词是一份可读性很强的岗位说明书。数据治理知识库应用的提示词我一般会写成这样的结构你是一个企业数据治理知识库问答助手。你的职责是严格根据提供的知识库内容回答问题。 回答要求 1. 只依据上下文中的制度原文回答禁止编造制度条款或数据口径。 2. 优先引用原文的章节编号例如根据《数据分级分类管理办法》第三章第5条。 3. 如果上下文不足以回答明确回答知识库中没有找到相关信息并建议咨询数据管理部门。 4. 回答简洁先给结论再补充依据。 5. 涉及多个相关条款时逐条列出并在每条结尾标注来源。这段提示词的要点是把不能编造放在最前面把引用来源变成硬性格式要求。大模型确实很擅长一本正经地胡说你不明确禁止就会自由发挥。另外我建议在提示词里不要写太多业务细节业务规则尽量都放进知识库提示词只负责约束行为边界。否则同一套规则两处维护迟早要打架。5.3 模型参数和引用开关聊天应用里的模型参数要单独调。知识库问答场景中温度Temperature在 0.2 左右比较合适。温度太高模型会对检索到的内容做太多创造性改写甚至把不同条款混在一起调低后输出会尽量贴着原文走措辞可能生硬一点但正确性优先。Dify 支持为每次生成附带引用来源需要在前端把引用组件打开同时在提示词里要求答案标注来源。开启后回答下方会展示命中的分段内容用户可以直接点击查看原文。这个功能不只是体验上的加分项它能让业务人员自己核对答案出处减少对 AI 结果的不信任感。5.4 上线前的测试检查清单应用搭好后不要急着给业务同事用。我会先把高频真实问题填入测试跑一遍完整流程重点检查下列场景制度条款类问题是否给了原文依据和章节编号。交叉地带问题多个知识库都命中时答案是否逻辑统一。超纲问题知识库里确实没有的问题是否会诚实回答未找到而不是强行编造。敏感问题涉及具体名单、账号密码的提问是否被拦截或引导走线下流程。每个用例都要记录问题-答案-引用来源-评价攒成一份评估集。后续每次改提示词、调检索参数都拿这份评估集回归一遍这是保证知识库应用长期可用最实际的办法。6. 运行实测与维护别忽视知识本身的时效性6.1 知识库不是建完就结束的一次性工程RAG 应用上线只是开始真正的维护工作在后头。数据治理的制度隔一段时间就会修订新制度发布、旧条款废止如果知识库里还留着旧版本模型就会新旧制度混着答这是最容易出事故的隐患。我上线后的维护节奏大致是每次制度有更新先在知识库里定位到受影响的分段用新内容替换旧内容并在分段标签里标注生效日期对废止的文档在知识库里禁用而不是删除保留历史追溯能力每月跑一遍评估集看哪些问题的答案因为文档变化而漂移。6.2 Dify 的知识库更新操作建议Dify 的文档支持更新、删除、新增三个基本操作。更新文档时系统会重新解析并重新分段原有的分段标注会被覆盖。我的习惯是更新前先在本地备份旧文档更新后立刻做一轮分段质检防止解析结果变化导致分段质量下降。另外同一个文档的不同版本我建议不要全塞在同一个知识库里更不要嫌麻烦不标注版本号。你可以在分段内容或文档名里带上版本和日期检索时即使命中多个版本提示词里也能通过默认采用最高有效版本这类规则来约束。6.3 权限和可见范围容易被忽略的一环知识库本质上是可检索的资产库权限控制不能马虎。Dify 里可以配置知识库的可见范围和应用权限建议按最小授权原则设置谁负责维护哪个知识库谁有权限在应用里引用它都要明确下来。数据治理知识库里往往有涉敏的口径说明权限一旦配错就不是技术事故而是管理事故了。我见过不止一次因为权限配置不当把内部治理口径暴露给不相关人员的教训。上线前权限这块必须单独检查一遍特别是多个部门共用同一个 Dify 环境的情况。6.4 我个人的一点维护体会最后聊点实在的。做了几个知识库项目之后我的体会是RAG 的瓶颈从来不在模型参数而在知识治理本身。你花在文档清洗上的两三天会在后续每一次问答的准确率上得到回报。反过来如果你上来就急着把文档丢进去后面所有时间都会耗在跟答非所问搏斗上。我的建议是从一个小范围的高质量知识库开始比如先只做数据分级分类一个主题把检索调优和提示词打磨顺了再逐步扩展其他主题。一次覆盖太广问题来源太多出了问题你都定位不到是哪份文档哪段内容在捣乱。知识库和人的成长一样慢慢喂、持续维护才会越来越靠谱。