Dify 适合解决什么问题

如果你需要的功能是:上传一批内部文档,让同事能用自然语言提问并得到带出处的回答——那么从零写一套 RAG 系统性价比很低。向量库选型、文档解析、分块策略、召回排序、提示词组装、前端界面,每一块都有坑。

Dify 把这些环节做成了可视化配置。你负责决定分多大块、用什么检索方式、Prompt 怎么写,它负责把流程跑通。

第一步:环境准备

最低配置建议:2 核 CPU、4GB 内存、50GB 磁盘。知识库文档量大时内存需求会明显上升,建议 8GB 起步。

安装 Docker 与 Docker Compose 插件。Linux 下确认服务已启动:

docker version
docker compose version

两条命令都有正常输出即可。Windows 环境建议用 Docker Desktop 并开启 WSL2 后端,性能比传统 Hyper-V 模式好很多。

第二步:拉取并启动

获取源码:

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env

启动:

docker compose up -d

首次启动会拉取多个镜像,视网络情况需要几分钟到十几分钟。完成后检查容器状态:

docker compose ps

所有容器状态应为 Up。若有容器反复重启,大概率是端口占用或内存不足。

随后访问本机 80 端口进入初始化页面,设置管理员账号。注意:这是内网服务的管理员账号,密码请务必设置得复杂一些。

第三步:配置模型供应商

进入设置页面,需要配置两类模型:

  • LLM:负责生成回答。可选在线厂商 API,也可接入本地 Ollama 上的开源模型
  • Embedding 模型:负责把文本转成向量,知识库检索质量几乎全靠它

关键提醒:Embedding 模型一旦选定并开始导入文档,中途更换就必须清空知识库重建索引。所以这一步要想清楚,别图省事随便选一个,后面返工成本很高。

如果需要完全离线,用 Ollama 同时提供 LLM 和 Embedding,配置时填内网地址即可,注意容器网络要能访问到宿主机服务。

第四步:建立知识库

创建知识库后导入文档,重点在分段设置:

  1. 通用文档:选自动分段,块大小 500 到 800 字符较为稳妥,重叠 50 到 100 字符
  2. FAQ、条款类:按行或按条目分段,保持每条语义完整,避免两个问答被切进同一块
  3. 结构化表格:转为 Markdown 表格再导入,直接上传 Excel 容易导致行列关系丢失
  4. 长报告:先人工拆成章节文件再导入,比让系统自动切效果好

索引方式推荐选高质量索引(向量检索),经济索引成本低但召回精度差距明显。如果知识库规模在一万块以内,直接上高质量索引。

第五步:建应用并调检索策略

创建聊天助手应用,关联刚建好的知识库。检索设置里有几个关键参数:

  • 向量检索:语义匹配好,能理解同义表述,但精确关键词匹配弱
  • 全文检索:关键词精确,适合型号、编号、专有名词查询
  • 混合检索:两者结合,实测在多数场景下召回效果最好,优先选这个

然后调 Top K(返回多少条候选)和 Score 阈值(多低分的结果直接丢弃)。初始建议 Top K 取 3 到 5,阈值设 0.5,再根据测试情况微调。

第六步:写 System Prompt 并做引用控制

默认 Prompt 往往过于宽松,模型容易脱离知识库自由发挥。建议明确加约束:

你只能基于下方提供的知识库内容回答问题。
如果知识库中没有相关信息,直接回答 知识库中未包含此信息,不要凭常识编造。
每条结论后用方括号标注来源文档名。
禁止把你的推测当作原文事实陈述。

这条约束是知识库应用能否被真正信任的分水岭。允许模型编一句,用户就会对所有回答失去信任。

第七步:发布与嵌入

发布后有三种使用方式:网页直接访问、iframe 嵌入内部系统、通过 API 调用接入自有业务。嵌入时注意同域与跨域配置,API 调用需要在设置里生成密钥并在请求头中带上。

常见问题与误区

  • 问:文档传完了但问不出内容?先看索引状态是否完成,再看检索测试结果是否有命中。如果检索测试就召不回,说明是分段或 Embedding 问题,不是模型问题。
  • 误区:块切得越小越准。块太小会丢失上下文,一句话孤立存在时语义不完整,反而降低召回。一般不要低于 300 字符。
  • 问:回答慢怎么办?瓶颈通常在 LLM 生成而非检索。换更快的模型或开启流式输出,体感改善明显。
  • 误区:知识库建好就不用管。文档更新后需要重新索引,否则回答的是旧版本内容。建议把更新流程写进团队规范。
  • 问:端口冲突怎么处理?修改 .env 中的端口映射后重新启动,注意同时调整防火墙规则。

效率数据与实测结论

以一个 300 份产品手册、约 40 万字的中等知识库为例:从零部署到应用上线约 1.5 小时,其中环境准备和镜像拉取占 40 分钟。知识库索引耗时约 12 分钟。上线后实测,人工查找答案平均 4 分钟/次,系统回答平均 8 秒,且附带出处便于核对。

真正决定成败的不是部署,而是分段策略和 Prompt 约束。同样的部署流程,分段粗糙的版本准确率不足一半,认真调过的能到九成以上。这部分工作没有任何工具能替你做。