本文介绍了FastRAG,一种针对半结构化数据的新型RAG方法。FastRAG采用模式学习和脚本学习来提取和结构化数据,而无需将整个数据源提交给LLM。它将文本搜索与知识图谱(KG)查询相结合,以提高在问答任务中检索上下文丰富信息的准确性。从评估结果来看,FastRAG在提供准确问答的同时,与GraphRAG相比,时间上提高了90%,成本上提高了85%。
FastRAG提出的背景和动机
FastRAG(Fast Retrieval-Augmented Generation)的提出主要基于以下几个动机和背景:
1. 网络数据处理的复杂性和挑战
随着网络规模的扩大,网络数据的多样性和复杂性显著增加。网络管理任务需要高效处理和理解半结构化数据,如日志和配置文件。传统的网络数据处理工具虽然在一定程度上提供了实用性,但在全面提取和利用嵌入在半结构化数据中的信息方面存在不足。此外,从不同供应商关联这些数据由于网络服务的分散实现而变得更加复杂。
2. 现有RAG方法的局限性
尽管大型语言模型(LLM)和检索增强生成(RAG)技术在处理和理解自然语言方面展示了巨大潜力,但现有的RAG方法如VectorRAG和GraphRAG在处理半结构化技术数据时存在一些局限性:
- VectorRAG:基于语义相似性从文本文档中提供上下文检索,但在处理网络数据的领域特定关键词时表现不佳,因为这些关键词在不同上下文中可能具有不同含义。
- GraphRAG:通过利用知识图谱(KG)组织从源文档中提取的信息,但在提供有用答案方面存在不足,特别是在查询需要精确匹配的特定值(如名称或类型)时。
- HybridRAG:结合了VectorRAG和GraphRAG的优势,提高了响应的准确性和上下文相关性,但仍继承了其基础方法的局限性。
3. 处理时间和成本的挑战
现有的RAG系统依赖LLM来提取结构化信息,通常需要将源文档分成小块并逐块处理,这导致了处理时间和成本的增加。特别是在处理大规模和频繁变化的网络数据时,这种逐块处理的方法效率低下且成本高昂。
4. 信息检索的准确性和效率
在网络管理中,准确和高效的信息检索至关重要。现有的RAG方法在处理半结构化技术数据时,往往无法充分利用数据的隐含信息,导致检索效率低下和准确性不足。
5. 模式和脚本学习的必要性
为了解决上述问题,FastRAG引入了模式学习和脚本学习技术。通过模式学习,系统能够自动识别和结构化源数据中的实体类型及其属性,而无需将整个数据源提交给LLM。脚本学习则进一步生成解析函数,以高效提取和处理数据。
6. 结合文本搜索和KG查询
FastRAG将文本搜索与知识图谱(KG)查询相结合,以提高在问答任务中检索上下文丰富信息的准确性。文本搜索基于精确的措辞或结构进行匹配,而KG查询则利用图数据库的结构化信息,两者结合可以更全面地回答复杂查询。
7. 成本和时间的优化
FastRAG通过生成JSON模式和Python代码进行数据结构化和解析,避免了通过LLM处理所有源数据的昂贵过程。这种方法显著减少了处理时间和成本,特别是在处理大规模和频繁变化的网络数据时。
FastRAG设计架构
FastRAG(Fast Retrieval-Augmented Generation)的设计架构旨在高效处理和检索半结构化网络数据,通过结合模式学习、脚本学习和信息检索技术,优化数据处理和问答任务的效率和准确性。
1. 总体架构概述
FastRAG的总体架构如上图所示,主要包括以下几个关键组件:
- 分块采样(Chunk Sampling):选择代表性的数据块进行处理,以减少处理时间和成本。
- 模式学习(Schema Learning):自动识别和结构化源数据中的实体类型及其属性。
- 脚本学习(Script Learning):生成解析函数,以高效提取和处理数据。
- 信息检索(Information Retrieval):结合文本搜索和知识图谱(KG)查询,提高问答任务的准确性。
2. 分块采样(Chunk Sampling)
分块采样是FastRAG的第一步,旨在选择代表性的数据块进行处理,以减少处理时间和成本。该过程涉及两个关键程序:关键词提取和块选择。
2.1 关键词提取
关键词提取从源数据中识别最有意义的术语。该过程包括以下步骤:
- 文本预处理:去除标点符号并将内容标记化为单个单词。
- 行分割:将文本分成行,并根据单词频率创建矩阵表示。
- K-means聚类:根据术语频率模式的相似性将行分组为nc个簇。
- 关键词选择:在每个簇中选择最接近质心的nt个术语作为关键词。
2.2 样本选择
样本选择算法选择包含提取关键词的完整集合的最小块集。该过程包括以下步骤:
- 预处理:只保留提取的关键词。
- TF-IDF向量计算:计算每个块的术语频率-逆文档频率(TF-IDF)向量。
- 香农熵计算:计算每个块的香农熵以衡量其信息多样性。
- 迭代选择:迭代选择块子集以最大化术语覆盖率,直到达到所需的覆盖率阈值。
3. 模式学习(Schema Learning)
模式学习是FastRAG的核心组件之一,旨在自动识别和结构化源数据中的实体类型及其属性。该过程包括以下步骤:
3.1 模式提取
- 初始模式生成:从第一个样本块开始,LLM被提示识别并将实体类型和属性结构化为JSON模式。
- 迭代细化:通过提交新块给LLM,迭代地细化之前的JSON模式。
- 验证和修正:每次提示后,验证生成的JSON模式是否良构,如有错误则进行修正。
3.2 模式类型
从最终模式中提取两种类型的对象:
- 步骤1模式:仅包括第1级实体类型(部分),每个实体类型包括描述和源数据行。
- 步骤2模式:每个部分与一个数组相关联,数组中的对象对应于该部分的完整模式。
4. 脚本学习(Script Learning)
脚本学习是FastRAG的另一个核心组件,旨在生成解析函数,以高效提取和处理数据。该过程包括以下步骤:
4.1 脚本生成
- 初始函数生成:从第一个样本块开始,LLM被提示生成解析函数。
- 迭代细化:通过提交新样本块给LLM,迭代地细化之前的函数代码。
- 验证和修正:每次提示后,验证生成的代码是否语法和功能正确,如有错误则进行修正。
4.2 独立处理
- 步骤1解析:将源数据中的每一行映射到其对应的部分,并将其分成固定大小的块。
- 步骤2解析:为每个部分生成特定的解析函数,并使用相应的解析函数处理每个部分内的数据。
5. 信息检索(Information Retrieval)
信息检索是FastRAG的最终组件,旨在结合文本搜索和知识图谱(KG)查询,提高问答任务的准确性。该过程包括以下步骤:
5.1 KG创建
- 实体插入:在JSON对象中识别的每个实体作为节点插入KG中,实体类型作为节点的标签。
- 属性分配:实体的简单类型属性直接分配为节点的属性,而本身是对象的属性则作为子节点插入。
- 输入数据节点:对于每个实体的input_data属性中的每一行,创建相应的节点并链接到父实体节点。
5.2 检索策略
定义并测试了几种检索策略以与KG交互:
- KG查询(图):使用提示向LLM提供KG的模式,生成语法正确的GQL语句,执行并解释结果。
- 文本搜索(文本):使用提示向LLM提供文本搜索功能的示例,生成仅使用文本搜索功能的GQL语句,执行并解释结果。
- 组合查询(组合):为给定的输入查询并行执行KG查询和文本搜索提示,将结果提供给LLM合成最终答案。
- 混合查询(混合):结合KG查询和文本搜索的能力,生成可以利用两种方法中任何相关功能的GQL语句。
总结
FastRAG的设计架构通过分块采样、模式学习、脚本学习和信息检索等关键组件,实现了高效处理和检索半结构化网络数据的目标。通过自动识别和结构化源数据中的实体类型及其属性,生成解析函数,并结合文本搜索和KG查询,FastRAG显著提高了数据处理的效率和问答任务的准确性,同时减少了处理时间和成本。