当前位置: 首页 > news >正文

【RAG】aiops第一名方案-EasyRAG:自动网络运营的高效检索增强生成框架

来看一个RAG比赛方案,提出了一个名为EasyRAG的框架,用于自动化网络操作的检索增强生成。该框架旨在解决网络操作中信息检索和生成效率低、准确性差的问题。研究难点包括:如何在保证准确性的前提下提高检索和生成的效率;如何实现简单快速的部署;如何在推理过程中显著减少延迟。

比赛地址:competition.aiops-challenge.com

方法

整体包含两部分,数据处理工作流和RAG工作流

EasyRAG框架

数据处理工作流

1.数据处理与文本分割

对原始数据进行处理,解压并提取HTML文档中的文本、图像标题和路径信息。使用SentenceSplitter进行分词,初始按中文标点分割,然后根据设定的文本块大小合并(文本分割chunk使用的块大小(chunk-size)是1024,块重叠大小(chunk-overlap)是200)。为了消除路径影响,实现了一个自定义的分词类,去除路径长度的影响。

2.图像信息提取:使用GLM-4V-9B模型从所有图像中提取信息,并通过使用PP-OCRv4模型从图像中提取文本内容,过滤掉不包含中文的图像,再根据标题和内容过滤掉无用图像。

RAG工作流

1.查询重写:在输入RAG pipline之前,使用GLM4进行查询重写,包括查询扩展和假设文档嵌入(HyDE)。使用LLM总结查询中的关键术语或其他潜在相关关键词,即利用LLM的知识进行操作和通信领域的关键词关联和总结。这被称为关键词扩展;HyDE则通过生成虚构文档来处理缺乏特异性的查询。

生成假设性文档的过程

2.粗排检索:采用BM25算法进行双路稀疏检索和密集检索。BM25算法基于词频(TF)和逆文档频率(IDF),并结合文档长度信息计算文档与查询的相关性。密集检索使用gte-Qwen2-7B-instruct模型,通过余弦相似度匹配召回相关文本块。

3.重排:使用bge-reranker-v2-minicpm-layerwise模型(模型在中文和英文中都表现出高级的排名性能,并包括附带工具代码,可以方便地针对特定场景进行微调。在实际的推理(inference)过程中,重排器是耗时的部分。因此,EasyRAG框架探索了使用不同层数的模型来平衡推理时间和排名准确性。例如,可以选用28层或40层的模型,根据资源限制和性能需求进行选择。)进行LLM重排,结合知识路径和文本块进行相似度排名,返回前K个最高排名的文本块。

步骤:

  1. 文档扩展:在重新排名阶段,框架会将知识路径与每个文本块进行拼接,形成扩展后的文档,这些文档将用于检索。

  2. 文本处理:将查询(query)与粗排阶段返回的k’个文本块结合起来,形成k’个查询-文档对。这些查询-文档对被输入到分词器中,生成LLM的输入数据。

  3. 相似性排名:将输入数据喂给LLM,获取查询与每个文本块的重新排名分数。根据这些分数对文本块进行排序,通常返回分数最高的k个(通常是6个)文本块作为最终结果。

4.多路排序融合

设计了多种排序融合策略,包括简单合并和互惠排名融合(RRF)。简单合并直接合并多路检索结果,而RRF则通过对多路检索结果的排名取倒数和来计算融合分数。

  • 粗排合并:在粗排阶段,框架会从多个检索路径(例如,基于文本块的检索和基于路径的检索)中获取一组候选文档。这些文档集合会被去重并合并成一个单一的文档集合,然后这个集合会被传递给重排器(Reranker)进行进一步的排序。

  • 重排融合:在每个检索路径上完成粗排和重排后,框架会采用特定的融合策略来整合这些路径的结果。

    融合策略

    • (1)使用RRF在粗略和精细排名后合并结果。
    • (2)将每条路线中的文本块输入到LLM中,以获得各自答案,并选择较长的答案作为最终答案。
    • (3)将每条路线中的文本块输入到LLM中,以获得各自答案,并直接连接所有路线中的答案。

小结:实际应用中,通常更倾向于使用第一种重排融合策略,即对每个路径分别进行重排,然后使用RRF融合结果作为最终输入到LLM的上下文。这种方法在实践中是有效的,因为它能够在保持较高准确性的同时,提高处理效率。

5.LLM答案生成与优化:将重排后的前K个文本块内容拼接成上下文字符串,再与问题一起输入GLM4生成答案。设计了答案整合提示,允许LLM利用Top1文本块补充和优化答案。

相关问答提示模版:

Markdown 格式问答模板:

## Objective
Please, based on the information from
k private domain documents about 5G
operational maintenance, answer the given
question.
## Requirements
1. You may itemize your answer; be as
detailed and specific as possible.
2. Do not merely repeat information from
the context.
3. Do not use your own knowledge; rely
solely on the content from the context
documents.
## Context
{context_str}
## Question
{query_str}
## Answer

思维连问答模版:

Context information as follows:
----------
{context_str}
----------
Please answer the following question based
on the context information rather than your
own knowledge. Think step by step, first
provide an analysis process, then generate
an answer:
{query_str}
Answer:

聚焦问答模版:

Context information as follows:
----------
{context_str}
----------
Please answer the following question based
on the context information rather than
your own knowledge. You may itemize
your answer. Document 0’s content is
particularly important, consider it carefully.
If the context does not contain relevant
knowledge, you may respond with ’uncertain’. Do not simply restate the context
information:
{query_str}
Answer:

答案整合模板:

Context:
----------
{top1_content_str}
----------
You will see a question and a corresponding
reference answer
Please, based on the context knowledge and
not your own knowledge, supplement the
reference answer to make it more complete
in addressing the question
Please note, strictly retain every character
of the reference answer and reasonably
integrate your supplement with the reference answer to produce a longer, more
complete answer containing more terms
and itemization
Question:
{query_str}
Reference answer:
{answer_str}
New answer:

参考文献

  • EasyRAG: Efficient Retrieval-Augmented Generation Framework for Automated Network Operations,https://arxiv.org/pdf/2410.10315v2
  • code:https://github.com/BUAADreamer

相关文章:

【RAG】aiops第一名方案-EasyRAG:自动网络运营的高效检索增强生成框架

来看一个RAG比赛方案,提出了一个名为EasyRAG的框架,用于自动化网络操作的检索增强生成。该框架旨在解决网络操作中信息检索和生成效率低、准确性差的问题。研究难点包括:如何在保证准确性的前提下提高检索和生成的效率;如何实现简…...

3款备受好评的电脑数据恢复软件,赶紧收藏以备不时之需

在日常工作和生活中,电脑数据丢失是许多人都会遇到的问题。无论是误删文件、硬盘格式化,还是系统崩溃,都可能导致重要数据的丢失。所以,好用的数据恢复软件必不可少。 但在如今的市场上数据恢复软件琳琅满目,它们在恢复…...

.net core 实现多线程方式有哪些

在 .NET Core 中,有多种方式可以实现多线程编程。这些方式包括使用 Thread 类、Task 和 Parallel 类库。每种方法都有其适用场景和优缺点。下面我将通过代码示例来展示这些不同的多线程实现方式。 1. 使用 Thread 类 Thread 类是 .NET 中最基本的多线程实现方式。…...

《Linux从小白到高手》综合应用篇:深入理解Linux磁盘及IO优化

1. 前言 其实磁盘优化和IO优化,我在前面的其他Linux调优博文中已经讲述过或者涉及过了,但是太过零碎,所以本篇就来集中深入讨论下Linux磁盘和IO调优。 2.磁盘调优 结合我多年的经验,本人认为磁盘调优最重要的是读写性能的提升和…...

【Linux】内存文件系统的I/O、重定向

文章目录 1. 系统中的文件2. 回顾C中的文件接口3. 文件类的系统调用3.1 open3.2 文件描述符 4. IO的基本过程5.重定向5.1 引入重定向5.2 系统中的重定向接口 6. 缓冲区问题7. 简单版shell的实现 1. 系统中的文件 在学习完Linux权限后,我们清楚的知道:文…...

力扣10.18

1463. 摘樱桃 II 给你一个 rows x cols 的矩阵 grid 来表示一块樱桃地。 grid 中每个格子的数字表示你能获得的樱桃数目。 你有两个机器人帮你收集樱桃,机器人 1 从左上角格子 (0,0) 出发,机器人 2 从右上角格子 (0, cols-1) 出发。 请你按照如下规则…...

cs木马图形化界面出现问题处理

一个月多月没用cs木马了,发现打开客户端之后显示不出图形化界面,且出现下面这样的报错。 、 最后发现是java版本的问题,kali的java自动更新了。把原来的openjdk11改到了openjdk23。 解决方法: 输入: sudo update-…...

数据结构与算法 - 树 #数的概念 #二叉树 #堆 - 堆的实现/堆排序/TOP-K问题

文章目录 前言 一、树 (一)、概念 1、树的定义 (二)、树的定义 1、树为什么是递归定义的? 2、如何定义树(如何表达一棵树) 解决方案一:假设我们得知该树的度 解决方案二:顺序表 解决方案三:左孩子右兄弟表示法 二、二叉…...

Git推送被拒

今天开发完成一个新的需求,将自己的分支合并到test分支后,推送到远程仓库,结果显示推送被拒: 原因是因为有人更新了test分支的代码,我在合并之前没有拉取最新的test分支代码,所以他提示我“推送前需要合并…...

Jmeter进行http接口测试

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 本文主要针对http接口进行测试,使用jmeter工具实现。 Jmeter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较…...

工业相机详解及选型

工业相机相对于传统的民用相机而言,具有搞图像稳定性,传输能力和高抗干扰能力等,目前市面上的工业相机大多数是基于CCD(Charge Coupled Device)或CMOS(Complementary Metal Oxide Semiconductor)芯片的相机。 一,工业相机的分类 …...

RAID 矩阵

在架构设计中,RAID矩阵(RAID Log)是一个用于项目管理和风险管理的工具,帮助团队有效管理和跟踪项目中可能影响成功交付的关键因素。与存储技术中的 RAID 不同,这里的 RAID 是一个缩写,代表: R:…...

详细分析Redisson分布式锁中的renewExpiration()方法

目录 一、Redisson分布式锁的续期 整体分析 具体步骤和逻辑分析 为什么需要递归调用? 定时任务的生命周期? 一、Redisson分布式锁的续期 Redisson是一个基于Redis的Java分布式锁实现。它允许多个进程或线程之间安全地共享资源。为了实现这一点&…...

实验3,网络地址转换

实验3:网络地址转换 实验目的及要求: 通过实验,掌握NAT技术的工作原理,了解三种不同类型NAT技术的主要作用以及各自的主要应用环境。能够完成静态NAT和复用NAT技术的应用,并熟练掌握NAT技术相关的配置命令。 实验设…...

Java 中的 String 字符串是不可变的

文章目录 什么是不可变字符串?举个例子直观理解 不可变的原理1. 内部实现2. 字符串常量池3. 线程安全 为什么要设计成不可变?什么时候用可变字符串?示例 总结推荐阅读文章 在 Java 编程中,字符串(String)是…...

计算机网络架构实例

小型企业网络 1. 终端设备: - 员工的台式电脑和笔记本电脑,用于日常办公,如文档处理、邮件收发、业务软件使用等。 - 智能手机和平板电脑,方便员工在外出或移动办公时也能接入公司网络,查看邮件和处理紧急事务。 2.…...

Chrome与Firefox浏览器HTTP自动跳转HTTPS的解决方案

一、背景介绍 随着网络安全意识的不断提高,越来越多的网站开始采用HTTPS协议,以确保数据传输的安全性。然而,有时用户在浏览网页时,可能会遇到HTTP请求被自动跳转至HTTPS的情况导致网站打不开,提示安全问题&#xff0…...

众数信科荣登“2024 CHINA AIGC 100”榜单

2024年10月17日,由非凡产研推出的「2024 CHINA AIGC 100」榜单隆重发布,众数信科凭借领先的企业AI智能体解决方案能力荣登榜单。 非凡产研AIGC 100 评选旨在挖掘国内具有高潜力的AI应用,为AI产业的高质量发展注入新动力。榜单覆盖了教育、医疗…...

【AI知识】距离度量和相似性度量的常见算法

本文介绍一些AI中常见的距离度量和相似性度量算法: 1. 欧几里得距离(Euclidean Distance) 欧几里得距离是最常见的距离度量方法,用来计算两个向量之间的“直线距离”,也被成为L2范数。 公式如下,其中 x…...

LeetCode1004.最大连续1的个数

题目链接:1004. 最大连续1的个数 III - 力扣(LeetCode) 1.常规解法(会超时) 遍历数组,当元素是1时个数加一,当元素是0时且已有的0的个数不超过题目限制时,个数加一,若上…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...