
整体定位多 Agent 中台平台对外通过 FastAPI 提供统一 HTTP/WS 接口LangGraph 编排 Agent 工作流多存储分层Milvus 向量检索、ES 全文检索、Redis 缓存 / 状态 / 消息队列、MySQL 业务元数据。适合 RAG 多智能体、工具调用、会话管理、知识库管理场景。一、整体架构分层┌─────────────────────────────────────────────┐ │ 接入层FastAPIHTTP/WebSocket接口、鉴权、限流 │ └───────────────────┬─────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 编排层LangGraph 智能体工作流引擎 │ │ - 多Agent节点检索Agent / 工具Agent / 总结Agent │ │ - 状态管理、分支路由、循环、Human-in-the-loop │ └───────────────────┬─────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 检索存储层多引擎各司其职 │ │ ├─ Milvus向量数据库文本Embedding向量检索 │ │ ├─ Elasticsearch全文检索关键词/段落检索、过滤 │ │ ├─ Redis会话缓存、Agent状态、任务队列、分布式锁 │ │ └─ MySQL业务元数据用户、知识库、Agent配置、日志 │ └───────────────────┬─────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ 基础能力LLM服务、工具插件API/数据库工具、Embedding服务 │ └─────────────────────────────────────────────┘各组件职责边界重点避免混用FastAPI对外 API 网关对话接口、知识库上传、Agent 配置、任务查询、流式 SSE/WS 输出中间件JWT 鉴权、请求限流、请求日志、异常捕获、参数校验 (Pydantic)服务拆分可拆为api-service主服务 ingest-service文档摄入服务LangGraphAgent 状态流转、节点编排、条件分支、循环重试、人工介入节点状态存储优先把大状态放 Redis轻量元数据落 MySQLLangGraph Checkpoint 可接入 Redis 实现分布式持久化支持多 Agent路由 Agent 判断问题类型 → 调用检索 Agent / 工具 AgentMilvus存储文档切片 Embedding做语义相似检索适合向量召回、知识库相似度匹配Elasticsearch原始文本切片存储关键词检索、过滤、高亮混合检索策略ES 关键词召回 Milvus 向量召回 → 结果重排RerankRedis短期会话缓存、对话上下文缓存LangGraph checkpoint 存储、分布式锁、任务队列Celery/RQ、限流计数器热点检索结果缓存减少 Milvus/ES 压力MySQL业务结构化数据用户、知识库、文档元信息、Agent 模板、对话记录、权限配置不存大文本 / 向量只存 ID、标签、状态、时间等元字段二、核心业务流程RAG 智能体为例用户请求进入 FastAPI 接口鉴权 参数校验构造 LangGraph 状态写入初始 query、user_id、knowledge_base_id路由 Agent 判断是否需要检索知识库需要并行调用 Milvus 向量检索 ES 全文检索 → 合并召回结果Rerank 重排不需要直接调用 LLM 生成回答拿到参考文档交给生成 Agent调用 LLM 输出答案流式 SSE 返回结果给前端对话记录元数据写入 MySQL会话临时状态放 Redis长对话可持久化 LangGraph Checkpoint文档摄入链路异步文件上传 → FastAPI 接收 → 丢入 Redis 任务队列 → 后台服务解析文档 → 文本切分 → Embedding → 写入 Milvus原始片段写入 ES文档元信息写入 MySQL三、关键技术选型 版本建议Python3.10~3.11FastAPI Uvicorn Pydantic v2LangGraphlanggraph、langchain-core推荐独立部署 LangGraph API生产不内嵌在 FastAPI 主进程Milvusv2.4可使用 Standalone 或分布式集群SDK pymilvusElasticsearch8.xelasticsearch-pyRedis7.xredis-pyMySQL8.0sqlalchemy asyncmy异步额外组件推荐EmbeddingBGE /text-embedding 系列RerankBGE-Reranker异步任务Celery Redis /arq纯 async 更适配 FastAPI监控Prometheus GrafanaOpenTelemetry 全链路埋点容器Docker Compose 开发K8s 生产部署四、生产级核心优化点高性能重点1. 检索层混合检索 缓存多路召回ES 关键词召回 Milvus 向量召回结果做融合、去重、RerankRedis 缓存高频 Query 的 topK 检索结果减少向量库压力Milvus 分区按知识库 ID 做 partition检索时直接指定分区提速、减少资源占用2. LangGraph 分布式优化❌ 不要把 LangGraph 直接嵌入 FastAPI 同步接口长会话会阻塞 worker✅ 方案LangGraph 独立 API 服务FastAPI 作为业务网关调用 LangGraph 服务Checkpoint 存储LangGraph Redis Checkpointer支持多实例共享 Agent 状态支持会话断点恢复节点异步执行、超时控制、失败重试、熔断保护3. 数据库分层防止热点MySQL只存元数据大文本片段不入库对话长文本放 ESMySQL 只存索引 IDMilvus 只存向量 doc_id原始文本存 ES通过 doc_id 关联Redis 设置 TTL自动清理过期会话避免内存膨胀4. FastAPI 性能全异步async def 接口async 数据库驱动asyncmy、aioredis限流Redis 滑动窗口限流按 user_id/ip 限制 QPSSSE 流式输出边生成边返回降低首字延迟接口拆分问答接口、文档上传接口、管理后台接口隔离5. 可观测性OpenTelemetry 埋点接口耗时、LLM 调用耗时、Milvus/ES 检索耗时、LangGraph 各节点耗时日志结构化对话 trace_id 贯穿全链路方便定位 Agent 节点失败问题五、数据库表设计极简示例MySQLuser用户表id, name, api_key, statusknowledge_base知识库id, name, owner_id, statusdocument文档表id, kb_id, file_name, file_hash, status未处理 / 处理中 / 完成conversation对话会话id, user_id, kb_id, create_timemessage消息元数据id, conv_id, role, msg_type, es_chunk_ref, create_time六、项目目录结构参考agent-platform/ ├── api/ # FastAPI网关服务 │ ├── main.py │ ├── routers/ # 对话、知识库、agent配置路由 │ ├── middlewares/ # 鉴权、限流、trace埋点 │ └── schemas/ # Pydantic模型 ├── langgraph_service/ # 独立LangGraph Agent编排服务 │ ├── graph/ # 各个Agent图定义rag_graph, tool_graph │ ├── nodes/ # Agent节点实现 │ └── checkpointer.py # Redis Checkpointer ├── ingest/ # 文档摄入异步任务 │ ├── parser/ │ ├── chunker.py │ ├── embedding.py │ └── storage.py # 写入Milvus ES ├── db/ │ ├── mysql/ │ ├── milvus/ │ ├── es/ │ └── redis/ ├── core/ # 公共工具、配置、rerank、llm client └── docker-compose.yml七、潜在坑点避坑清单LangGraph 默认内存 checkpointer多实例部署会话状态不共享 →必须替换为 RedisCheckpointerMilvus 不要存储超长文本向量库只存向量 主键原始文本交给 ES大文件解析、切片、Embedding 是 CPU 密集必须异步任务队列不能在 API 请求内阻塞LLM 调用不稳定增加重试、超时、熔断单独 LLM 代理层做负载均衡向量检索不要盲目开大 topK召回越多 Rerank 越慢合理控制召回数量Redis 内存溢出会话、缓存必须设置 TTL八、扩展方向接入更多工具SQL 查询工具、API 插件、代码执行器多租户隔离Milvus 分区 MySQL 行级权限 ES 索引隔离Agent 版本管理保存不同版本 LangGraph 工作流灰度发布评估模块Ragas 接入自动评估 RAG 召回与回答质量