RAG入门: RetroMAE、BGE、M3、MemoRAG

RAG实际上第一步都是先做Retrieval,关于Retrieval的思路有很多,持续更新:

RetroMAE (论文RetroMAE: Pre-Training Retrieval-oriented Language Models Via Masked Auto-Encoder)

RetraoMAE包括两个模块,其一是一个类似于BERT的编码器,用于生成句向量,其二是一个一层transformer的解码器,用于重建句子。
在这里插入图片描述
在解码器部分采用了及其简单的网络结构跟非常激进的mask比例,从而使得解码任务变得极具挑战性,迫使encoder去生成高质量的句向量才能最终准确地完成原文本重建。
在这里插入图片描述
Bert解码策略有一种缺陷,就是训练信号只来源于被mask掉的token,而且每个mask掉的token都是基于同一个上下文重建的。于是研究人员提出了一种新的解码方法,Enhanced Decoding,具体做法如下。

  1. 首先生成两个不同的输入流H1(query)跟H2(context)
    在这里插入图片描述
  2. 通过attention机制得到新的输出A,这里的M是一个mask矩阵,第i个token所能看得到的其他token是通过抽样的方式决定的(当然要确保看不到自身token,而且都要看得见第一个token,也就是encoder所产出CLS句向量的信息)
    在这里插入图片描述
  3. 最终利用A跟H1去重建原文本,这里重建的目标不仅仅是被mask掉的token,而是全部token。

BGE (论文C-Pack: Packed Resources For General Chinese Embeddings)

这篇和数据相关比较多,核心的训练方法就是RetroMAE

M3-Embedding: Multi-Linguality, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation

M3-Embedding联合了3种常用的检索方式,对应三种不同的文本相似度计算方法,具体如下。

  • Dense retrieval: 给定一个文本,获取语言模型最后一层上[CLS]位置的隐状态,经过标准化作为文本的稠密向量表征。通过计算query跟doc的向量表征之间的内积就知道文本之间的稠密检索相似度。这是目前主流text embedding模型用的比较多的一种检索方式,这部分表征更注重文本整体的语义信息。

  • Lexical Retrieval:给定一个文本,获取语言模型最后一层上所有位置的隐状态,每个位置对应原始文本中的一个token,依次将每个位置的隐状态通过一个全连接层+Relu函数得到该token的权重,将所有每个token的隐状态*对应的权重再求和作为文本的稀疏表征(如果文本包含两个以上相同的token,则该token的权重取其中最大的权重值)。很熟悉的感觉吧,很像tfidf,也跟RetroMAE-V2的第二部分特征很相似,这部分特征更在意文本中各个token的信息,重要的token就赋予更高的权重。

  • Multi-Vec Retrieval: 给定一个文本,获取语言模型最后一层上所有位置的隐状态,经过一个全连接矩阵跟标准化后得到文本的多向量表征(文本的多向量表征维度为n*d,其中n是文本长度,d是隐状态维度)。给定query,query上第i个位置跟doc的相似度的计算方式为依次计算query第i个位置的多向量表征跟doc各个位置上的多向量表征之间的内积,取其中最大值作为其得分,将query上所有位置跟doc的相似度平均求和就得到对应的多向量表征相似度。其实这就是稠密检索的一个引申版本。

M3-Embedding的训练损失也相对复杂,包括两部分损失。首先第一部分是对比学习损失,沿用InfoNCE的方式,希望拉近query跟相关文档之间的距离,同时疏远query跟不相关文档之间的距离,但是由于M3-Embedding提供了三种相似度计算方式,所以这里其实是包含了3个对比学习损失的。第二部分蒸馏损失,研究人员将三种不同方式的相似度得分进行加权求和作为teacher分数,然后让三种相似度得分去学习teacher得分的信息,由此得到3个蒸馏损失。模型训练总体损失就是由这2*3个损失通过加权求和得到的。

MemoRAG: Moving Towards Next-Gen RAG via Memory-Inspired Knowledge Discovery

MemoRAG 的核心是一个记忆模块,它能够构建数据库的全局记忆,并生成与上下文相关的线索,从而有效地将知识数据库与准确答案所需的信息联系起来。
MemoRAG 的主要组件包括:

  • 记忆模块 (Memory Module): 它通过逐步压缩原始输入标记到一组更小的记忆标记,同时保留重要的语义信息。
  • 线索生成 (Clue Generation): 记忆模块根据输入查询生成草稿答案或线索,这些线索揭示了对当前任务潜在的信息需求,并指导检索工具在数据库中定位相关信息。
  • 检索 (Retrieval): 基于记忆模块生成的线索,MemoRAG 使用检索工具从数据库中检索最相关的信息。
  • 生成 (Generation): LLM的工作了
    在这里插入图片描述

附录(摘录整理自以下文章):

  1. 知乎对BGE的解读:
  2. 对M3的解读: https://zhuanlan.zhihu.com/p/681259219
  3. BGE登顶MTEB的神器–RetroMAE|一种基于自动编码的检索模型预训练方法: https://mp.weixin.qq.com/s?__biz=Mzk0NzMwNjU5Nw==&mid=2247484913&idx=1&sn=ddf8ecaf8c8ff7dac9acc37acd1dc938&chksm=c379acfbf40e25ed26fa743b9c3e85d748c90e9a097881b323de97efb4372720d7306c86330e&scene=21#wechat_redirect

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL例题】我在广州学Mysql 系列——有关数据备份与还原的示例

ℹ️大家好,我是练小杰,今天周二,明天就是元宵节了呀!!😆 俗话说“众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。” 本文主要对数据库备份与还原的知识点例题学习~~ 前情回顾&…

DeepSeek大模型一键部署解决方案:全平台多机分布式推理与国产硬件优化异构计算私有部署

DeepSeek R1 走红后,私有部署需求也随之增长,各种私有部署教程层出不穷。大部分教程只是简单地使用 Ollama、LM Studio 单机运行量化蒸馏模型,无法满足复杂场景需求。一些操作配置也过于繁琐,有的需要手动下载并合并分片模型文件&…

头歌实验---C/C++程序设计

目录 实验1:C语言程序设计编辑与调试环境 第1关:打印输出 Hello World 任务描述 答案代码 第2关:打印输出图形 任务描述 答案代码 第3关:求3个数的最大值 任务描述 答案代码 第4关:熟悉C语言调试过程 任务描…

Mysql进阶篇(mysqlcheck - 表维护程序)

mysqlcheck的作用 mysqlcheck客户端用于执行表维护,可以对表进行:分析、检查、优化或修复操作。 (1)分析的作用是查看表的关键字分布,能够让 sql 生成正确的执行计划(支持 InnoDB,MyISAM&#x…

单调栈及相关题解

单调递增栈:栈中数据入栈单调递增序列(栈底到栈顶是单调递增); 单调递减栈:栈中数据入栈单调递减序列(栈底到栈顶是单调递减)。 单调递增栈: 维护单调递增栈:遍历数组中每一个元素,执行入栈:每次入栈前先…

细胞计数专题 | LUNA-FX7™新自动对焦算法提高极低细胞浓度下的细胞计数准确性

现代细胞计数仪采用自动化方法,在特定浓度范围内进行细胞计数。其上限受限于在高浓度条件下准确区分细胞边界的能力,而相机视野等因素则决定了下限。在图像中仅包含少量可识别细胞或特征的情况下,自动对焦可能会失效,从而影响细胞…

P1878 舞蹈课(详解)c++

题目链接:P1878 舞蹈课 - 洛谷 | 计算机科学教育新生态 1.题目解析 1:我们可以发现任意两个相邻的都是异性,所以他们的舞蹈技术差值我们都要考虑,4和2的差值是2,2和4的差值是2,4和3的差值是1,根…

基于HAL库的按钮实验

实验目的 掌握STM32 HAL库的GPIO输入配置方法。 实现通过按钮控制LED亮灭(支持轮询和中断两种模式)。 熟悉STM32CubeMX的外部中断(EXTI)配置流程。 实验硬件 开发板:STM32系列开发板(如STM32F103C8T6、N…

如何使用智能化RFID管控系统,对涉密物品进行安全有效的管理?

载体主要包括纸质文件、笔记本电脑、优盘、光盘、移动硬盘、打印机、复印机、录音设备等,载体(特别是涉密载体)是各保密、机要单位保证涉密信息安全、防止涉密信息泄露的重要信息载体。载体管控系统主要采用RFID射频识别及物联网技术&#xf…

Spring Cloud-Sentinel

Sentinel服务熔断与限流 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。 官网地址:home | Sentinelhttps://sen…

土星云边缘计算微服务器 SE110S-WA32加持DeepSeek,本地部署企业私有推理大模型!

模型介绍 DeepSeek-R1-Distill-Qwen-7B是一款高性能的语言模型,基于DeepSeek-R1的推理能力,通过蒸馏技术将推理模式迁移到较小的Qwen模型上,在保持高性能的同时,显著降低了资源消耗,更适合在资源受限的环境中部署。 该…

React进阶之React核心源码解析(二)

React核心源码解析 diff单一节点比较diff多节点比较diff两轮遍历比较第一轮比较第二轮比较 Update 状态更新Concurrent Mode diff 一共两个阶段 render:内存中的更新,主要是通过递归的过程,来将react变化的部分,在内存中找到哪些…

安装WPS后,导致python调用Excel.Application异常,解决办法

在使用xlwings编辑excel文件时,默认调用的是“Excel.Application”,如果安装过wps,会导致该注册表为WPS,会导致xlwings执行异常 因为安装过WPS,导致与Excel不兼容的问题,想必大家都听说过。有些问题及时删…

FastExcel + Java:打造高效灵活的Excel数据导入导出解决方案

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 基于AOP的数据字典实现…

鸿蒙面试题

1.0penHarmony的系统架构是怎样的? 2.电话服务的框架? 3.OpenHarmony与HarmonyOS有啥区别?

基于 Filebeat 的日志收集

在现代分布式系统中,日志数据作为关键的监控与故障排查依据,越来越受到重视。本文将深入探讨 Filebeat 的技术原理、配置方法及在 ELK(Elasticsearch、Logstash、Kibana)生态系统中的应用,帮助开发者构建高效、稳定的日…

wireshark网络抓包

由于图片和格式解析问题,可前往 阅读原文 到这里已经讲了两个抓包工具的使用了,大家应该对抓包不是很陌生了。而wireshark相对于fiddler和charles更加偏向于网络层面的抓包或者说是一个网络封包分析工具。使用对象更适合于网络相关人员(网络管理员/相关运…

Jenkins 配置 Git Parameter 四

Jenkins 配置 Git Parameter 四 一、开启 项目参数设置 勾选 This project is parameterised 二、添加 Git Parameter 如果此处不显示 Git Parameter 说明 Jenkins 还没有安装 Git Parameter plugin 插件,请先安装插件 Jenkins 安装插件 三、设置基本参数 点击…

bitcoinjs学习1—P2PKH

1. 概述 在本学习笔记中,我们将深入探讨如何使用 bitcoinjs-lib 库构建和签名一个 P2PKH(Pay-to-PubKey-Hash) 比特币交易。P2PKH 是比特币网络中最常见和最基本的交易类型之一,理解其工作原理是掌握比特币交易构建的关键。 想要详…

2024年博客之星年度评选—创作影响力评审+主题文章创作评审目前排名(2024博客之星陪跑小分队助力2024博客之星创作者成长)

2024年博客之星年度评选—创作影响力评审主题文章创作评审目前排名 2024年博客之星主题文章创作评审文章得分公布!2024年博客之星创作影响力评审2024年博客之星主题文章创作评审目前排名公布! 【2024博客之星】恭喜完成✅主题创作的226位博主&#xff0…