Files
catonline_ai/vw-agentic-rag/docs/topics/MULTI_INTENT_IMPLEMENTATION.md

190 lines
5.5 KiB
Markdown
Raw Permalink Normal View History

2025-09-26 17:15:54 +08:00
# 多意图识别 RAG 系统实现总结
## 概述
本次实现为 Agentic RAG 系统添加了多意图识别功能,支持两种主要意图类型的自动分类和路由:
1. **Standard_Regulation_RAG**: 标准法规查询
2. **User_Manual_RAG**: 用户手册查询
## 技术实现
### 1. 状态扩展
更新了 `AgentState` 和相关状态类,添加了 `intent` 字段:
```python
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 结合上下文进行智能意图分类:
```python
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`,处理用户手册相关查询:
```python
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 系统
- 系统功能操作指导
- 用户界面使用方法
- 系统配置、设置相关问题
- 例如:搜索、登录、功能介绍等
## 测试验证
创建了完整的测试套件:
1. **意图识别测试** (`scripts/test_intent_recognition.py`)
- 测试多种查询的意图分类准确性
- 验证中英文查询支持
- 测试用户手册 RAG 功能
2. **端到端工作流测试** (`scripts/test_multi_intent_workflow.py`)
- 完整工作流验证
- 多会话支持测试
- 流式处理验证
## 测试结果
意图识别准确率:**100%**
测试用例全部通过:
- ✅ 汽车安全标准查询 → Standard_Regulation_RAG
- ✅ ISO 标准查询 → Standard_Regulation_RAG
- ✅ CATOnline 搜索功能 → User_Manual_RAG
- ✅ 系统登录方法 → User_Manual_RAG
- ✅ 用户管理功能 → User_Manual_RAG
## 核心优势
1. **智能路由**: 基于 LLM 的上下文感知意图识别
2. **多轮对话支持**: 两种意图都保持完整的会话记忆
3. **模块化设计**: 清晰分离不同领域的工具和处理逻辑
4. **向后兼容**: 原有的标准法规查询功能完全保持
5. **实时流式**: 所有路径都支持流式响应
6. **错误容错**: 意图识别失败时的优雅降级
## 技术架构
```
┌─────────────────┐
│ User Query │
└─────────┬───────┘
┌──────▼──────┐
│Intent │
│Recognition │
│(LLM-based) │
└──────┬──────┘
┌─────▼─────┐
│Intent │
│Router │
└─────┬─────┘
┌─────▼─────┐
│ Branch │
└─────┬─────┘
┌────▼────┐
│Standard │ │User Manual│
│RAG Path │ │RAG Path │
│(Multi- │ │(Single │
│round) │ │round) │
└─────────┘ └───────────┘
```
## 配置要求
无需额外配置更改,使用现有的:
- LLM 配置(支持结构化输出)
- 检索 API 配置
- PostgreSQL 内存配置
## 部署说明
1. 确保 `user_manual_tools.py` 模块正确导入
2. 验证用户手册检索索引配置
3. 测试意图识别准确性
4. 监控两种路径的性能表现
## 未来扩展
1. **更多意图类型**: 可以轻松添加新的意图分类
2. **意图置信度**: 支持意图识别的置信度评分
3. **混合查询**: 支持单次查询包含多种意图
4. **个性化意图**: 基于用户历史的个性化意图识别
---
*实现时间: 2025-08-28*
*技术栈: LangGraph v0.6+, LangChain, OpenAI API*