从零部署Dify:可视化构建RAG与工作流驱动的AI应用

发布时间:2026/7/25 3:51:15
从零部署Dify:可视化构建RAG与工作流驱动的AI应用 在实际 AI 应用开发中一个常见的困境是想法很美好但落地很困难。从模型选型、API 调用、提示词工程到前后端集成、数据管理、工作流编排每一步都需要投入大量工程时间。对于希望快速验证 AI 想法或构建内部工具的中小团队和个人开发者而言这个门槛尤其高。Dify 的出现正是为了解决这个痛点。它是一个开源的 LLM 应用开发平台其核心目标是让开发者能够像“搭积木”一样通过可视化拖拽的方式快速构建和部署基于大语言模型的 AI 应用而无需从零开始编写大量胶水代码。Dify 由中国团队开发并开源其设计理念强调“以 API 为中心”和“可视化编排”。它并非一个简单的聊天界面包装器而是一个集成了模型管理、提示词工程、知识库RAG、工作流编排、应用发布与监控等全链路能力的开发平台。开发者可以在一个统一的界面里完成从创意到上线的全过程。标题中提到的“几百个 LLM 全支持”是其一大亮点这意味着开发者可以在 Dify 中便捷地切换和测试来自 OpenAI、Anthropic、国内主流云厂商以及众多开源社区的模型极大地降低了模型选型和切换的成本。本文将从零开始带你理解 Dify 的核心概念完成本地或云环境的部署并通过构建一个简单的“智能客服知识库问答”应用掌握其核心功能的使用方法。无论你是想快速搭建一个内部 AI 工具还是希望深入理解 LLM 应用开发平台的架构设计这篇文章都将提供一条清晰的实践路径。1. 理解 Dify 的核心架构与核心概念在动手部署和操作之前先理解 Dify 的设计哲学和核心组件能帮助你更高效地使用它并在遇到问题时知道该从哪里入手。1.1 Dify 是什么不止于一个 UI 界面很多人初次接触 Dify可能会将其理解为一个类似 ChatGPT 的 Web 界面生成器。这种理解是片面的。Dify 本质上是一个LLM 应用开发框架和运营平台。它提供了构建 AI 应用所需的一系列后端服务和前端界面开发者通过配置而非编码的方式将这些服务组合成具体的应用。其核心价值体现在几个方面抽象与集成它将调用不同 LLM API 的细节、向量数据库的操作、提示词模板的渲染、对话上下文的维护等复杂逻辑封装成标准化的组件。可视化编排通过拖拽节点和连接线的方式定义应用的处理逻辑工作流这比直接编写代码更直观尤其适合设计复杂的多步骤推理或数据处理流程。运营就绪内置了应用发布、对话日志、效果评估标注、用量统计等功能使得应用上线后的监控和迭代变得简单。1.2 核心概念解析应用、工作流与知识库要使用 Dify必须清晰理解其三个核心概念应用App、工作流Workflow和知识库Knowledge Base。应用这是最终交付给终端用户的产品形态。在 Dify 中一个应用可以是一个聊天机器人Chat App也可以是一个通过 API 提供服务的智能体Completion App。每个应用背后都关联着一个具体的处理逻辑。工作流这是应用背后的“大脑”和“流水线”。它定义了从用户输入到 AI 输出的完整处理过程。一个工作流由多个节点Node组成例如开始节点接收用户输入。LLM 节点调用大语言模型。知识库检索节点从已上传的文档中查找相关信息。代码执行节点运行 Python 代码片段。HTTP 请求节点调用外部 API。结束节点输出最终结果。 通过拖拽这些节点并设置连接关系你就构建了一个可执行的 AI 处理逻辑。知识库这是实现 RAG检索增强生成能力的基础。你可以将 TXT、PDF、Word、PPT、Markdown 等格式的文档上传到知识库Dify 会自动进行文本提取、分块、向量化并存储到向量数据库中。当工作流中的“知识库检索节点”被触发时它会根据用户问题从知识库中找出最相关的文本片段并作为上下文提供给 LLM从而使模型能够回答超出其训练数据范围或需要最新信息的问题。1.3 Dify 的技术栈与“几百个 LLM 支持”的实现Dify 后端主要采用 PythonFastAPI前端使用 TypeScript 和 React。它通过清晰的抽象层来支持多种 LLM。其模型支持架构可以简单理解为模型提供商抽象Dify 定义了统一的模型调用接口。供应商适配器为每个支持的 LLM 服务商如 OpenAI、Azure OpenAI、Anthropic Claude、智谱 AI、百度文心、通义千问、Ollama 等编写一个适配器负责将统一请求格式转换为该服务商特定的 API 调用格式。配置化管理在 Dify 控制台中你只需填入对应服务商的 API Key、Base URL 等配置即可启用该模型。所谓的“几百个 LLM 全支持”主要得益于其对开源模型托管平台如 Ollama、OpenRouter、Together AI 等以及遵循 OpenAI API 兼容协议如 vLLM、LocalAI 等的模型的支持。只要模型服务提供了兼容的 API 端点理论上都可以接入 Dify。2. 环境准备与部署选择适合你的安装方式Dify 提供了多种部署方式从最简单的 Docker Compose 一键部署到基于 Kubernetes 的云原生部署。对于个人学习和中小团队内部使用我们推荐使用Docker Compose方式它屏蔽了大部分环境依赖的复杂性。2.1 基础环境要求在开始之前请确保你的机器满足以下最低要求组件最低要求推荐配置说明操作系统Linux, macOS, Windows (WSL2)Linux生产环境建议使用 Linux。Windows 请使用 WSL2。Docker20.10最新稳定版所有部署方式都依赖 Docker。Docker Compose2.0最新稳定版用于编排多个容器。CPU2 核4 核向量化等操作需要一定计算资源。内存4 GB8 GB运行数据库、Redis、Dify 服务本身需要内存。磁盘20 GB50 GB用于存储数据库、上传的文档和日志。注意如果你计划使用本地运行的 Ollama 来部署开源模型或者处理大量文档知识库需要预留更多的 CPU 和内存资源。2.2 使用 Docker Compose 快速部署这是最主流、最推荐的部署方式。Dify 官方维护了一个docker-compose.yaml文件包含了运行所需的所有服务。步骤 1获取部署文件打开终端创建一个工作目录并进入然后下载官方提供的 Docker Compose 配置文件。# 创建并进入目录 mkdir dify cd dify # 下载 docker-compose.yml 文件 curl -o docker-compose.yml https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yml # 下载环境变量配置文件示例 curl -o .env.example https://raw.githubusercontent.com/langgenius/dify/main/docker/.env.example cp .env.example .env步骤 2配置环境变量编辑.env文件这是配置 Dify 的核心。你需要关注以下几个关键配置# 使用你喜欢的文本编辑器如 vim, nano 或 VS Code vim .env# 数据库配置通常使用默认即可首次启动会自动创建 POSTGRES_PASSWORDdifyai123456 # 修改为一个强密码 PGADMIN_DEFAULT_EMAILadmindify.ai # PgAdmin 管理界面登录邮箱 PGADMIN_DEFAULT_PASSWORDadmin123456 # PgAdmin 管理界面登录密码 # Redis 配置通常使用默认即可 REDIS_PASSWORDdifyai123456 # 修改为一个强密码 # Dify 服务关键配置 SECRET_KEYyour-secret-key-please-change # 必须修改用于加密会话建议使用长随机字符串 CONSOLE_API_URLhttp://localhost:5001 # 后端 API 地址本地部署保持默认 APP_API_URLhttp://localhost:5001 # 应用 API 地址本地部署保持默认 CONSOLE_WEB_URLhttp://localhost:3000 # 前端控制台地址本地部署保持默认 # 外部服务配置可选后续在控制台配置也可 # OPENAI_API_KEYsk-xxx # 如果你有 OpenAI Key可以在这里预先配置步骤 3启动 Dify 服务在包含docker-compose.yml和.env文件的目录下运行以下命令# 在后台启动所有服务 docker-compose up -d这个命令会拉取 PostgreSQL、Redis、PgAdmin数据库管理工具以及 Dify 后端和前端服务的镜像并启动它们。首次启动可能需要几分钟时间下载镜像。步骤 4验证服务状态使用以下命令检查容器是否正常运行docker-compose ps你应该看到类似下面的输出所有服务的状态State都应为Up。Name Command State Ports ----------------------------------------------------------------------------------------------------------------- dify-api /bin/bash /entrypoint.sh Up (healthy) 5001/tcp, 0.0.0.0:5001-5001/tcp dify-web /docker-entrypoint.sh ngin ... Up 80/tcp, 0.0.0.0:3000-3000/tcp dify-db docker-entrypoint.sh postgres Up 5432/tcp dify-redis docker-entrypoint.sh redis ... Up 6379/tcp dify-pgadmin /entrypoint.sh Up 443/tcp, 0.0.0.0:8082-80/tcp步骤 5访问 Dify 控制台打开浏览器访问http://localhost:3000。你应该能看到 Dify 的登录/注册页面。首次使用需要创建一个管理员账号。至此Dify 平台本身已经部署完成。但要让 AI 应用真正“跑起来”我们还需要配置最关键的“引擎”——大语言模型。3. 配置模型供应商连接“几百个 LLM”的关键一步部署好的 Dify 就像一个没有安装发动机的汽车。配置模型供应商就是为它装上发动机。我们以配置 OpenAI 和本地 Ollama用于运行开源模型为例。3.1 登录并进入模型配置页面在http://localhost:3000注册并登录。点击左侧导航栏的“设置”齿轮图标。在设置菜单中选择“模型供应商”。3.2 配置 OpenAI或兼容 API如果你有 OpenAI API Key或者使用其他提供兼容 OpenAI API 格式的服务如 Azure OpenAI、一些开源模型网关可以在此配置。在“模型供应商”页面找到OpenAI卡片点击“配置”。在配置弹窗中填写以下信息供应商名称可自定义如 “My-OpenAI”。API Key填入你的 OpenAI API Key。API Base URL对于官方 OpenAI留空即可。如果你使用第三方兼容服务如 LocalAI、OpenRouter这里需要填写其提供的端点地址例如http://localhost:8080/v1。点击“验证”如果配置正确Dify 会提示“验证通过”。点击“保存”。保存后该供应商下的模型如 gpt-3.5-turbo, gpt-4就会出现在创建应用时的模型选择列表中。3.3 配置 Ollama本地运行开源模型Ollama 是一个在本地运行、管理开源大模型的工具。将 Ollama 与 Dify 集成可以实现完全离线的 AI 应用开发。步骤 1安装并启动 Ollama请参考 Ollama 官方文档 (https://ollama.com) 进行安装。安装后在终端拉取一个模型例如 Llama 3# 拉取模型首次运行会自动下载 ollama pull llama3:8b # 启动模型服务默认端口 11434 ollama serve 步骤 2在 Dify 中配置 Ollama 供应商由于 Ollama 的 API 与 OpenAI 兼容我们实际上可以复用“OpenAI”这个供应商类型来配置它。在 Dify 的“模型供应商”页面再次点击OpenAI的“配置”。填写一个新的配置供应商名称Local-Ollama。API KeyOllama 默认不需要 API Key可以填写任意非空字符串如ollama。API Base URL填写 Ollama 的服务地址通常是http://host.docker.internal:11434/v1。这里的关键是host.docker.internal这个主机名允许 Docker 容器访问宿主机的服务。如果你的 Dify 不是用 Docker 部署的或者 Ollama 运行在另一台机器需要填写对应的 IP 和端口。点击“验证”。如果连接成功你会看到可用的模型列表如llama3:8b。点击“保存”。现在你就同时拥有了云端和本地的模型能力。在构建应用时可以根据需求如成本、延迟、数据隐私灵活选择模型。4. 实战构建一个智能客服知识库问答应用我们将通过创建一个“公司内部知识库问答助手”来串联 Dify 的核心功能应用创建、工作流编排和知识库使用。4.1 创建应用与知识库创建应用在 Dify 控制台首页点击“创建应用”选择“对话型应用”输入应用名称如内部知识库助手。创建知识库点击左侧导航栏的“知识库”-“创建知识库”。命名为公司产品手册点击创建。上传文档进入新建的知识库点击“上传文件”。你可以上传一个关于公司产品的 PDF 或 TXT 文档。例如创建一个product_guide.txt文件内容如下产品名称智能办公助手 最新版本v2.1 核心功能 1. 会议纪要自动生成连接日历和会议软件在会议结束后自动生成结构化纪要。 2. 邮件智能起草根据简短指令和上下文自动撰写完整邮件。 3. 数据报告分析上传数据表格自动进行趋势分析和摘要生成。 4. 内部知识问答对接公司知识库回答员工关于规章制度、业务流程的问题。 收费标准 - 基础版免费包含会议纪要和邮件起草功能每月限100次使用。 - 专业版99元/月/用户包含所有功能无使用次数限制。 - 企业版定制报价支持私有化部署和深度定制。 技术支持渠道 - 帮助中心https://support.example.com - 客服邮箱supportexample.com - 工作时间工作日 9:00-18:00上传后Dify 会开始异步处理文档分块、向量化。状态变为“可用”即表示处理完成。4.2 使用工作流编排应用逻辑我们将设计一个工作流先检索知识库再将检索结果和用户问题一起交给 LLM 生成回答。进入工作流编辑界面在内部知识库助手应用的“编排”标签页下选择“工作流”模式。添加节点从左侧节点库拖拽一个“开始”节点到画布。拖拽一个“知识库检索”节点到画布。拖拽一个“LLM”节点到画布。拖拽一个“结束”节点到画布。连接节点将“开始”节点的输出变量如query连接到“知识库检索”节点的query输入。将“知识库检索”节点的输出变量如result连接到“LLM”节点的context输入。将“开始”节点的query也连接到“LLM”节点的question输入。将“LLM”节点的输出连接到“结束”节点的输入。配置节点参数点击“知识库检索”节点在右侧面板“知识库”选择我们刚创建的公司产品手册。“检索模式”可以选择“向量化检索”或“混合检索”如果配置了全文检索引擎。“召回条数”设置为3返回最相关的3个片段。点击“LLM”节点“模型”选择你配置好的模型例如gpt-3.5-turbo或llama3:8b。“系统提示词”中填入你是一个专业的公司内部助手请严格根据提供的上下文信息来回答问题。如果上下文信息不足以回答问题请如实告知用户你不知道不要编造信息。 上下文{{#context#}} 问题{{#question#}}{{#context#}}和{{#question#}}是变量占位符会自动替换为上游节点传入的值。“用户提示词”可以留空因为问题已通过变量传入。保存并发布工作流点击右上角的“发布”按钮。发布后工作流即成为该应用当前生效的逻辑。4.3 测试与调试进入对话测试界面在应用编排页面切换到“预览”标签页或直接点击顶部导航的“发布”-“访问应用”。进行提问在聊天框中输入问题例如“你们产品的专业版多少钱一个月”。观察执行过程调试关键在“预览”模式下点击右上角的“跟踪”或“日志”按钮可以展开查看工作流每一步的执行详情、每个节点的输入输出。这是排查问题最强大的工具。你会看到“知识库检索”节点返回了包含“专业版99元/月/用户”的文本片段。然后看到“LLM”节点接收到的完整提示词以及模型生成的回答。通过这个简单的流程你已经实现了一个具备 RAG 能力的问答机器人。它不再依赖于模型的固有知识而是从你提供的文档中寻找答案准确性更高也更容易更新只需更新知识库文档即可。5. 核心功能详解与高级配置掌握了基础流程后我们来深入看看 Dify 其他几个关键功能点的配置和原理。5.1 提示词编排与变量系统Dify 的提示词编辑器非常强大支持变量、上下文、循环等逻辑。变量格式为{{#variable_name#}}可以从上游节点如“开始”、“知识库检索”、“HTTP请求”的输出中获取值。在提示词中插入变量可以实现动态内容生成。上下文在对话型应用中可以勾选“上下文”选项LLM 节点会自动将历史对话记录作为上下文传入实现多轮对话记忆。提示词模板你可以将常用的提示词段落保存为模板在不同应用间复用。例如一个“代码审查助手”的提示词模板可以包含角色设定、输出格式要求等。5.2 工具Tools与函数调用Function Calling除了知识库让 LLM 连接外部世界获取实时信息、操作内部系统的另一关键方式是“工具”。Dify 支持两种主要方式预置工具Dify 内置了如“联网搜索”、“文本提取”等工具可以直接在工作流中调用。自定义工具API你可以将任何 HTTP API 封装成工具。在“工具”设置页面点击“创建工具”。填写 API 的端点URL、方法GET/POST、Headers、参数描述。为这个工具编写一个清晰的“描述”LLM 会根据描述决定何时调用它。在工作流中可以添加“工具调用”节点或者直接在 LLM 节点的模型配置中开启“函数调用”能力并关联你创建的工具。例如你可以创建一个“查询公司内部工单状态”的工具当用户问“我的订单 #12345 到哪了”时LLM 会自动调用这个工具获取实时数据并生成回答。5.3 数据集管理与数据处理知识库是数据集的一种类型。Dify 的数据集功能更通用多格式支持除了文档还支持直接输入文本、导入网页通过爬虫、通过 API 同步数据。清洗与预处理在上传后可以配置文本清洗规则如去除多余空格、特定字符、分段策略按字符数、标点分割等。检索优化可以调整向量化模型Embedding Model、选择不同的向量数据库Dify 默认使用内置的向量存储也支持连接外部的 Weaviate、Qdrant 等。5.4 应用发布与集成构建好的应用可以通过多种方式交付Web 站点Dify 为每个应用生成一个独立的对话网页你可以嵌入到 iframe 或直接分享链接。API在应用“发布”设置中可以启用 API。Dify 会提供标准的 OpenAI 兼容格式的 API 端点方便你集成到自己的前端、移动端或第三方系统中。插件/机器人社区提供了与飞书、钉钉、微信、Slack 等平台集成的方案可以将应用快速部署为群聊机器人。6. 常见问题排查与性能调优在实际使用中你可能会遇到一些问题。下面是一些常见问题的排查思路。6.1 部署与启动问题问题现象可能原因检查与解决访问localhost:3000失败1. 容器未成功启动。2. 端口被占用。3. 防火墙/安全组限制。1. 运行docker-compose ps检查容器状态。如果异常查看日志docker-compose logs。2. 运行netstat -tlnp | grep :3000检查端口占用修改docker-compose.yml中的端口映射。3. 检查本地防火墙或云服务器的安全组规则确保 3000 和 5001 端口开放。启动时数据库连接错误1..env中数据库密码配置错误。2. PostgreSQL 容器初始化失败。1. 检查.env中的POSTGRES_PASSWORD是否与docker-compose.yml中对应服务的环境变量一致。2. 查看数据库容器日志docker-compose logs dify-db。可能需要删除旧的数据库卷重新初始化。前端能访问但登录/操作报错前后端服务通信失败或SECRET_KEY不一致。1. 检查.env中的CONSOLE_API_URL和APP_API_URL是否正确指向后端服务通常是http://你的服务器IP或域名:5001。2. 确保所有服务使用的SECRET_KEY环境变量值完全相同。6.2 模型与知识库相关问题问题现象可能原因检查与解决模型调用超时或失败1. API Key 错误或余额不足。2. 网络无法访问模型服务商。3. 模型名称填写错误。4. Ollama 服务未启动或连接地址错误。1. 在 Dify “模型供应商”配置页面点击“验证”测试连接。2. 在服务器上使用curl命令测试是否能访问模型 API 端点。3. 核对模型名称例如 OpenAI 是gpt-3.5-turbo Ollama 是llama3:8b。4. 对于 Ollama确保host.docker.internal在 Docker 容器内可解析。在 macOS/Windows 的 Docker Desktop 中通常可用Linux 可能需要改为宿主机的实际 IP。知识库处理失败状态一直为“处理中”1. 文档格式不支持或已损坏。2. 文本向量化Embedding模型调用失败。3. 系统资源内存/CPU不足。1. 尝试上传一个简单的.txt文件测试。2. 检查“设置”-“模型供应商”中用于 Embedding 的模型如text-embedding-ada-002是否配置正确且可用。3. 查看dify-api容器的日志寻找具体错误信息docker-compose logs dify-api --tail100。知识库检索结果不相关1. 文档分块策略不合理块太大或太小。2. 检索模式或参数需要调整。3. Embedding 模型不适合该领域文本。1. 在知识库设置中调整“分段处理”规则尝试不同的块大小和重叠长度。2. 尝试使用“混合检索”需配置全文检索引擎结合关键词和向量相似度。3. 对于中文场景可以尝试切换为支持中文的 Embedding 模型如BAAI/bge-large-zh需通过自定义模型供应商配置。6.3 工作流调试技巧充分利用“跟踪/日志”功能在预览模式下这是最直接的调试工具。查看每个节点的输入和输出确认数据流是否符合预期。简化流程当复杂工作流出错时尝试先构建一个最小可行流程如 开始 - LLM - 结束确保基础模型调用正常再逐步添加其他节点。检查变量名确保节点间连接的变量名正确无误。变量名区分大小写。查看系统日志对于运行时错误查看 Docker 容器的日志docker-compose logs dify-api。关注其中的 Python 异常堆栈信息。6.4 性能与生产环境建议对于学习和小型应用上述 Docker Compose 部署足够。但如果用于生产环境或团队协作需要考虑更多资源隔离与扩展考虑使用 Kubernetes 部署便于水平扩展 API 服务、独立扩展向量数据库等。外部化存储与数据库将 PostgreSQL、Redis 甚至向量数据库如 Qdrant迁移到独立的、有备份和高可用保障的服务中而不是使用 Docker Compose 内的容器。配置管理将敏感信息API Keys、数据库密码通过 Docker Secrets 或云服务商的密钥管理服务管理不要硬编码在.env文件中。监控与告警为关键服务API、数据库设置监控和告警。关注指标包括API 响应延迟、错误率、模型 Token 消耗速度、知识库检索耗时等。备份策略定期备份 PostgreSQL 数据库。知识库的原始文件和向量数据也应有备份和恢复方案。网络与安全为 Dify 服务配置 HTTPS可以使用 Nginx 反向代理并配置 SSL 证书。在防火墙中严格限制访问来源 IP。定期更新 Dify 到新版本以获取安全补丁。7. 总结与扩展方向通过本文的实践你应该已经掌握了 Dify 从部署、配置到构建一个完整 AI 应用的核心流程。Dify 的强大之处在于它将复杂的 LLM 应用工程化问题转化为了可视化的配置和编排问题极大地提升了开发效率。作为下一步的扩展你可以尝试构建复杂工作流尝试引入“条件判断”节点根据用户问题类型路由到不同的处理分支使用“循环”节点处理列表数据结合“HTTP 请求”节点调用更多外部服务。探索 Agent 能力利用 Dify 对 Function Calling 的支持构建能够自主规划、使用工具完成复杂任务的智能体Agent。深入优化 RAG尝试不同的文本分块策略、不同的 Embedding 模型、以及重排序Re-ranking技术提升知识库问答的准确率。关注生态与社区Dify 拥有活跃的开源社区关注其 GitHub 仓库和官方文档可以及时获取新功能如多模态模型支持、更丰富的数据集连接器和最佳实践。记住像 Dify 这样的平台是加速器而不是黑盒子。理解其背后的概念如 RAG、Function Calling、工作流编排比单纯熟悉操作界面更重要。这样当需求超出平台默认能力时你才能知道如何通过自定义代码或集成其他系统来扩展它。