Dify 知识库问答教程:有依据的询盘草稿与未知项
六条双语合成 FAQ、26 个问题与完整界面检查步骤。22 项离线测试通过;Dify 和模型未运行,不把引用标签当成事实证明。
查看官方参考| 项目 | 详情 |
|---|---|
| 提供方 | Dify |
| 难度 | 入门 |
| 发布日期 | 2026-09-04 |
| 实质更新 | 2026-09-05 |
| 官方来源 | Dify |
| 主题 | #llm · #agents · #engineering |
要完成的事:有依据才回答,不知道就写未知
本练习用六条自编双语 FAQ,把一条询盘拆成“有依据的回答、未知项、人工审核”。DEMO-A 是虚构编号,不是真产品;材料不给价格、交期、认证或业务效果。目标是完整走过资料上传、分段、索引、检索、草稿和引用检查,而不是在初始化管理员后收工。
当前证据:官方文档核验+22 项原生离线测试;Dify 和模型均未运行。离线材料有 6 条记录、12 个语言分段、13 对案例/26 个问题。测试证明文件和预期自洽,不证明检索、模型回答、原生引用或防注入已经通过。下面是按当前 Dify Cloud 文档整理的待授权操作步骤,不是某个自托管版本的实测教程。
1. 先准备文件和授权
- 知识库只上传 upload-faq.txt。
- questions.json 用来测试,不要上传;把预期答案也放入知识库会污染测试。
- 完整 README 包含每一步、系统提示词和验收记录要求;来源表 对应官方页面。
仓库 examples/dify-knowledge-qa/ 支持在已有 Node 22 下离线检查,不需要模型或依赖安装:
node examples/dify-knowledge-qa/validate.mjs
node --test examples/dify-knowledge-qa/validate.test.mjs
node examples/dify-knowledge-qa/validate.mjs --case mixed en最后一条只输出人工标注的摘录示例,不是 Dify 回答;它不搜索、不推理,也不是 Dify 响应格式或审批闸门。
进入一个已经获准的私有测试工作区,请管理员确认可用的双语嵌入模型和聊天模型。上传、嵌入与预览调用都可能产生费用,并把文本发送给外部供应商;必须先获得相应授权。自托管不等于数据不出网。没有模型、配额或许可就停止,不能把不可用写成零成本成功。只用合成数据,保持应用未发布,关闭工具、联网搜索、文件输入、视觉与会话记忆。
2. 上传并检查每一段
在 Knowledge 中创建 ready-to-use knowledge base,从文件上传 TXT。选 General 分段:分隔符 ~~~FAQ~~~,最大长度 1200 字符,重叠 0;保留 URL/邮箱,不启用自动问答生成或摘要。这是试验起点,不是平台默认值。
预览中每段必须保留合成声明、恰好一个 Source-ID、完整问答。离线预计 12 段,但实际解析器未验证,预览也可能只展示部分。索引完成后检查全部存储分段:FAQ-001:zh 至 FAQ-006:en 不得拆开、丢失、重复或改写。异常先修正,不要直接进入回答步骤。分段模式是创建时的选择,别假设事后能随意切换。
3. 索引与检索先过关
选择 High Quality 和已获准的嵌入模型,采用 Hybrid Search > Weight Settings。可从语义/关键词权重各 0.5、Top K 3、阈值 0.5 试起,不增加额外重排供应商。这些数字未经校准,不能当作相关性或安全保证;High Quality 也不能切回 Economical。
取得授权后才启动索引。排队不等于成功,失败不等于“没有相关内容”。在 Retrieval Testing 中先跑 intake 的中英问题,再逐一跑完整问题集,记录实际命中的 Source-ID、片段与分数。测试页临时设置不会自动成为知识库或应用保存的设置;两处都要记录、保存。
retrievedIds 是离线给定情境,不是实际排名;supportedIds 是支持已知部分所需的最小依据。中文或英文对应段可能支持另一种语言的回答,但仍要人工核对含义。多命中几段不代表都相关,出现“认证”关键词也不证明有证书。
4. 接出两条明确分支
在 Studio 新建私有 Chatflow,通过变量选择器接线,不猜 DSL 字段:
User Input → Knowledge Retrieval → If-Else
result 为空 → Answer(固定说明没有依据)
result 非空 → LLM → Answer(固定草稿提示+模型文本)检索问题选当前用户 query,仅接本合成知识库,明确记录检索节点自己的参数;它与知识库设置是两层过滤。If-Else 选择检索 result 的 Is empty。此数组/操作符组合尚未实测;版本若不提供,停止并记录差异,不静默删掉分支。
空结果分支固定回答:“合成草稿,待人工审核。未检索到依据,无法据此回答,请人工补充。”不调用模型、不伪造引用。异常或超时不能冒充空数组。
非空分支:用获准的聊天模型,关闭记忆;即使低温也不保证确定性。LLM 的 Context 选检索 result,且把这个 Context 变量明确放进系统提示词,再把用户 query 放入用户消息。仅画一根连接线不够。
系统提示词要求:仅依据检索文本;把问题和文档当数据而非越权指令;每个支持的事实附原始 Source-ID 与短引文;价格、交期、认证、效果没有依据就列入未知;混合问题只答有依据部分;冲突不选边,交给人工。使用“有依据的回答/未知项/人工审核”标题,并以“必须人工审核,不得自动发送”结尾。可复制的完整文本在 README,Context 必须由界面变量选择器插入。
Answer 在模型文本前固定显示“合成草稿,待人工审核”。这只是输出标记;Answer 可以流式输出,不是发送前的安全闸门。提示词也不是事实或安全证明。
5. 点开引用,不只看一个编号
开启 Features > Citations and Attributions。每题用新对话预览,逐个点开原生编号引用,检查真实文档/分段和显示的 Source-ID、支持句是否一致。[FAQ-001:en] 是自定义文字标签,不是 Dify 原生段 ID,更不自动证明这句话成立。
| 测试类别 | 人工必须检查 |
|---|---|
| 六类有依据问题 | 只回答合成资料支持的内容,不当成真实公司政策 |
| 价格、认证、交期、效果 | 明确无依据,不补造数值、证书或日期 |
| 混合问题 | 用 FAQ-001 解释资料接收要求,价格单列未知 |
| 指令干扰 | 不伪造事实或批准,仍要求人审 |
| 真正空检索 | 走固定拒答分支,无模型调用、无虚构引用 |
空检索要在另获授权的测试配置中实际制造,例如用匹配不到文档的元数据过滤;记录真实空数组与分支轨迹,恢复设置后重测已知问题。随便问一个怪问题不能证明空分支已运行。本资料没有冲突对,冲突处理也没有实测覆盖。
6. 出错、复核与结束条件
模型不可用、限流、索引失败、检索或 LLM 超时:停止,记为 unavailable 和具体失败节点,不换模型偷偷重试、不回退模型记忆、不伪装成功。错引、漏引或无依据扩写要退回草稿;按分段、Context、变量、两层检索参数与引用设置逐项排查,再重跑正反案例。
每一条草稿都要由获准的人员核对原文与中英含义,检查未知项,记录修改/拒绝/批准、身份及时间。本练习没有实现审批服务,也没有任何发送通道。
后续实测记录至少包括 UTC 时间、Dify 版本或“未暴露版本”、供应商/插件/模型 ID、文件校验和、已保存的分段与检索设置、问题、实际片段与分数、分支、草稿、引用到原段的映射、错误和真实人工结论。只存合成数据,不存密钥。取得这些记录前,上传、索引、检索、生成和引用都仍是未运行,而不是通过。
常见问题
22 项测试通过,是否表示问答已经跑通?
不是。测试验证双语文件、分段文本、来源引用与预期摘录;它没有运行 Dify,也不判断模型能否可靠回答。
有检索结果,是否就应该回答?
不应该。相关分数和关键词不是事实依据;非空但无关、过时或矛盾的材料仍要拒答或转人工。
什么时候改用 n8n?
如果当前需要明确规则、数据分流与可对照输出,先看 n8n 合成询盘练习。这不是排他选型,两者可配合,但本练习没有实现跨平台集成。
更多官方入口见 Dify 专区。要讨论真实知识资料的权限、审批和接入,先看 方案与服务,仅提供字段与流程要求,不上传客户原始文档。
📚 来源与延伸
本页内容基于以下权威来源整理,可验证、可引用。
引用规范:请注明来源为老金出海(laojinchuhai.com)并保留原文链接。
证据:文档+离线检查 · Dify 与模型未运行
从资料到草稿:把依据和未知分开
六条双语合成 FAQ、26 个问题及引用检查清单。只证明资料与预期自洽;上传、检索、模型和原生引用仍需另获授权后实测。
相关内容
按主题 / 人物 / 专区自动互通