来看一个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个最高排名的文本块。
步骤:
- 文档扩展:在重新排名阶段,框架会将知识路径与每个文本块进行拼接,形成扩展后的文档,这些文档将用于检索。
- 文本处理:将查询(query)与粗排阶段返回的k'个文本块结合起来,形成k'个查询-文档对。这些查询-文档对被输入到分词器中,生成LLM的输入数据。
- 相似性排名:将输入数据喂给LLM,获取查询与每个文本块的重新排名分数。根据这些分数对文本块进行排序,通常返回分数最高的k个(通常是6个)文本块作为最终结果。
4.多路排序融合
设计了多种排序融合策略,包括简单合并和互惠排名融合(RRF)。简单合并直接合并多路检索结果,而RRF则通过对多路检索结果的排名取倒数和来计算融合分数。
- 粗排合并:在粗排阶段,框架会从多个检索路径(例如,基于文本块的检索和基于路径的检索)中获取一组候选文档。这些文档集合会被去重并合并成一个单一的文档集合,然后这个集合会被传递给重排器(Reranker)进行进一步的排序。
- 重排融合:在每个检索路径上完成粗排和重排后,框架会采用特定的融合策略来整合这些路径的结果。
融合策略:
(1)使用RRF在粗略和精细排名后合并结果。
(2)将每条路线中的文本块输入到LLM中,以获得各自答案,并选择较长的答案作为最终答案。
(3)将每条路线中的文本块输入到LLM中,以获得各自答案,并直接连接所有路线中的答案。
小结:实际应用中,通常更倾向于使用第一种重排融合策略,即对每个路径分别进行重排,然后使用RRF融合结果作为最终输入到LLM的上下文。这种方法在实践中是有效的,因为它能够在保持较高准确性的同时,提高处理效率。
5.LLM答案生成与优化:将重排后的前K个文本块内容拼接成上下文字符串,再与问题一起输入GLM4生成答案。设计了答案整合提示,允许LLM利用Top1文本块补充和优化答案。
相关问答提示模版:
Markdown 格式问答模板:
思维连问答模版:
聚焦问答模版:
答案整合模板:
参考文献
- EasyRAG: Efficient Retrieval-Augmented Generation Framework for Automated Network Operations,https://arxiv.org/pdf/2410.10315v2
- code:https://github.com/BUAADreamer