Files
catonline_ai/vw-agentic-rag/docs/topics/MULTI_INTENT_IMPLEMENTATION.md
2025-09-26 17:15:54 +08:00

5.5 KiB
Raw Permalink Blame History

多意图识别 RAG 系统实现总结

概述

本次实现为 Agentic RAG 系统添加了多意图识别功能,支持两种主要意图类型的自动分类和路由:

  1. Standard_Regulation_RAG: 标准法规查询
  2. 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 系统
  • 系统功能操作指导
  • 用户界面使用方法
  • 系统配置、设置相关问题
  • 例如:搜索、登录、功能介绍等

测试验证

创建了完整的测试套件:

  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