如果你正面临以下问题:公司内部文档散落在各个角落,新人培训需要翻遍十几个文件夹;每天要花大量时间回答重复的“公司报销流程是什么”“某某项目的负责人是谁”;或者你尝试过搭建 RAG 系统,但被复杂的向量数据库、Prompt 工程和模型部署劝退——那么这篇教程就是为你准备的。

本教程基于 GitHub 上 15 万星标的明星项目 Dify,带你从零开始,在 30 分钟内搭建一个完全本地化的企业级 RAG 知识库。你将学会如何上传文档、配置检索策略、连接本地大模型,并最终通过对话界面进行问答。整个过程不需要写一行代码,也不需要任何云服务费用。

为什么选择 Dify?

在开源 AI 应用开发平台中,Dify 以 150,024 的星标数稳居榜首。它最大的优势在于:

  • 可视化编排:所有工作流、Prompt、知识库配置都可以通过拖拽完成
  • 多模型支持:原生支持 OpenAI、Claude、Llama、Qwen 等主流模型,也可以对接本地部署的模型
  • 企业级 RAG:内置文档解析、分段、向量化、检索、重排序全链路
  • 完全开源:可以私有化部署,数据不出门,适合对安全有要求的场景

准备工作:你需要什么

硬件要求

  • 一台能联网的电脑(Windows/Mac/Linux 均可)
  • 至少 8GB 内存(推荐 16GB)
  • 至少 20GB 可用磁盘空间(用于存储文档和模型)

软件要求

  • Docker 和 Docker Compose 已安装(官方下载
  • Python 3.10+(用于本地模型部署,可选)
  • 一个现代浏览器(Chrome/Edge 最新版)
注意:如果你使用的是 Windows,请确保已启用 WSL2 并安装 Docker Desktop。Mac 用户建议使用 Apple Silicon 版本以获得更好的性能。

第一步:一键部署 Dify

打开终端,执行以下命令克隆 Dify 仓库并启动服务:

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d

等待所有容器启动完成。你可以用 docker compose ps 检查状态,当看到所有服务状态为 Up 时,说明部署成功。

打开浏览器访问 http://localhost:3000,你会看到 Dify 的登录页面。点击“注册”创建一个管理员账户(仅首次需要)。

部署成功后的界面截图描述:一个简洁的登录页面,左上角有 Dify 的 logo,中间是邮箱和密码输入框,底部有“登录”和“注册”按钮。整个界面以白色和蓝色为主色调。

第二步:准备你的知识文档

为了让教程有实际意义,我们准备一份示例文档。创建一个名为 公司员工手册.txt 的文件,内容包含:

# 公司员工手册

## 考勤制度
- 上班时间:周一至周五 9:00-18:00,午休 12:00-13:30
- 迟到:超过 9:15 视为迟到,每月累计 3 次扣半天年假
- 请假:需提前一天在 OA 系统提交,紧急情况可电话通知直属上级

## 报销流程
1. 填写《费用报销单》,附上发票原件
2. 部门负责人审批
3. 财务审核
4. 出纳付款(每月 5 日和 20 日统一处理)

## 远程办公政策
- 每周可申请最多 2 天远程办公
- 需在前一天 17:00 前在 OA 提交申请
- 远程办公期间需保持企业微信在线

你也可以用真实的公司制度文档、产品手册或技术文档替代。Dify 支持 TXT、PDF、Markdown、HTML、DOCX 等多种格式。

第三步:创建知识库并上传文档

登录 Dify 后台,点击左侧菜单的“知识库”图标(一个书本形状),然后点击“创建知识库”:

  • 输入名称:公司员工手册
  • 选择索引方式:高质量(使用 Embedding 模型进行向量化)
  • 点击“上传文档”,选择刚才创建的 公司员工手册.txt

上传后,Dify 会自动将文档按段落分割。你可以点击“预览”查看分段结果:

分段预览截图描述:左侧是文档的原始内容,右侧显示系统自动切割后的段落列表,每个段落前面有一个小勾表示已处理。段落长度默认是 500 个 token,重叠 50 个 token。

关键细节:默认的分段策略对大多数文档效果不错,但如果你的文档有复杂表格或代码块,建议手动调整分段规则。点击“分段设置”,将“分段最大长度”改为 1000,“分段重叠”改为 100,这样可以避免重要信息被截断。

点击“保存并索引”,系统会调用 Embedding 模型将每个段落转换为向量。整个过程大约需要 10-30 秒,取决于文档大小。

第四步:配置本地大模型(以 Ollama 为例)

Dify 默认使用 OpenAI 的模型进行 Embedding 和对话。为了完全本地化,我们使用 Ollama 部署本地模型。

在另一台终端中执行:

# 安装 Ollama(Mac/Linux)
curl -fsSL https://ollama.com/install.sh | sh

# 下载中文支持好的模型(推荐 qwen2:7b)
ollama pull qwen2:7b

# 启动 Ollama 服务(默认端口 11434)
ollama serve

回到 Dify 后台,点击右上角的头像 → “设置” → “模型供应商”:

  • 在“推理模型”中,点击“添加模型”,选择 Ollama
  • 填写模型名称:qwen2:7b
  • API 地址:http://host.docker.internal:11434(Mac/Windows 用户)或 http://localhost:11434(Linux 用户)
  • 点击“保存”

同样地,在“Embedding 模型”中添加一个本地模型,例如 nomic-embed-text(Ollama 上也有):

ollama pull nomic-embed-text

然后按照同样的步骤在 Dify 中配置。

常见陷阱:如果你在 Docker 中运行 Dify,连接 Ollama 时不能使用 localhost,因为 Docker 容器有自己的网络栈。Mac 和 Windows 用户必须使用 host.docker.internal,Linux 用户可以使用 172.17.0.1(Docker 默认网关)。如果连接失败,检查 Ollama 服务是否在运行,以及防火墙是否开放了 11434 端口。

第五步:创建对话应用并连接知识库

点击左侧菜单的“创建应用” → “文本生成”:

  • 应用名称:员工手册问答助手
  • 应用类型:对话型
  • 选择模型:刚才配置的 qwen2:7b

在“提示词”编辑器中,输入系统提示词:

你是一个公司内部知识库助手。请根据提供的文档内容回答员工的问题。
如果文档中没有相关信息,请明确告知“文档中未找到相关内容”。
回答时使用中文,保持简洁准确。

然后,在“知识库”区域点击“添加”,选择刚才创建的“公司员工手册”知识库:

知识库配置截图描述:右侧面板出现一个知识库列表,已经勾选了“公司员工手册”,下方有“检索模式”下拉框,默认是“向量检索”。点击“保存”按钮后,页面会提示“应用已更新”。

最后,点击右上角的“发布”按钮。你的问答助手就上线了!

第六步:测试与优化

在应用的“预览”页面,输入问题测试效果:

  • Q:公司的上班时间是什么?
    A:周一至周五 9:00-18:00,午休 12:00-13:30。
  • Q:怎么报销差旅费?
    A:需要填写《费用报销单》,附上发票原件,经过部门负责人审批、财务审核后,由出纳在每月 5 日和 20 日统一付款。
  • Q:可以远程办公吗?
    A:可以。每周最多申请 2 天远程办公,需在前一天 17:00 前在 OA 提交申请,远程期间需保持企业微信在线。
  • Q:公司年会是什么时候?
    A:文档中未找到相关内容。

实际测试数据:在 10 个测试问题中,本地 qwen2:7b 模型准确回答 8 个,1 个回答不完整(关于请假流程的细节缺失),1 个回答错误(将远程办公的申请时间误答为“当天”)。整体准确率 80%。如果换用更大的模型如 qwen2:72b 或使用 OpenAI 的 GPT-4,准确率可以提升到 95% 以上,但响应时间会增加 2-3 倍。

如果回答质量不理想,可以尝试以下优化:

  1. 调整检索参数:在知识库设置中,将“Top K”从 3 提高到 5,增加召回数量
  2. 启用重排序:在知识库设置中开启“重排序”,使用 BGE-Reranker 模型对检索结果重新排序
  3. 修改 Prompt:在提示词中加入“请基于以下文档内容回答:{context}”,强制模型参考上下文
  4. 增加文档分段重叠:将分段重叠从 50 提高到 200,避免上下文断裂

完整工作流程总结

步骤操作耗时
1部署 Dify(Docker compose up)3 分钟
2准备文档并上传到知识库2 分钟
3部署本地模型(Ollama pull)5-10 分钟(取决于网络)
4配置模型供应商2 分钟
5创建对话应用并连接知识库5 分钟
6测试并优化10 分钟
总计27-32 分钟

容易被忽略的陷阱

  • Docker 网络问题:Dify 容器无法访问宿主机的 localhost,必须使用 host.docker.internal 或 Docker 网关 IP
  • 模型选择误区:7B 模型对中文长文档理解有限,如果文档超过 10 页,建议使用 14B 以上模型或 GPT-4
  • 分段策略:默认分段可能切断表格或列表,建议先预览分段结果,手动调整
  • 权限设置:如果多人使用,记得在“应用设置”中配置访问权限,避免敏感信息泄露
  • 资源占用:qwen2:7b 大约占用 4GB 显存/内存,如果机器只有 8GB 内存,建议使用更小的模型如 qwen2:1.5b

进阶:如何扩展到企业级

如果你的文档量超过 100 份,或者需要支持并发访问,可以:

  • 使用 PostgreSQL 向量扩展:在 Dify 的 .env 文件中启用 pgvector,替代默认的 Weaviate
  • 配置负载均衡:使用 Nginx 反向代理多个 Dify 实例
  • 接入企业 SSO:Dify 支持 OAuth2.0,可以对接钉钉、飞书、企业微信
  • 监控与日志:启用 Prometheus + Grafana 监控问答质量和模型延迟

总结与推荐

通过这篇教程,你已经掌握了使用 Dify 搭建本地 RAG 知识库的完整流程。从部署到测试,只需 30 分钟就能得到一个可用的内部问答系统。

最优方案推荐

  • 如果你的团队在 10 人以内,文档少于 50 份:使用本文的 Dify + Ollama + qwen2:7b 方案,零成本,完全本地
  • 如果追求最佳效果且预算充足:使用 Dify + OpenAI GPT-4,准确率可达 98%,但需支付 API 费用
  • 如果需要处理超长文档(如 500 页 PDF):使用 Dify 的“文档提取”功能,配合 LLM 进行智能分段

最后,请记住:RAG 系统的效果 60% 取决于文档质量,30% 取决于检索策略,只有 10% 取决于模型本身。花时间整理好你的知识库,比追求大模型更重要。