跳转至

Dify:构建你的 AI 知识库与智能体

如果说 Ollama 是 AI 的“引擎”,那么 Dify 就是 AI 的“操作系统”。它允许你通过可视化界面,轻松构建 RAG(检索增强生成)知识库、AI Agent(智能体)和复杂的工作流,无需写一行代码。

为什么选择 Dify?

  • 可视化编排:拖拽式创建 AI 应用,支持 GPT-4, Claude 3, Llama 3 等所有主流模型。
  • RAG 知识库:上传 PDF/Word 文档,AI 自动切片、向量化,实现基于私有数据的问答。
  • Prompt 调试:专业的提示词工程调试界面,实时对比不同模型的输出效果。
  • API 发布:一键将你的 AI 应用发布为 API,集成到微信、飞书或自己的网站中。

1. 部署 Dify (Docker Compose)

Dify 包含多个组件(后端 API、前端 Web、数据库、缓存、向量数据库等),因此部署稍微复杂一些。

准备目录

在 NAS 上创建 /volume1/docker/dify 目录。

下载官方配置

SSH 进入该目录,下载官方 docker-compose.yml

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

修改配置 (.env)

使用文本编辑器修改 .env 文件: * APP_URL: 修改为你的 NAS IP 或域名,例如 http://192.168.1.100:80。 * NGINX_PORT: 默认为 80,如果冲突请修改(如 8088)。 * DB_PASSWORD: 修改数据库密码,增加安全性。

启动容器

docker compose up -d
注意:第一次启动会拉取多个镜像(api, web, worker, db, redis, weaviate, sandbox...),请耐心等待。

2. 核心配置流程

容器全部启动后(通常需要 2-5 分钟),访问 http://nas-ip:80(或你修改的端口)。

2.1 初始化管理员

  1. 设置管理员账号(邮箱)和密码。
  2. 登录进入 Dify 工作台。

2.2 接入模型 (Model Provider)

Dify 支持多种模型来源: 1. OpenAI/Anthropic: 点击右上角头像 > 设置 > 模型供应商,填入 API Key。 2. Ollama (本地模型): * 如果你的 Ollama 部署在宿主机(Host)或其他容器,Dify 容器内无法通过 localhost 访问。 * 方法:填写 http://host.docker.internal:11434(如果 Docker 版本支持)或 http://172.17.0.1:11434(Docker 网桥 IP)。 * 模型名称:手动输入 llama3qwen2(必须与 Ollama 里的名字一致)。

3. 实战:搭建企业级知识库 (RAG)

想让 AI 回答公司内部规章制度? 1. 创建知识库:点击顶部 知识库 > 创建知识库。 2. 上传文档:支持 PDF, TXT, Markdown, Notion 等。 3. 分段与清洗:Dify 会自动将长文档切分成小块(Chunk)。建议使用“自动分段”。 4. 索引方式:选择“高质量”(使用 Embedding 模型)。 * 提示:需要配置 Embedding 模型(如 OpenAI text-embedding-3-small 或本地 Ollama 的 nomic-embed-text)。 5. 完成:等待向量化完成。

4. 实战:创建 AI 助手

  1. 创建应用:点击 工作室 > 创建应用 > 聊天助手
  2. 关联知识库:在“上下文”中添加刚才创建的知识库。
  3. 编写提示词 (Prompt): > 你是公司的行政助手。请根据上下文中的规章制度回答员工问题。如果不知道,请回答“我不知道”,不要编造。
  4. 调试:在右侧预览框输入问题测试效果。
  5. 发布:点击右上角 发布 > 运行

5. 进阶:Workflow (工作流)

Dify 最强大的功能是 Workflow,它允许你编排复杂的逻辑。 例如: * 输入:用户输入一个主题。 * 步骤 1 (LLM):生成该主题的大纲。 * 步骤 2 (搜索):调用 Google Search API 搜索相关资料。 * 步骤 3 (LLM):结合大纲和搜索结果,写一篇 2000 字的文章。 * 输出:返回文章内容。

你可以在 Dify 的可视化画布中,像搭积木一样把这些步骤连起来。

6. 常见问题

Q1: 无法连接 Ollama?

原因:Docker 容器网络隔离。 解决: 1. 确保 Ollama 监听 0.0.0.0(设置环境变量 OLLAMA_HOST=0.0.0.0)。 2. 使用宿主机 IP(如 192.168.1.100)代替 localhost

Q2: 知识库检索不准确?

优化: 1. 调整分段长度:如果文档结构复杂,尝试减小分段长度(如 500 字符)。 2. 混合检索:开启“混合检索”(关键词 + 向量),提高匹配精度(需配置 Rerank 模型)。

Q3: 数据库迁移?

建议:Dify 默认使用内置 PostgreSQL。如果生产环境使用,建议在 .env 中配置外部 PostgreSQL 数据库,确保数据安全。