1. Dify 是什么
一句话:Dify 是一个开源的 LLM 应用开发平台,让你用可视化方式编排 AI 工作流、搭建 RAG 知识库、管理 Agent。
它在整个 LLM 应用生态中的位置:
底层模型层(OpenAI / Claude / 本地模型)
↑
Dify 平台层(工作流 / RAG / Agent / Prompt 管理 / 模型网关)
↑
应用层(ChatBot / 知识库问答 / 自动化 / API 接口)
面试考点 ------ 选型对比:
| 维度 | Dify | LangChain | Coze | FastGPT |
|---|---|---|---|---|
| 开源 | ✅ 开源可私有部署 | ✅ 开源框架 | ❌ 商业平台 | ✅ 开源 |
| 可视化工作流 | ✅ 拖拽式 | ❌ 代码编排 | ✅ | ✅ 简易版 |
| 上手门槛 | 低(可视化) | 高(需代码) | 低 | 中 |
| 自定义深度 | 中 | 高 | 低 | 中 |
| 企业级部署 | ✅ Docker/K8s | 需自建 | 不可 | 需自建 |
| 面试加分点 | 架构理解+实战 | 代码能力强 | 成品快 | 中文优化好 |
面试话术:
"Dify 和 LangChain 不冲突。LangChain 是开发框架,适合需要细粒度控制的高级场景;Dify 是应用平台,定位是让产品和运营团队也能参与 LLM 应用搭建,适合快速验证和交付的场景。实际工作中我倾向于结合使用------Dify 管流程和发布,LangChain 管复杂逻辑的定制。"
2. Dify 整体架构
┌─────────────────────────────────────────┐
│ 用户层 (Web / API) │
├─────────────────────────────────────────┤
│ 应用层:对话应用 / 文本生成 / 工作流 │
├──────────┬──────────────┬───────────────┤
│ 工作流引擎│ RAG Pipeline │ Agent 引擎 │
│ (DAG节点) │ (知识库+检索) │ (工具+推理) │
├──────────┴──────────────┴───────────────┤
│ 模型网关 (多模型路由/降级) │
├─────────────────────────────────────────┤
│ 数据层 (PostgreSQL + Redis + 向量库) │
└─────────────────────────────────────────┘
核心模块:
- 工作流引擎:DAG 式执行,节点间变量传递
- RAG Pipeline:文档加载 → 分段 → Embedding → 检索 → 重排序
- Agent 引擎:ReAct / Function Calling 两种模式
- 模型网关:统一接口接入多模型,支持 failover 降级
- API 层:应用发布为 RESTful API,供外部调用
3. 动手:本地部署 Dify
这一部分边走边做。
环境要求:
- Docker & Docker Compose(需先装)
- 最低 2C4G 的机器
- 可选:Ollama 本地模型、或配置云 API Key
部署方式(二选一):
方式一:Docker Compose(推荐)
bash
# 拉取官方仓库
git clone https://github.com/langgenius/dify.git
cd dify/docker
# 复制环境配置
cp .env.example .env
# 启动全部服务
docker compose up -d
访问 http://localhost:3000,注册管理员账号即可。
方式二:源代码部署(用于面试源码分析)
bash
# API 后端
cd api
pip install -r requirements.txt
flask run
# Web 前端
cd web
npm install
npm run dev
4. 部署架构解读(面试重点)
Dify 的 Docker Compose 包含这些服务:
| 服务 | 用途 | 面试价值 |
|---|---|---|
| api | Flask 后端 API 服务,处理请求入口 | 架构入口 |
| worker | Celery 工作进程,执行异步工作流任务 | 任务调度 |
| web | Next.js 前端 | 用户交互 |
| db | PostgreSQL,存应用/知识库/用户数据 | 持久化 |
| redis | 消息队列 + 缓存,Worker 任务分发 | 异步队列 |
| 向量数据库 | Weaviate/Qdrant,存 Embedding 向量 | 检索基础 |
| nginx | 反向代理 | 网关层 |
面试考点: 哪些组件可以水平扩展?
Worker 和 API 可以水平扩展。Worker 通过 Redis 队列消费任务,加机器即可提升吞吐量。但 PostgreSQL 和向量数据库会成为瓶颈,需要进一步做读写分离和分片。
5. 课后任务
- 装 Docker(如果还没装的话)
- 用 Docker Compose 跑起 Dify 本地实例
- 注册进去,把界面每个菜单点一遍,感受功能布局
- 思考:Dify 为什么要用 Celery Worker 做异步任务,而不是直接在 API 进程里处理?
下节课预告:第2课:工作流编排实战 --- 手搓 3 个真实场景工作流,面试时拿来当项目讲。