本文介绍了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显著提高了数据处理的效率和问答任务的准确性,同时减少了处理时间和成本。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。