全面解读FastRAG:专为半结构化数据打造的高效检索增强生成(RAG)新方法

论文链接: https://arxiv.org/abs/2411.13773
01
随着网络规模持续扩张、数据洪流不断加剧,如何高效处理并深度理解这些海量网络信息,已成为行业核心挑战。传统网络管理工具在处理日志、配置文档等半结构化数据时,往往难以充分挖掘其内在价值,效率瓶颈明显。尽管大型语言模型(LLM)结合检索增强生成(RAG)技术——例如VectorRAG、GraphRAG——已在上下文理解方面取得突破,但面对半结构化网络数据,依然存在效率低下、成本偏高、检索精度不足等顽疾。针对这些痛点,本文提出FastRAG,一种专为半结构化数据量身定制的新型RAG解决方案。其核心理念在于借助模式学习与脚本学习,快速提取并构建数据结构,绕过传统方法需逐块处理完整数据源的笨重流程。同时,FastRAG设计了一套分块采样算法,仅挑选适合提示的文本块,大幅压缩处理时间与计算成本。更值得一提的是,它将文本检索与知识图谱查询(基于图查询语言GQL)巧妙融合,显著提升上下文信息的检索精确度。实验数据令人振奋:在问答任务中,FastRAG相较GraphRAG,处理耗时降低90%,成本减少85%,检索准确率也更胜一筹。
02
方法

FastRAG的整体架构如上图所示,主要由四大模块构成:分块采样、模式学习、脚本学习与信息检索。下面逐一深入拆解。
1. 分块采样(Chunk sampling)
分块采样旨在解决一个关键问题:如何以最少的LLM调用次数,筛选出最具代表性的文本片段,从而有效降低时间与成本。具体实现步骤如下:
- 数据预处理:对原始数据执行清洗操作,例如去除无关字符、进行分词处理等。
- 关键词提取:利用K-means聚类算法将预处理后的数据划分为多个簇,随后从每个簇中选取距离质心最近的前k个词作为关键词——这些词汇能够较好地代表文本中的核心信息。
- 样本选择:
- 计算TF-IDF向量:为每个簇内的文本计算TF-IDF向量,用以衡量各文本的重要性。
- 计算熵值:再计算每个文本的熵值,评估其信息多样性。
- 选定样本:最终挑选出包含所有关键词且熵值最大的前k个文本作为最终样本。该算法确保所选样本既具备代表性,又能覆盖原始数据的语法特征。
2. 模式学习(Schema learning)
模式学习的目标是将半结构化数据转化为结构化的清晰描述——引导LLM生成一个JSON模式,用于定义源数据中的实体类型及其属性。具体流程如下:
- 生成模式:将样本数据输入LLM,让其先输出一个初始的JSON模式。
- 评估模式:让LLM自行评价该模式的质量,例如是否覆盖了所有实体类型、属性描述是否准确。
- 修改模式:根据评估结果进行调优,比如增删实体类型、修正属性描述。
- 重复迭代:不断循环“生成→评估→修改”过程,直至获得最佳的结构定义。
3. 脚本学习(Script learning)
脚本学习则要求LLM生成用于解析的Python代码,将源数据拆分为结构化数据,同时将每个实体映射回原始文本中的具体行。步骤类似:
- 生成代码:将源数据样本交给LLM,让其编写一份初始的解析代码。
- 评估代码:让LLM评判代码质量——能否正确解析源数据?能否成功生成结构化数据?
- 修改代码:根据反馈修复问题、优化代码结构。
- 重复迭代:同样经过多轮循环,直至解析效果达到预期。
4. 信息检索(Information Retrieval)
信息检索模块借助知识图谱与文本搜索技术,根据用户查询从结构化数据中精准获取相关信息。先构建图谱,再选择合适的检索策略。
知识图谱构建:
- 实体节点创建:将JSON对象中识别出的每个实体作为一个节点插入知识图谱,实体类型作为节点标签。
- 属性节点创建:对于实体的简单类型属性,直接作为节点属性赋值;若属性本身是对象,则将其作为子节点插入,并与父节点建立连接。
- 文本节点创建:针对每个实体的输入数据属性中的每一行,都创建一个对应节点,链接到父实体节点。这些文本节点后续用于NLP文本搜索。
检索策略:提供多种灵活方式:
- 图查询:让LLM生成GQL语句,直接从知识图谱中检索所需信息。
- 文本搜索:让LLM生成仅调用文本搜索功能的GQL语句。
- 混合查询:同时执行图查询与文本搜索,将结果合并输出。
- Hybrid查询:更进一步,指令LLM生成一条能同时利用图谱与文本两种能力的GQL语句。
03
总结
FastRAG为半结构化数据处理开辟了一条全新路径。它通过模式学习、脚本学习与灵活的信息检索机制,有效规避了传统RAG方法在处理半结构化数据时的固有短板。自动化、灵活、高效——这三大核心优势,使其在大规模、频繁更新的网络数据场景中展现出显著竞争力。
