ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Ragent树形意图识别:如何让问题被精准路由到正确的知识库

Ragent树形意图识别:如何让问题被精准路由到正确的知识库 Ragent树形意图识别如何让问题被精准路由到正确的知识库【免费下载链接】ragent企业级 Agentic RAG 智能体 - 全链路覆盖文档解析、多路检索、意图识别、问题重写、会话记忆、MCP 工具调用与深度思考。面向真实业务场景从 0 到 1 完整工程实现。项目地址: https://gitcode.com/gh_mirrors/ragent1/ragentRagent 是一个企业级 Agentic RAG 智能体项目其中的树形意图识别模块负责把用户问题精准路由到正确的知识库。本文将介绍 Ragent 意图树的结构设计、LLM 打分机制、子问题并行分类以及管理后台的可视化配置方法帮助新手快速理解多知识库场景下问题该去哪里找答案这一核心难题。为什么需要树形意图识别做过企业知识库的人都知道一个痛点当企业里同时存在人事制度、财务报销、OA 操作手册、保险系统文档等多个知识库时用户一个问题往往只和其中一类知识相关。如果直接把所有知识库放在一起做向量检索会出现三个典型问题检索噪声大无关库的相似片段混入上下文稀释有效信息跨库误匹配用户问OA 系统答案却从保险系统库里找出来⚡成本浪费每次都全库检索token 和耗时都白白增加Ragent 的解法很直接在检索之前先做一次意图识别——先判断这个问题属于哪个业务域、哪个分类再带着意图标签去对应的知识库定向检索。而为了让这种判断既结构化又易于维护Ragent 把知识点组织成一棵意图识别树。意图树长什么样域 分类 主题Ragent 的意图树采用三级结构以官方示例树 IntentTreeFactory.java 为例集团信息化域 DOMAIN ├── 人事分类 CATEGORY ├── IT支持分类 CATEGORY └── 财务分类 CATEGORY └── 发票相关主题 TOPIC 业务系统域 DOMAIN ├── OA系统 │ ├── 系统介绍主题 TOPIC │ └── 数据安全主题 TOPIC └── 保险系统 ├── 系统介绍 ├── 架构设计 └── 数据安全 销售汇总数据统计MCP 实时查询 系统交互SYSTEM 问候/关于助手这棵树的每个节点是一个 IntentNode携带几类关键信息节点属性作用level所处层级域DOMAIN/ 分类CATEGORY/ 主题TOPICkind节点类型KB知识库检索、MCP实时工具查询、SYSTEM系统交互description语义说明告诉 LLM什么样子的问题该归到我这里examples示例问法帮助 LLM 精准对齐口语化表达collectionNames叶子节点挂载的 Milvus 向量库mcpToolIdMCP 节点绑定的实时工具 IDpromptTemplate节点专属的回答提示词如发票信息格式化输出只有叶子节点才会参与意图匹配并挂载知识库见IntentNode#isLeaf()中间层级只做语义分组。这种设计的好处是节点数量可以随业务自由增长但真正参与打分的候选项始终可控。LLM 打分把每个叶子节点称一称意图识别的核心实现在 DefaultIntentClassifier.java流程分三步第 1 步加载意图树。优先从 Redis 缓存读取最新意图树IntentTreeCacheManager.java缓存未命中再回源数据库保证管理后台改完树能即时生效。第 2 步构造 Prompt。把所有叶子节点的id / 路径 / 描述 / 类型 / 示例问题一次性列出来交给 LLM提示词模板见 intent-classifier.st。第 3 步解析打分。要求 LLM 只能从给定 id 中选择输出形如[{id: biz-oa-intro, score: 0.9, reason: ...}]的 JSON 数组按分数降序返回。这里有几个工程化细节值得新手注意️容错兜底LLM 调用失败或 JSON 解析异常时返回空意图下游走无意图兜底逻辑整条问答链路不会中断幻觉防护LLM 返回的节点 id 若在意图树中不存在直接跳过并告警低分过滤解析出的结果会经过阈值过滤默认INTENT_MIN_SCORE 0.35与数量截断默认最多MAX_INTENT_COUNT 3个常量定义在 RAGConstant.java子问题拆分 并行分类复杂问句也不迷路用户经常一句问出好几个问题比如请假流程怎么走顺便查下差旅报销需要哪些材料。Ragent 的处理方式在 StreamChatPipeline.java 中体现得很清晰问题重写先由 QueryRewriteService 结合对话历史改写并拆分子问题并行意图分类IntentResolver.java 把每个子问题丢进线程池异步并发做 LLM 打分单点失败降级为空意图全局配额控制所有子问题的意图总数超过上限时采用每个子问题保底 1 个最高分意图 剩余配额按分数从高到低分配的策略避免检索预算被单一子问题吃光意图分流IntentResolver#mergeIntentGroup把结果拆成 KB 意图去向量库检索和 MCP 意图去调实时工具各走各的通道从意图到答案检索链路的最后一公里意图识别完成后MultiChannelRetrievalEngine 会只针对命中的叶子节点绑定的 Collection发起多路检索再经重排、引用富化交给 LLM 生成带来源的答案。相比全库乱搜定向检索带来的直接收益是召回更准、上下文更干净、答案引用可追溯。管理后台不写代码就能维护意图树意图树不是写死在代码里的。Ragent 提供了完整的可视化管理界面前端代码在 frontend/src/pages/admin/intent-tree/后端 API 在 IntentTreeController.java树形编辑创建、更新、删除任意层级节点支持批量启用/停用/删除描述与示例维护直接编辑节点的语义说明和示例问法即时改善识别效果知识库绑定在叶子节点上勾选要关联的知识库/Collection一键生效修改后写入 Redis 缓存下一轮问答即使用新树实践建议意图识别的准确率一半靠模型一半靠运营。当发现某类问题经常找错库时优先去管理后台补充该叶子节点的描述区分度比如OA 系统与保险系统都可能有数据安全主题描述里要写清各自边界和高频示例问法。小结Ragent 的树形意图识别可以用一句话概括用树来组织知识边界用 LLM 给叶子节点打分用阈值和配额控制精度与成本的平衡。它的分层设计——域/分类/主题三级结构 KB/MCP/SYSTEM 三类节点——让企业文档问答、实时数据查询、助手闲聊三种场景共用同一棵路由树互不干扰。配合子问题并行分类和管理后台的低门槛维护这套机制正是企业级 RAG 从能回答走向答得准的关键一步。相关模块速查意图树构建示例IntentTreeFactory.javaLLM 意图分类器DefaultIntentClassifier.java意图解析与配额控制IntentResolver.java意图分类提示词intent-classifier.st问答主链路StreamChatPipeline.java【免费下载链接】ragent企业级 Agentic RAG 智能体 - 全链路覆盖文档解析、多路检索、意图识别、问题重写、会话记忆、MCP 工具调用与深度思考。面向真实业务场景从 0 到 1 完整工程实现。项目地址: https://gitcode.com/gh_mirrors/ragent1/ragent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表