今天分享的是一种针对半结构化数据处理的 RAG 方法:FastRAG。论文链接: https://arxiv.org/abs/2411.13773随着网络规模的不断扩大和数据量的激增,对网络数据的处理和理解变得越来越困难。传统的网络管理工具在处理半结构化数据(如日志和配置文件)时效率低下,难以全面提取和利用其中蕴含的信息。现有的大型语言模型(LLM)结合检索增强生成(RAG)技术,如VectorRAG和GraphRAG,虽然在上下文处理方面有所突破,但在处理半结构化网络数据时仍存在效率低下、成本高昂和检索不准确等问题。为解决上述问题,本文提出了FastRAG,一种针对半结构化数据的新型RAG方法。FastRAG通过模式学习和脚本学习高效提取和构建数据结构,避免了对完整数据源的逐块处理。同时,设计分块采样算法来选择适合提示的分块,优化了数据处理的时间和成本。此外,该方法结合文本检索与知识图谱查询(通过图查询语言GQL)的方法,显著提高了上下文信息的检索精度。实验表明,FastRAG在问答任务中表现优异,与GraphRAG相比,处理时间减少了90%,成本降低了85%,同时检索准确性也得到了增强。 FastRAG 的整体框架如上图所示,其主要由分块采样(Chunk sampling)、模式学习(Schema learning)、脚本学习(Script learning)和信息检索(Information Retrieval)这四部分组成。下面详细介绍每一组成部分。分块采样通过选择具有代表性的文本片段(chunk)来减少 LLM 的使用量,从而降低处理时间和成本。分块采样的步骤如下:模式学习利用 LLM 生成 JSON 模式,描述源数据中的实体类型和属性,从而将半结构化数据结构化。模式学习的步骤如下:生成模式:将样本文本提交给 LLM,生成初始的 JSON 模式。 评估模式:使用 LLM 评估生成的模式的质量,例如是否包含所有实体类型、属性描述是否准确等。 修改模式:根据评估结果修改模式,例如添加或删除实体类型、修改属性描述等。 重复迭代:重复执行生成模式、评估模式和修改模式的步骤,直到获得最佳结构。 脚本学习利用 LLM 生成 Python 代码,将源数据解析为结构化数据,并映射每个实体到原始文本中的具体行。脚本学习的步骤如下:生成代码:将源数据样本提交给 LLM,生成初始的解析代码。 评估代码:使用 LLM 评估生成的代码的质量,例如是否能够正确解析源数据、是否能够生成结构化数据等。 修改代码:根据评估结果修改代码,例如修复解析错误、改进代码结构等。 重复迭代:重复执行生成代码、评估代码和修改代码的步骤,直到获得最佳解析效果。
4. 信息检索(Information Retrieval)信息检索利用知识图谱和文本搜索技术,根据用户的查询信息从结构化数据中检索相关信息。信息检索的步骤如下:- 实体节点创建:在JSON对象中识别的每个实体都作为一个节点插入到KG中,实体类型作为节点的标签。
- ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: var(--articleFontsize);">属性节点创建:实体的简单类型属性直接作为节点的属性赋值,而属性本身为对象的,则作为子节点插入,并与其父节点连接。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: var(--articleFontsize);">文本节点创建:对于每个实体的输入数据属性中的每一行,都创建一个相应的节点,并链接到父实体节点。这些输入数据节点将用于利用NLP方法进行文本搜索。
FastRAG 是一种针对半结构化数据的高效处理方法,通过模式学习、脚本学习和信息检索的结合,克服了传统 RAG 方法在半结构化数据上应用的局限性。其自动化、灵活性和高效性使得它在处理大规模、不断更新的网络数据时具有显著的优势。 |