RAFT:面向故障排查智能体的有状态检索增强框架
arXiv编号:arXiv:2609.20754v1 [cs.AI]
摘要
企业客服场景下故障排查智能体,需要从相似历史工单案例中检索可执行处理指导。但现有检索增强生成(RAG)系统将历史工单视作静态文档,忽略故障排查过程多阶段、带状态演进的本质特征。本文提出RAFT(Retrieval‑Augmented Framework for Troubleshooting Agents)有状态检索增强框架:将每一条已结案历史工单抽象为有向时间线条目链,在时间线条目粒度执行检索;定位与当前活跃工单中间状态相匹配的历史片段,返回锚定在匹配位置的完整父案例轨迹;配套可选的案例级图结构,通过可配置相似度表征关联不同工单案例。
本文对检索层做独立评测,无需部署完整生产级智能体系统。公开多阶段故障排查数据集十分稀缺,因此构建两套评测资源:一套基于Microsoft Learn Windows Server文档构建合成基准;另一套采用带有人工重复标签的真实Apache Jira工单。在工单处理的全部阶段,RAFT的Case‑(\mathcal{(\mathcal H)})it指标均优于普通RAG与GraphRAG基线,相比最优基线具备统计显著提升;Apache Jira真实数据集实验结果证明该优势可以迁移至真实业务工单。本文开源整套基准数据集、实现代码与Apache Jira评测集合。
关键词
故障排查智能体;有状态RAG;时间线检索;案例图;企业客服;工单检索
目录
- 引言
- 主要贡献
- 相关工作
- 问题定义
- RAFT框架
- 4.1 索引构建模块
- 4.1.1 工单评估与过滤
- 4.1.2 时间线条目
- 4.1.3 案例级图
- 4.2 检索模块
- 4.1 索引构建模块
- 实验
- 5.1 合成开发基准
- 5.2 对比基线
- 5.3 评测指标
- 5.4 合成基准实验结果
- 5.5 Apache Jira人工标注真实数据评测
- 结论
- 参考文献
- 附录A Microsoft Learn合成数据集
- A.1 知识库构建
- A.2 工单案例生成
- A.3 Wiki文档的作用
- A.4 小结
- 附录B 工单提取:输出模型与工作流
- B.1 输出数据模型
- B.2 基于智能体的工单提取工作流
- B.2.1 上下文预算与模型选型
- B.2.2 有界增量处理
- B.2.3 可编辑状态与选择性证据访问
- B.2.4 最终审核与可追溯性
- B.2.5 评估与下游策略
- B.3 索引构建流程
- 附录C 补充实验
- C.1 指标详情
- C.2 基线配置
- C.3 不确定性分析
- C.4 查询鲁棒性实验
- C.5 图模块贡献与敏感性分析
- C.6 附加实验
- C.7 部署考量
- 附录D Apache Jira评测数据集
1 引言
大语言模型智能体已经广泛应用于软件工程、企业客服等领域。在企业客服故障排查场景,智能体需要基于大量历史已结案工单,协助处理新到来的问题工单。
- 微调方案:可以注入领域知识,但计算开销高、仅支持开放权重模型,存在灾难性遗忘;新工单不断产生,需要周期性重训练。
- RAG检索增强生成:推理阶段接入私有知识库,不需要修改模型权重,工程落地更实用。
传统通用RAG、GraphRAG存在适配痛点:故障排查工单是多阶段演进的复杂记录,包含异构、噪声的人工操作痕迹。检索需要做到:定位相似的调查中间状态;保留完整连贯案例轨迹;区分有效指导信息与无效记录;同时做好敏感信息管控。
通用GraphRAG离线抽取实体‑关系构建图,聚焦实体关联,没有显式建模调查工单随时间推进的过程;图构建成本高,检索逻辑和实体表示强耦合,模型迭代时适配成本高。
RAFT核心设计思路
将每一条历史结案工单建模为有向时间线条目链;不在完整工单粒度检索,而在单条时间线条目粒度做嵌入与检索。当活跃工单走到某个排查阶段,可以匹配历史工单处于同一中间状态的条目;返回以匹配点为锚点的完整历史案例轨迹,提供当前阶段战术指导,同时给出同类案例后续演进的战略上下文。配套可选案例级图,基于可配置工单属性做案例关联,拓展条目匹配之外的相关案例召回。
评测设计思路:独立评测检索层,而非端到端完整智能体。端到端评测依赖生产环境,复现对比困难;检索层可以脱离上层智能体脚手架,跨模型、跨工作流做可复现测试。评测目标:给定活跃工单当前全部信息,RAFT是否可以召回能够支撑诊断、解决问题的相似历史案例。
公开可用的多阶段故障排查带标签数据集稀缺,本文使用两套互补数据集:
- 合成数据集:基于Microsoft Learn Windows Server故障排查文档构建,用于受控开发;
- Apache Jira真实工单:使用人工标注重复工单标签,验证方法在真实数据上的迁移效果。
主要贡献
- 提出有状态RAG架构RAFT,将历史工单表达为有向时间线条目链;在中间排查状态粒度检索,返回锚定在匹配位置的完整父案例轨迹。
- 实现可选案例级图,使用可配置案例属性关联工单,实现条目匹配之外的案例拓展召回。
- 开源合成评测基准:826条客服工单,可复现的评测协议,可以模拟活跃工单排查过程中不同阶段的检索效果。
- 在合成数据集与Apache Jira真实工单开展评测;在工单全部排查阶段,RAFT的Case‑(\mathcal{(\mathcal H)})it指标优于普通RAG、GraphRAG基线,具备统计显著性;开源实现、基准、Jira评测集合。
2 相关工作
RAG、Agentic‑RAG、GraphRAG已有多篇综述。
- 普通RAG将文档整体向量化检索;处理长时序演进的故障排查工单时,容易混入大量无关上下文,检索质量下降。
- GraphRAG离线抽取实体与关系构建知识图;面向通用文档,不原生支持时序演进的工单调查流程,图构建开销大。
故障排查、IT运维领域的RAG大多聚焦单轮静态问题查询;很少建模工单从上报、调查、定位根因、执行修复到结案的多阶段状态演进。RAFT区别:检索单元是工单内部时间线状态条目,而非完整工单或者实体节点,保留时序链路信息;案例图作为可选拓展模块。
3 问题定义
故障排查工单C CC:随时间推进的多阶段调查记录,包含问题现象、诊断操作、观测、假设、根因定位、修复操作、结案结论。
- 活跃工单C a c t i v e C_{active}Cactive:正在处理,仅执行到部分排查阶段;缺少后续根因、修复步骤。
- 历史结案工单集合KaTeX parse error: Can't use function '\(' in math mode at position 10: \mathcal{\̲(̲\mathcal{\(\mat…:全部流程完整结束的历史案例。
- 时间线条目e ee:工单内一个关键调查阶段的结构化记录,记录该时刻技术状态、操作、观测、中间假设。一条工单对应有序有向链[ e 1 , e 2 , … , e T ] [e_1,e_2,…,e_T][e1,e2,…,eT]。
检索任务:给定活跃工单当前已有的时间线{ e 1 , … , e t } \{e_1,…,e_t\}{e1,…,et},从历史库KaTeX parse error: Can't use function '\(' in math mode at position 10: \mathcal \̲(̲\mathcal{\(\mat…检索:
- 找到历史工单中,与e t e_tet(活跃工单当前状态)最相似的时间线条目e ′ e'e′;
- 返回该历史工单以e ′ e'e′为锚点的后续完整轨迹[ e ′ , e t + 1 ′ , … ] [e',e'_{t+1},…][e′,et+1′,…],用于给当前排查提供战术与战略参考;
- (可选)借助案例级图拓展召回其他相关历史工单。
评测目标:检索返回集合是否包含能够帮助定位根因、给出可行修复步骤的历史案例。
4 RAFT框架
整体分为两大模块:索引构建模块、检索模块。
4.1 索引构建模块
输入原始历史工单原始文本记录;输出:时间线条目链索引;可选案例级关联图。
子流程:工单评估过滤 → 生成时间线条目 →(可选)构建案例级图。
4.1.1 工单评估与过滤
不是所有结案工单都具备参考价值。本步骤对原始工单做评估:
- 过滤无效工单:无明确根因、无可复现操作、噪声过大、无有效修复方案的案例;
- 保留具备可复用排查经验的工单;
- 输出工单级元信息:工单类型、产品版本、组件、环境标签、问题大类,用于后续案例图构建。
4.1.2 时间线条目
将有效工单拆解成有序的时间线条目链e 1 , e 2 , … , e T e_1,e_2,…,e_Te1,e2,…,eT。
单条时间线条目字段:
{"entry_id":"唯一ID","stage":"排查阶段标签(现象采集/假设验证/根因定位/修复)","state_summary":"本阶段技术状态摘要","actions":["执行的诊断操作列表"],"observations":["操作返回观测结果"],"hypothesis":["当前阶段待验证假设"],"next_expected":"本阶段之后预期推进方向","parent_entry_id":"上一条条目ID,构建有向链","case_meta":"所属工单元数据"}每一条时间线条目独立生成Embedding向量;索引粒度为单条entry,不是完整工单。同时保留条目之间的有向父子关联,检索命中某一条e ′ e'e′之后,可以直接读取该条目往后整条后续轨迹。
关键:检索命中的是中间某一步状态,返回的是该点之后完整历史排查链路,而不是返回整个工单全部内容。
4.1.3 案例级图(可选模块)
基于工单元数据构建无向图G c a s e G_{case}Gcase。
- 节点:每一条过滤后的完整工单案例;
- 边:基于可配置相似度规则(产品组件、问题类型、版本标签等)建立案例之间关联;
使用场景:当条目粒度检索召回不足时,从命中案例的图邻居拓展更多潜在相关工单;作为条目检索的补充,不替代条目级检索。
4.2 检索模块
输入:活跃工单截至当前t tt步的时间线条目链,取最新条目e a c t i v e , t e_{active,t}eactive,t。
- 将e a c t i v e , t e_{active,t}eactive,t做Embedding,在时间线条目向量库做Top‑K向量相似度检索,得到候选时间线条目集合;
- 根据entry‑id回溯,取出每一个命中条目往后的整条历史轨迹,作为主检索结果;
- 【可选,开启案例图】取主命中对应的工单节点,读取图上邻居节点,拓展一批候选完整工单案例;
- 做结果重排、去重,输出最终检索集合,给到上层故障排查智能体。
设计优势:活跃工单只走到中间步骤,不需要完整复现最终问题现象,只需要匹配当前调查状态,就可以拿到历史后续完整排查路径。
5 实验
5.1 合成开发基准
数据集来源:Microsoft Learn Windows Server公开故障排查文档;自动生成826条模拟客服工单案例。
- 每条工单具备完整多阶段时间线;
- 评测协议:模拟工单推进过程,分别在排查的早期、中期、晚期不同阶段触发检索;
- 标注金标准:每个阶段应当召回的参考历史案例集合。
附录A完整描述数据集生成流水线。
5.2 对比基线
- Vanilla‑RAG:传统RAG,把完整结案工单作为文档单元,做全文档粒度向量检索;
- GraphRAG:官方标准GraphRAG流水线,实体‑关系图,完整工单为文档单元;
- RAFT(w/o graph):RAFT仅条目检索,关闭案例级图;
- RAFT(full):完整RAFT,条目检索 + 案例级图拓展。
5.3 评测指标
附录C.1完整定义
- Case (\mathcal{(\mathcal H)})it:检索返回集合中,是否至少包含1条金标准相关历史案例;布尔0/1,整条查询粒度。核心主指标。
- Root Cause Coverage(根因覆盖率):检索集合内案例能够覆盖真实根因的比例。
- Resolution Steps Coverage(解决步骤覆盖率):检索集合案例中可复用修复步骤的召回覆盖程度。
评测设置:模拟工单在不同排查阶段(早期、中期、后期)分别执行检索,统计各阶段指标。
5.4 合成基准实验结果
- 在工单排查早期、中期、晚期全部阶段:RAFT‑full与RAFT(w/o graph)的Case‑(\mathcal{(\mathcal H)})it均高于Vanilla‑RAG、GraphRAG基线,具备统计显著提升。
- 工单早期(信息不充分):案例图拓展模块带来小幅增益;中后阶段条目检索本身已经效果很好,图模块增益有限。
- Root Cause Coverage、Resolution Steps Coverage同步优于基线。
现象解释:传统RAG以完整工单为检索单元;活跃工单还没有出现最终根因现象,完整工单文档向量相似度低,很难召回。RAFT匹配中间排查状态条目,在尚未出现最终现象的早中期阶段依然可以命中相似历史。
补充消融:
- 查询鲁棒性:对摘要改写、表述变体具备鲁棒性;
- 图敏感性:图模块主要增益集中在工单排查早期;关闭图模块性能下降幅度有限;说明条目粒度检索是核心能力,图为补充增强。
5.5 Apache Jira人工标注真实数据评测
数据集:Apache开源项目Jira真实issue,带有人工标记的重复issue标签(duplicate);真实业务噪声高,工单流程不规范。
- 任务:给定一条活跃issue,检索历史重复/高度相似的历史issue。
- 结果:RAFT依然取得优于基线的指标,验证该框架能力可以迁移到真实世界非合成工单。
真实数据缺少细粒度阶段金标准标签,结果给出方向性证据,不做严格统计显著性断言。
6 结论
本文提出RAFT,面向故障排查智能体的有状态检索增强RAG框架。
- 将历史结案工单拆解为有序时间线条目链,在中间排查状态条目粒度检索;命中后返回锚定在匹配点之后的完整历史排查轨迹。
- 配套可选案例级图,用于条目检索召回不足时拓展相关案例。
- 在826条合成多阶段故障排查基准、Apache Jira真实issue数据集验证:相比Vanilla‑RAG、GraphRAG,Case‑(\mathcal{(\mathcal H)})it、根因覆盖率、解决步骤覆盖率指标提升;尤其在工单排查早中期优势明显。
开源:数据集、代码、Apache Jira评测集合:https://github.com/microsoft/RAFT
未来方向:
- 将检索层和完整故障排查智能体做端到端联合评测;
- 优化时间线条目自动抽取质量;
- 增加敏感信息过滤、权限管控模块,适配企业生产部署。
7 参考文献
完整参考文献查阅原始arXiv网页:https://arxiv.org/html/2609.20754v1
附录A Microsoft Learn合成数据集
A.1 知识库构建
从Microsoft Learn Windows Server官方故障排查文档抽取知识片段,构建知识库。
A.2 工单案例生成
基于知识库,模拟完整故障排查流程,自动生成826条多阶段模拟工单;每条工单包含完整时间线、根因、修复步骤;生成脚本开源。
A.3 Wiki文档的作用
Wiki作为背景参考知识,不直接作为检索文档;用于工单生成时保证技术事实正确性。
A.4 小结
合成数据集优势:具备分阶段金标签,适合做受控消融;局限是为模拟生成,和真实企业工单存在分布差异。
附录B 工单提取:输出模型与工作流
B.1 输出数据模型
定义JSON Schema:工单元信息、时间线条目完整字段、父子关联ID,用于把原始工单文本转成RAFT索引需要结构化时间线链。
B.2 基于智能体的工单提取工作流
原始工单(聊天记录、Jira issue文本)输入智能体,输出结构化时间线条目链。
B.2.1 上下文预算与模型选型
设置上下文窗口预算;大模型选型建议;超长工单做分片处理。
B.2.2 有界增量处理
超长工单不一次性全部送入,增量滚动处理,逐步生成时间线条目链,控制token开销。
B.2.3 可编辑状态与选择性证据访问
中间状态可编辑;智能体可以选择性读取原始证据片段,不需要加载全部原始工单。
B.2.4 最终审核与可追溯性
输出结构化时间线,保留每一条条目对应的原始文本片段引用ID,方便人工审核溯源。
B.2.5 评估与下游策略
对提取出的时间线条目做质量打分;低质量工单执行过滤(4.1.1过滤流程)。
B.3 索引构建流程
提取得到结构化时间线之后:条目Embedding生成、入库;元数据收集;可选构建案例级图;完整索引流水线伪代码、参数见附录。
附录C 补充实验
C.1 指标详情
Case‑(\mathcal{(\mathcal H)})it、Root Cause Coverage、Resolution Steps Coverage完整数学定义。
C.2 基线配置
Vanilla‑RAG、GraphRAG完整参数、Embedding模型、Top‑K设置。
C.3 不确定性分析
Bootstrap重采样,报告各指标置信区间、统计显著性检验设置。
C.4 查询鲁棒性
对时间线摘要做改写、复述、换种表述,测试检索指标下降幅度。
C.5 图模块贡献与敏感性分析
开启/关闭案例图;不同图边构建阈值下指标变化;验证图模块是补充增强,条目检索是核心。
C.6 附加实验
不同Top‑K取值消融;Embedding模型选型消融;时间线条目截断策略消融。
C.7 部署考量
生产部署建议:工单提取开销、索引更新频率、缓存策略、敏感信息脱敏、权限隔离。
附录D Apache Jira评测数据集
Apache Jira评测集合说明;issue筛选规则;人工duplicate标签使用说明;数据集开源位置。