RAG基础功能优化、以及RAG架构优化

news2024/11/19 2:27:28

RAG基础功能优化

对RAG的基础功能优化,我们要从RAG的流程入手[1],可以在每个阶段做相应的场景优化。

图片

从RAG的工作流程看,能优化的模块有:文档块切分、文本嵌入模型、提示工程优化、大模型迭代。下面针对每个模块分别做说明:

  • 文档块切分:设置适当的块间重叠、多粒度文档块切分、基于语义的文档切分、文档块摘要。

  • 文本嵌入模型:基于新语料微调嵌入模型、动态表征。

  • 提示工程优化:优化模板增加提示词约束、提示词改写。

  • 大模型迭代:基于正反馈微调模型、量化感知训练、提供大context window的推理模型。

此外,还可对query召回的文档块集合进行处理,比如:元数据过滤[7]、重排序减少文档块数量[2]。

RAG架构优化

2.1 Vector+KG RAG

经典的RAG架构中,context增强只用到了向量数据库。这种方法有一些缺点,比如无法获取长程关联知识[3]、信息密度低(尤其当LLM context window较小时不友好)。

图片

图2 跨chunk的关联知识向量库无法获取

那此题是否可解?答案是肯定的。一个比较好的方案是增加一路与向量库平行的KG(知识图谱)上下文增强策略。其技术架构图大致如下[4]:

图片

图3 基于KG+VS进行上下文增强

图3中query进行KG增强是通过NL2Cypher模块实现的。根据我的实践,我们可用更简单的图采样技术来进行KG上下文增强。具体流程是:根据query抽取实体,然后把实体作为种子节点对图进行采样(必要时,可把KG中节点和query中实体先向量化,通过向量相似度设置种子节点),然后把获取的子图转换成文本片段,从而达到上下文增强的效果。

LangChain官网提供了一个通过Graph对RAG应用进行增强的DevOps的例子,感兴趣的读者可以详细研究[5]。

2.2 Self-RAG

经典的RAG架构中(包括KG进行上下文增强),对召回的上下文无差别地与query进行合并,然后访问大模型输出应答。但有时召回的上下文可能与query无关或者矛盾,此时就应舍弃这个上下文,尤其当大模型上下文窗口较小时非常必要(目前4k的窗口比较常见)。

那有解决办法吗?答案又是肯定的,一个较好的解决方案是Self-RAG技术。由于篇幅所限,此处介绍其推理过程,训练过程需要借助GPT4进行辅助打标,就不展开说了。详细过程可参考我对Self-RAG的总结[6]。

图片

图4 RAG vs Self-RAG

如图4所示,右侧就是Self-RAG的工作流程。首先,根据query判断是否需要检索。如果需要,才检索若干passage,然后经一系列处理生成若干next segment候选。最后,对这些候选segment进行排序,生成最终的next segment。

Self-RAG的推理过程相对训练较简单,其算法内容如下:

图片

图5 Self-RAG推理算法

2.3 多向量检索器多模态RAG

本小节涉及三种工作模式[7],具体为:

  • 半结构化RAG(文本+表格)

  • 多模态RAG(文本+表格+图片)

  • 私有化多模态RAG(文本+表格+图片)

1)半结构化RAG(文本+表格)

图片

图6 半结构化RAG

此模式要同时处理文本与表格数据。其核心流程梳理如下[8]:

  1. 将原始文档进行版面分析(基于Unstructured工具[9]),生成原始文本 和 原始表格。

  2. 原始文本和原始表格经summary LLM处理,生成文本summary和表格summary。

  3. 用同一个embedding模型把文本summary和表格summary向量化,并存入多向量检索器。

  4. 多向量检索器存入文本/表格embedding的同时,也会存入相应的summary和raw data。

  5. 用户query向量化后,用ANN检索召回raw text和raw table。

  6. 根据query+raw text+raw table构造完整prompt,访问LLM生成最终结果。

2)多模态RAG(文本+表格+图片)

对多模态RAG而言,有三种技术路线[10],见下图:

图片

图7 多模态RAG

如图7所示,对多模态RAG而言有三种技术路线,如下我们做个简要说明:

  • 选项1:对文本和表格生成summary,然后应用多模态embedding模型把文本/表格summary、原始图片转化成embedding存入多向量检索器。对话时,根据query召回原始文本/表格/图像。然后将其喂给多模态LLM生成应答结果。

  • 选项2:首先应用多模态大模型(GPT4-V、LLaVA、FUYU-8b)生成图片summary。然后对文本/表格/图片summary进行向量化存入多向量检索器中。当生成应答的多模态大模型不具备时,可根据query召回原始文本/表格+图片summary。

  • 选项3:前置阶段同选项2相同。对话时,根据query召回原始文本/表格/图片。构造完整Prompt,访问多模态大模型生成应答结果。

3)私有化多模态RAG(文本+表格+图片)

如果数据安全是重要考量,那就需要把RAG流水线进行本地部署。比如可用LLaVA-7b生成图片摘要,Chroma作为向量数据库,Nomic's GPT4All作为开源嵌入模型,多向量检索器,Ollama.ai中的LLaMA2-13b-chat用于生成应答[11]。

参考资料

  1. Chatbots | ️ Langchain

  2. Rerankers and Two-Stage Retrieval | Pinecone

  3. Custom Retriever combining KG Index and VectorStore Index

  4. Enhanced QA Integrating Unstructured Knowledge Graph Using Neo4j and LangChain

  5. https://blog.langchain.dev/using-a-knowledge-graph-to-implement-a-devops-rag-application/

  6. AI pursuer:揭秘Self-RAG技术内幕

  7. Multi-Vector Retriever for RAG on tables, text, and images:Multi-Vector Retriever for RAG on tables, text, and images

  8. https://github.com/langchain-ai/langchain/blob/master/cookbook/Semi_Structured_RAG.ipynb?ref=blog.langchain.dev

  9. Unstructured | The Unstructured Data ETL for Your LLM

  10. https://github.com/langchain-ai/langchain/blob/master/cookbook/Semi_structured_and_multi_modal_RAG.ipynb?ref=blog.langchain.dev

  11. https://github.com/langchain-ai/langchain/blob/master/cookbook/Semi_structured_multi_modal_RAG_LLaMA2.ipynb?ref=blog.langchain.dev

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1389877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

按钮QPushButton的简单使用

1.相关说明 设置字体居左、居中、居右、字体颜色、字体类型 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() …

【电力电子】2 开、闭环单相桥式SPWM逆变仿真电路

【仅供参考】 【2022.11西南交大电力电子仿真】 目录 1 开环单相桥式SPWM逆变电路搭建及波形记录 2 闭环单相桥式SPWM逆变电路搭建及波形记录 1 开环单相桥式SPWM逆变电路搭建及波形记录 采用单极性调制法,按老师PPT(如下图)所示进行单相…

Server/PC 稳定性测试(Windows)

Server/PC 稳定性测试 1. CPU - 中央处理器1.1 CPU稳定性1.2 CPU温度 2. Memory - 内存2.1 内存性能 3. DISK - 硬盘3.1 HDD - 机械硬盘机械硬盘转速详解监测工具 3.2 SSD - 固态硬盘监测工具 4. 使用时长cpu能用多久?主板能用多久?内存能用多久&#xf…

移动端开发进阶之蓝牙通讯(三)

移动端开发进阶之蓝牙通讯(三) 移动端蓝牙通讯的主要特点是无线、便捷和高效; 它能够摆脱传统有线连接的束缚,让用户更加自由地使用设备; 同时,蓝牙通讯协议经过多年的发展和完善,已经具备了较…

软件测试|SQLAlchemy query() 方法查询数据

简介 上一篇文章我们介绍了SQLAlchemy 的安装和基础使用,本文我们来详细介绍一下如何使用SQLAlchemy的query()方法来高效的查询我们的数据。 创建模型 我们可以先创建一个可供我们查询的模型,也可以复用上一篇文章中我们创建的模型,代码如…

RabbitMQ脑裂处理

脑裂现象: Network partition detected Mnesia reports that this RabbitMQ cluster has experienced a network partition. There is a risk of losing data. Please read RabbitMQ documentation about network partitions and the possible solutions. 转载请在文…

山东特产,乳山生蚝有话说

牡蛎,又叫生蚝,是无数吃货钟爱的海鲜美味。爱吃生蚝的法国人称之为“海中牛奶”,我国民间也有说法:“冬至到清明,蚝肉肥晶晶。”说的就是眼下,生蚝最肥美的冬春时节,也是“中国牡蛎之乡”山东乳…

vue中设置注释模板

参考地址 ctrlshiftp 打开编辑器配置输入configure user snippets - 选择 new global snipp files - 命名为 vueComment,弹出注释模板,即可自定义注释 如下/// 回车 即可在代码块中使用注释 { "Print to console": {"prefix": &q…

整型和浮点数在内存中的存储

前言 我们都知道数据在计算机中是以二进制的形式存储的,那么问题来了,不同类型的数据的具体存储方式是什么,今天我想就整形和浮点数展开叙述。 一. 整数在内存中的存储 1.1源码,反码和补码 整数的2进制表⽰⽅法有三种&#xff0…

静态住宅代理与动态住宅代理的区别?如何选?

住宅代理ip分类两种类型:静态住宅代理和动态住宅代理,他们有什么区别又能用在什么场景呢?我们先从他们是如何运作开始。 一、什么是住宅代理ip isp住宅代理ip我们称为真人住宅代理,地址是从真人/家庭中出发,安全性更高…

软件测试|Pydantic处理时间类型数据

简介 我们之前介绍过使用pydantic验证数据,比如校验数据的格式等,但是在我们的日常工作中,还有一种数据是需要我们验证的,比如时间数据,时间数据不同于字符串,列表等数据,与他们的验证不一样&a…

HNU-模式识别-作业1-视频监控系统

模式识别-作业1 计科210X 甘晴void 202108010XXX 【评分:98/100】 题目: 查阅相关技术资料,根据自己家庭相应的情况,设计一个视频监控系统。要求: 系统功能说明系统布线图及说明系统软硬件配置说明 饱和式自家用…

回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测

回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-GRU蛇群算法优化门控循环单元的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SO-GRU蛇群算法优化门控循环单元的数…

Leetcode21-环和杆(2103)

1、题目 总计有 n 个环,环的颜色可以是红、绿、蓝中的一种。这些环分别穿在 10 根编号为 0 到 9 的杆上。 给你一个长度为 2n 的字符串 rings ,表示这 n 个环在杆上的分布。rings 中每两个字符形成一个 颜色位置对 ,用于描述每个环&#xf…

超越GPU:TPU能成为接班人吗?

在计算机的世界里,硬件技术的发展一直在快速推进。今天,我们要谈论的就是一种特殊的处理器:TPU,全称是Tensor Processing Unit。在我们开始深入探讨TPU之前,先了解一下两个重要的芯片技术,FPGA和ASIC。 FP…

部署Tomcat

Tomcat简介 名称由来:Tomcat最初是由 Sun的软件构架师詹姆斯邓肯戴维森开发的,后来他帮助将其变 为开源项目,并由Sun贡献给Apache软件基金会,由于大部分开源项目OReilly都会出一本相关的 书,并且将其封面设计成某个动物…

基于SSM的戏剧推广网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是…

TikTok电商加快闭环,独享IP为运营带来哪些好处?

近日有消息称TikTok电商在加快闭环,以后商家可能无法继续在TikTok上为其他电商平台或独立站引流了。如今“TikTok Shop Shopping Center”平台正在构建,将各种购物渠道整合为一体,这可能是一种趋势,意味着TikTok逐渐从社交应用转型…

web前端第二次

第一题&#xff1a; <!DOCTYPE html> <html> <head><title>计算奇数和</title> </head> <body><label for"input">请输入一个正整数&#xff1a;</label><input type"number" id"input&qu…

Temu活动库存怎么设置?Temu活动报名后无库存怎么办?站斧浏览器

Temu活动库存怎么设置&#xff1f; 了解平台规则&#xff1a;在设置库存之前&#xff0c;详细了解Temu平台的库存管理规则和最佳实践。 设定合理库存量&#xff1a;根据商品的销售历史、市场需求和生产能力&#xff0c;设定合理的库存量。 定期检查与调整&#xff1a;库存设…