在根因分析(RCA)过程中应用了FastText方法:FastText被用于生成事件的嵌入表示,并在近邻搜索过程中用于计算事件之间的相似性,以提高根因分类的准确性。
- 4.2.1 节 :FastText 被用作嵌入模型,将事件诊断信息映射到一个数值向量空间,利用向量的欧几里得距离来衡量事件的语义相似性。
- 论文强调了 FastText 相对于其他方法的优势: 1)计算效率高 2)对文本输入长度不敏感 3)生成的向量是密集矩阵,计算相似性更容易 4)由于 RCA 任务具有领域特定的需求,且事件相关信息是公司内部数据,论文选择使用 自行训练的 FastText 模型,而不是成本较高的预训练大模型。
- 4.2.2 节:FastText 生成的嵌入用于计算历史事件的相似性,并帮助选择最接近的新事件的历史案例,作为 LLM 预测的示例输入。
- 论文提出了一种新的相似性计算公式,结合了 FastText 计算的向量距离,并引入了时间衰减因子,以更有效地选择最相关的历史事件。
- 它首先计算每对事件向量的欧几里得距离。重要的是,它还考虑了事件之间的时间距离,反映了我们在第 3 节中的见解 2(insight 2:由类似或相同根本原因引发的事件经常在短时间内重现)。这里,𝑇 (𝑥) 代表事件 𝑥 的日期。这种对时间距离的考虑至关重要,因为它会影响过去事件与当前事件的相关性。计算相似度后,我们从不同类别中选择前 𝐾 个事件作为 LLM 的演示。这种方法确保事件集的多样性和代表性,以实现有效的 LLM 推理。通过实证评估,𝛼 和 𝐾 的值分别确定为 0.3 和 5,如第 5.4 节所述。
- 论文评估了不同方法的效果,其中 FastText 的 Micro-F1 和 Macro-F1 评分分别为 0.076 和 0.004,表明单独使用 FastText 进行分类的效果较差,但在 embedding 任务中的应用仍然重要。
1.计算事件相似性
- 计算新事件与历史事件的 余弦相似度
- 找到最相似的 K 个历史事件,辅助 RCA 诊断
- 结合规则或 LLM 进行根因预测 2.应用于 RCA
- 使用 FastText 嵌入,找出最相似的历史事件
- 根据相似事件的根因标签,预测新事件的根因
1.复用历史 RCA 经验,减少重复分析 2.作为 RCA 预测的输入,提高 LLM的分析能力 LLM在进行 RCA 预测时,可以结合 最相似的历史事件 作为参考,以提供更准确的根因预测。这样可以减少 LLM 预测的幻觉,避免生成不准确的 RCA 结论。
1.计算 FastText 向量 • get_fasttext_vector(new_event_text) 获取新事件的向量表示 2.找到最相似的历史 RCA 事件 • 遍历 rca_database.csv,计算与新事件的 余弦相似度 • 选择相似度最高的历史事件。 3.构造 GPT 输入 • 将新事件日志 + 最相似事件的 RCA 结果,组合成 GPT 预测提示词(prompt) 4.调用 GPT 进行 RCA 预测 • 让 GPT 结合历史事件的 RCA 经验,推测新事件的根因,并提供解释
- FastTextEmbedding类:用于训练和管理FastText模型,将事件文本转换为向量
- TimeAwareNearestNeighbor类:实现了带时间衰减因子的最近邻搜索算法
- prepare_training_data函数:从历史故障数据中准备FastText训练数据
- 自动加载或训练FastText模型
- 从历史故障数据构建事件库
- 使用时间感知的最近邻搜索找到与当前故障相似的历史案例
- 输出格式化的结果
- 使专家代理能够调用RAG函数,查询相似的历史事件
- 这些代理可以使用历史案例来辅助分析当前故障
使用论文描述的FastText嵌入模型和最近邻搜索方法,当系统遇到新的故障时,专家代理可以调用RAG函数查询相似的历史案例,从而更有效地分析当前故障的根因。
- 使用FastText生成密集的向量表示
- 通过欧几里得距离计算语义相似性
- 引入时间衰减因子,考虑事件的时间相关性
- 从不同类别中选择相似事件,保证多样性
运维工程师(OperationEngineer)的角色主要是整合其他专家的分析结果,负责最终的根因分析报告生成,不直接参与历史案例查询,所以其system_message中明确写了技能为"None"。 架构专家(ArchitectExpert)的职责更多是提供系统架构相关信息,其技能主要是读取云平台信息和本地文件中的信息,不需要历史案例比对。 观测工程师(Observable_engineer_agent)负责数据获取和处理,已经注册了data等相关功能,其工作重点是当前数据的观测和处理,而非历史案例分析。
当前目录/ ├── fasttext.py └── TrainTicket/ ├── fault1/ │ ├── log.csv │ ├── trace.csv │ └── metric.csv ├── fault2/ │ ├── log.csv │ ├── trace.csv │ └── metric.csv └── ...
加载历史故障数据 训练FastText模型 分析新的故障事件 预测根因 我想要最终输出的结果是:'Return', 'Exception', 'Network Delay', 'CPU Contention',当中的一个