GraphRAG 智能客服
LangGraph 对话状态管理 + 业务意图路由 + Function Calling + 意图切换恢复,企业级客服对话引擎
概述
基于 FastAPI + LangGraph 构建的企业级智能客服系统。核心亮点:LangGraph StateGraph 编排对话流程,支持业务意图识别(退款/退货/订单查询/物流追踪/投诉)、多轮槽位收集、Function Calling 工具执行、意图切换与任务恢复、RAG 知识检索三路路由。集成知识图谱检索、安全防护与全链路可观测性。
RAG 智能对话
你好!我是智能客服助手,基于 LangGraph 对话引擎。支持退款/退货/订单查询/物流追踪/投诉等业务,也能回答常见问题。 试试:"我要退款" → 多轮槽位收集 "退货政策是什么" → RAG 知识检索
点击麦克风开始/停止录音
技术概览
LangGraph 对话状态图
9 节点 StateGraph 编排完整对话流程,MemorySaver Checkpoint 按会话自动持久化状态。
Prompt Injection 检测(11 条正则)、PII 脱敏、毒性关键词拦截。未通过直接返回安全提示
混合策略(规则 + LLM)。5 种任务型(退款/退货/订单/物流/投诉)+ 知识型(FAQ/Policy)+ 对话型 + 元意图(确认/否认/取消)
检测意图变更 → 挂起当前任务推入 State Stack → 新意图开始。用户返回时弹栈恢复槽位状态,无缝继续
Task → 多轮槽位收集 → Function Calling 工具执行;RAG → 向量/图谱检索;Direct → LLM 直出(闲聊/问候)
正则提取槽位值 + 短消息回退赋值。缺槽追问,槽位完整后执行 Function Calling(退款/退货/订单查询/物流/投诉 5 个工具)
LLM 生成最终回复。如有挂起任务,自动追加恢复提示。流式响应支持(SSE)
业务意图分类
替代传统的知识型意图(QUESTION/HOW_TO),直接映射业务动作,驱动 Function Calling。
退款
槽位: order_id, reason, amount
退货
槽位: order_id, reason
订单查询
槽位: order_id
物流追踪
槽位: order_id
投诉
槽位: category, description
FAQ
Policy
Chitchat
Cancel/Confirm
意图切换与恢复
用户中途切换意图时,当前任务状态自动推栈保存。返回时弹栈恢复,无缝继续。
用户: "我要退款"
→ detect_intent: refund
→ collect_slots: filled={}, pending=[order_id, reason]
→ generate: "请提供您的订单号"
用户: "订单号12345"
→ collect_slots: filled={order_id:"12345"}, pending=[reason]
→ generate: "请问退款原因是什么?"
用户: "退货政策是什么" ← 中途切换!
→ handle_switch: push({intent:refund, filled:{order_id:12345}})
→ detect_intent: policy
→ rag_lookup: 检索退货政策
→ generate: "退货政策是7天无理由..."
+ "您之前的退款申请需要继续吗?"
用户: "继续,原因是质量问题"
→ handle_switch: pop → 恢复 refund + filled={order_id:"12345"}
→ collect_slots: filled={order_id:"12345", reason:"质量问题"}, pending=[]
→ execute_tool: mock_refund → {status:success, refund_id:"RF123456"}
→ generate: "退款已受理,退款单号RF123456,预计3-5个工作日到账。"AI 安全门禁
三层防御体系:输入校验、Prompt 加固、输出净化。全部本地执行,不依赖外部 API。
输入防护
- 11 条 Prompt Injection 正则(中英双语)
- PII 正则:手机号、身份证、邮箱、银行卡、IPv4
- 毒性关键词黑名单
- 消息长度校验
Prompt 加固
- 7 条安全规则注入系统 Prompt
- 反角色扮演指令
- 拒绝有害内容指令
- 领域边界强制执行
输出防护
- LLM 响应 PII 脱敏
- 话题合规性校验
- flagged 内容安全兜底
- 环境变量可配置
GraphRAG(知识图谱)
Neo4j 知识图谱补充向量检索,支持结构化实体关系查询。集成 LLM 实体抽取、社区发现、Text-to-Cypher 翻译。
图谱构建流水线:
文档 → 分块 → LLM 抽取
→ 实体(产品、品牌等)
→ 关系(属于、兼容)
→ 存入 Neo4j
图谱查询流水线:
用户查询 → 实体填充(提取提示)
→ Text-to-Cypher
→ Neo4j 查询 → 结果多路融合
向量结果 + 图谱结果 → Reciprocal Rank Fusion → 统一排序 → Cross-Encoder 重排序
社区发现
实体关系层次聚类,支持社区级摘要和全局搜索
混合检索
语义向量 + BM25 关键词 → RRF 融合 → Top 50 → 重排序 Top 5
系统架构
客户端 (Next.js / Swagger UI)
│
▼
FastAPI
├── 中间件
│ ├── RequestIDMiddleware (UUID per request)
│ ├── PrometheusMiddleware (指标采集)
│ ├── RateLimiter (内存限流)
│ └── OpenTelemetry (OTLP 链路追踪)
│
├── LangGraph StateGraph (对话引擎)
│ ├── guardrail_node (输入安全检查)
│ ├── detect_intent_node (混合意图识别)
│ │ └── cancel 优先 → 槽位值提取保持任务意图 → 元意图保持
│ ├── handle_switch_node (意图切换推栈/弹栈恢复)
│ ├── route_intent_node (三路路由决策)
│ │ ├── task → collect_slots → execute_tool
│ │ ├── rag → rag_lookup (向量 + 图谱)
│ │ ├── direct → direct_response
│ │ └── meta → generate_response
│ ├── collect_slots_node (正则 + 回退赋值)
│ ├── execute_tool_node (Function Calling, 5 工具)
│ ├── rag_lookup_node (Qdrant + Neo4j)
│ ├── generate_response_node (LLM + 恢复提示)
│ └── MemorySaver Checkpoint (按 session_id 持久化)
│
├── 反馈 API (POST /feedback, 点赞/点踩)
│
└── 数据层
├── PostgreSQL (用户、会话、消息、反馈)
├── Redis (Embedding 缓存、限流)
├── Qdrant (向量库、混合检索)
└── Neo4j (知识图谱、实体关系)