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
BGE-M3 是一种多语言嵌入(Embedding)模型,专为处理长文本和多种检索任务而设计。它在训练过程中结合了多个阶段的优化,包括预训练、无监督对比学习以及多功能检索优化,使其能够胜任多种自然语言处理任务,尤其是在文本表示和检索领域表现突出 [^1]。 BGE-M3 的主要用途包括但不限于以下几点: 1. **长文档检索**:BGE-M3 支持输入长度高达 8192 的文本,这在处理长文档时具有显著优势。实验表明,该模型在长文档检索任务中,稀疏检索(Sparse Retrieval)的效果优于稠密检索(Dense Retrieval),表明其在捕捉关键词信息方面的能力 [^2]。 2. **多语言支持**:BGE-M3 能够处理 105 种语言的网页数据和维基数据,并通过大规模的单语言和翻译对数据进行训练,从而具备强大的多语言理解和检索能力 。 3. **混合检索**:BGE-M3 支持稀疏检索、稠密检索和多向量检索等多种检索方式,适用于多样化的检索场景。这种多检索方式的统一优化,使模型能够在不同任务中灵活应用 。 4. **RAG(Retrieval-Augmented Generation)系统构建**:BGE-M3 可用于构建基于向量检索的 RAG 系统,帮助扩展 AI 的能力,例如快速开发基于 agent 的对话机器人 [^3]。 ### 示例代码 以下是一个使用 `transformers` 库加载 BGE-M3 模型并生成文本嵌入的示例: ```python from transformers import AutoTokenizer, AutoModel import torch # 加载 BGE-M3 模型和对应的 tokenizer tokenizer = AutoTokenizer.from_pretrained("BAAI/bge-m3") model = AutoModel.from_pretrained("BAAI/bge-m3") # 输入文本 sentences = ["这是一个示例句子。", "另一个句子用于测试嵌入生成。"] # 编码文本 inputs = tokenizer(sentences, padding=True, truncation=True, return_tensors="pt") # 生成嵌入 with torch.no_grad(): outputs = model(**inputs) embeddings = outputs.last_hidden_state.mean(dim=1) # 取平均作为句子表示 print(embeddings) ``` 该模型适用于需要高效文本表示和多语言支持的应用场景,例如搜索引擎、问答系统和文档分类等。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值