5.5 KiB
5.5 KiB
多意图识别 RAG 系统实现总结
概述
本次实现为 Agentic RAG 系统添加了多意图识别功能,支持两种主要意图类型的自动分类和路由:
- Standard_Regulation_RAG: 标准法规查询
- User_Manual_RAG: 用户手册查询
技术实现
1. 状态扩展
更新了 AgentState 和相关状态类,添加了 intent 字段:
class AgentState(MessagesState):
"""Enhanced LangGraph state with session support and tool results"""
session_id: str
intent: Optional[Literal["Standard_Regulation_RAG", "User_Manual_RAG"]]
tool_results: Annotated[List[Dict[str, Any]], lambda x, y: (x or []) + (y or [])]
final_answer: str
tool_rounds: int
max_tool_rounds: int
2. 意图识别节点
实现了 intent_recognition_node 函数,使用 LLM 结合上下文进行智能意图分类:
async def intent_recognition_node(state: AgentState, config: Optional[RunnableConfig] = None) -> Dict[str, Any]:
"""
Intent recognition node that uses LLM to classify user queries into specific domains
"""
关键特性:
- 使用结构化输出确保分类准确性
- 结合对话历史上下文进行判断
- 支持中英文查询
- 出错时默认路由到 Standard_Regulation_RAG
3. 用户手册 RAG 节点
实现了专门的 user_manual_rag_node,处理用户手册相关查询:
async def user_manual_rag_node(state: AgentState, config: Optional[RunnableConfig] = None) -> Dict[str, Any]:
"""
User Manual RAG node that retrieves user manual content and generates responses
"""
功能特点:
- 直接调用
retrieve_system_usermanual工具 - 支持流式响应生成
- 专业的用户手册回答模板
- 单轮对话处理(直接到 END)
4. 图结构重构
更新了 LangGraph 工作流,添加了意图路由:
START → intent_recognition → [intent_router] → {
"Standard_Regulation_RAG": agent → tools → post_process → END
"User_Manual_RAG": user_manual_rag → END
}
新增组件:
intent_recognition节点:入口意图识别intent_router函数:基于意图结果的条件路由user_manual_rag节点:专门处理用户手册查询
5. 工具组织优化
将用户手册工具分离到专门模块:
service/graph/tools.py: 标准法规检索工具service/graph/user_manual_tools.py: 用户手册检索工具
意图分类逻辑
Standard_Regulation_RAG
识别查询内容:
- 中国制造业标准、法规、规范
- 汽车行业标准、安全规范
- 技术规范、质量标准
- 法律法规、政策文件
- 例如:GB/T、ISO标准、行业规范等
User_Manual_RAG
识别查询内容:
- 如何使用 CATOnline 系统
- 系统功能操作指导
- 用户界面使用方法
- 系统配置、设置相关问题
- 例如:搜索、登录、功能介绍等
测试验证
创建了完整的测试套件:
-
意图识别测试 (
scripts/test_intent_recognition.py)- 测试多种查询的意图分类准确性
- 验证中英文查询支持
- 测试用户手册 RAG 功能
-
端到端工作流测试 (
scripts/test_multi_intent_workflow.py)- 完整工作流验证
- 多会话支持测试
- 流式处理验证
测试结果
意图识别准确率:100%
测试用例全部通过:
- ✅ 汽车安全标准查询 → Standard_Regulation_RAG
- ✅ ISO 标准查询 → Standard_Regulation_RAG
- ✅ CATOnline 搜索功能 → User_Manual_RAG
- ✅ 系统登录方法 → User_Manual_RAG
- ✅ 用户管理功能 → User_Manual_RAG
核心优势
- 智能路由: 基于 LLM 的上下文感知意图识别
- 多轮对话支持: 两种意图都保持完整的会话记忆
- 模块化设计: 清晰分离不同领域的工具和处理逻辑
- 向后兼容: 原有的标准法规查询功能完全保持
- 实时流式: 所有路径都支持流式响应
- 错误容错: 意图识别失败时的优雅降级
技术架构
┌─────────────────┐
│ User Query │
└─────────┬───────┘
│
┌──────▼──────┐
│Intent │
│Recognition │
│(LLM-based) │
└──────┬──────┘
│
┌─────▼─────┐
│Intent │
│Router │
└─────┬─────┘
│
┌─────▼─────┐
│ Branch │
└─────┬─────┘
│
┌────▼────┐
│Standard │ │User Manual│
│RAG Path │ │RAG Path │
│(Multi- │ │(Single │
│round) │ │round) │
└─────────┘ └───────────┘
配置要求
无需额外配置更改,使用现有的:
- LLM 配置(支持结构化输出)
- 检索 API 配置
- PostgreSQL 内存配置
部署说明
- 确保
user_manual_tools.py模块正确导入 - 验证用户手册检索索引配置
- 测试意图识别准确性
- 监控两种路径的性能表现
未来扩展
- 更多意图类型: 可以轻松添加新的意图分类
- 意图置信度: 支持意图识别的置信度评分
- 混合查询: 支持单次查询包含多种意图
- 个性化意图: 基于用户历史的个性化意图识别
实现时间: 2025-08-28
技术栈: LangGraph v0.6+, LangChain, OpenAI API