【AI学习】RAG与推荐系统

一、《双塔模型的瓶颈究竟在哪?》

文章介绍了谷歌的一篇论文,《Large Dual Encoders Are Generalizable Retrievers》
文章主要在讲,稠密检索模型在OOD(Out-Of-Distribution,即域外)泛化能力不行,主要还是模型规模和训练数据的问题。
文章在固定稠密向量维度不变的条件下,采用不同尺寸的T5-encoder(base、large、3B、11B)训练稠密检索模型。实验结果表明,“稠密检索模型的瓶颈并不完全在于单个向量的表示能力不足,编码器的能力也会在很大程度上影响模型的泛化能力。”
文章中模型的损失函数,使用了余弦相似度,而不是点积相似度。针对“使用余弦相似度度量训练的模型会偏向于检索出短文档,而使用点积相似度训练的模型会偏向于检索出长文档”,文章验证当模型尺寸变大之后,这一论点是否还成立。结论是当模型尺寸变大之后,模型能够生成更优质的文档编码,长度偏差问题就没那么严重了。

借助kimi,学习了文章中两个相关知识:BM25和稠密检索模型
BM25
在这里插入图片描述

稠密检索模型(Dense Retriever)是自然语言处理(NLP)和信息检索领域中的一个术语,它指的是一种基于密集向量表示的文档检索方法。这种模型之所以被称为“稠密”(Dense),是因为它们使用连续的、稠密的向量(通常是实数向量)来表示查询(query)和文档(document),而不是传统的稀疏向量表示。
在传统的信息检索系统中,文档和查询通常是通过稀疏向量表示的,例如使用TF-IDF(词频-逆文档频率)或词袋模型(Bag of Words),其中向量中的每个元素对应于词汇表中的一个单词,并且只有单词出现时元素才非零。
相比之下,稠密检索模型使用深度学习技术,如变换器(Transformers)或BERT(Bidirectional Encoder Representations from Transformers),来生成每个文档和查询的密集向量表示。这些向量能够捕捉到文档和查询之间的语义相似性,因为它们是在连续的向量空间中通过学习大量的文本数据得到的。
稠密向量表示的优势在于:

  1. 语义相关性:稠密向量能够捕捉到单词和短语之间的语义关系,甚至是词汇表之外的语义信息。
  2. 计算效率:稠密向量可以通过点积(dot product)或余弦相似度(cosine similarity)快速计算相似性,这在大规模检索任务中非常有用。
  3. 灵活性:稠密向量可以用于各种不同的任务,包括语义搜索、问答系统和对话系统。
    然而,稠密检索模型也有其挑战,比如需要大量的计算资源来训练大型模型,以及可能存在的域外泛化能力问题。文章中提到的研究表明,通过增加模型的大小和提供更多的训练数据,可以提高稠密检索模型的泛化能力。

二、《推荐系统 Wide&Deep 模型详解》

看到上篇文章讲双塔模型,印象中推荐系统也有使用双塔模型,想起之前的一篇文章,一直存着没看。
看了看,发现推荐系统和RAG,果然有很多相似的地方,核心问题都是Retrieval,模型架构里都有Retrieval和重排

三、RAG与推荐系统的相似与不同

借助kimi,理解如下:
推荐系统和RAG(Retrieval-Augmented Generation)确实在某些方面有相似之处,尤其是在处理信息检索和生成任务时。

1. Retrieval(检索)

推荐系统

  • 在推荐系统中,检索步骤通常涉及从大量的候选集中快速找到一小部分与用户相关的项目。这可以通过各种方法实现,如基于内容的推荐、协同过滤、深度学习模型等。

RAG

  • RAG是一种结合了检索和生成的序列生成方法。在检索步骤中,模型会从大量候选文档中检索出与输入查询最相关的文档片段。

2. 重排(Ranking/Re-ranking)

推荐系统

  • 重排步骤是对检索阶段得到的结果进行排序,以确定哪些项目最有可能被用户喜欢或点击。这通常涉及到预测用户对每个项目的兴趣,如使用CTR(点击通过率)模型进行排序。

RAG

  • 在RAG中,重排可能涉及到对检索到的文档片段进行排序,以便选择最相关或最有用的信息来生成回复或续写。

相似之处:

  • 信息检索:两者都涉及到从大量数据中检索相关信息的问题。
  • 排序机制:都需要对检索到的信息进行排序,以便提供最相关的结果。
  • 模型架构:可能会包含相似的组件,如用于编码和检索的神经网络。

不同之处:

尽管有相似之处,但推荐系统和RAG在目标和实现细节上也存在差异:

  • 目标差异:推荐系统的目标是预测和推荐用户可能感兴趣的项目,而RAG的目标是生成与输入查询相关的回复或续写。
  • 数据类型:推荐系统通常处理用户行为数据和项目特征,而RAG处理的是文本查询和文档。
  • 生成阶段:RAG明确包含了一个生成阶段,它使用检索到的信息来生成回复,而推荐系统可能不涉及这一步骤,除非是在生成推荐列表的元数据(如描述)时。

总的来说,尽管推荐系统和RAG在核心的检索和重排步骤上有相似之处,但它们的应用场景、数据处理方式和最终目标有所不同。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Pytorch】(十五)模型部署:ONNX和ONNX Runtime

文章目录 (十五)模型部署:ONNX和ONNX RuntimeONNX 和 ONNX Runtime的关系将PyTorch模型导出为ONNX格式使用Netron可视化ONNX模型图检查ONNX模型验证ONNX Runtime推理结果使用ONNX Runtime运行超分模型 (十五)模型部署&…

外贸干货|真正的销售高手,都很会提问

你的产品性价比很高,为什么客户没有买单呢? 最重要的原因是你没有了解到他真正的需求。 真正的销售高手,应该是一个提问高手,至少要连续问对方6个问题,问出客户的真实需求。 假如他回答你的问题,你有一种&a…

git 冲突与解决冲突

目录 1.使用 git 解决冲突 GIT 常用命令 制造冲突 解决冲突 2.使用 IDEA 解决冲突 产生冲突 解决冲突 1.使用 git 解决冲突 GIT 常用命令 命令作用git clone克隆git init初始化git add 文件名添加到暂存区git commit -m " 日志信息" 文件名提交到本地库git st…

【运维自动化-配置平台】如何通过模板创建集群和模块

通过【每天掌握一个功能点】配置平台如何创建业务机拓扑(集群-模块)我们知道了直接创建集群和模块的操作方法,直接创建的方式适合各集群模块都相对独立的场景,那大量的、标准规范的集群模块如何快速创建呢,这里就引入了…

条件生成对抗网络(cGAN)在AI去衣技术中的应用探索

随着深度学习技术的飞速发展,生成对抗网络(GAN)作为其中的一个重要分支,在图像生成、图像修复等领域展现出了强大的能力。其中,条件生成对抗网络(cGAN)通过引入条件变量来控制生成模型的输出&am…

面试十五 容器

一、vector容器 template<typename T> class Allocator{ public:T* allocator(size_t size){// 负责内存开辟return (T*)malloc(sizeof(T) * size);}void deallocate(void * p){free(p);}void construct(T*p,const T&val){// 定位newnew (p) T(val);}void destroy(…

Golang对接Ldap(保姆级教程:概念搭建实战)

Golang对接Ldap&#xff08;保姆级教程&#xff1a;概念&搭建&实战&#xff09; 最近项目需要对接客户的LDAP服务&#xff0c;于是趁机好好了解了一下。LDAP实际是一个协议&#xff0c;对应的实现&#xff0c;大家可以理解为一个轻量级数据库。用户查询。比如&#xff…

DiT论文精读Scalable Diffusion Models with Transformers CVPR2023

Scalable Diffusion Models with Transformers CVPR2023 Abstract idea 将UNet架构用Transformer代替。并且分析其可扩展性。 并且实验证明通过增加transformer的宽度和深度&#xff0c;有效降低FID 我们最大的DiT-XL/2模型在classconditional ImageNet 512、512和256、256基…

switch语句深讲

一。功能 1.选择&#xff0c;由case N:完成 2.switch语句本身没有分支功能&#xff0c;分支功能由break完成 二。注意 1.switch语句如果不加break&#xff0c;在一次判断成功后会执行下面全部语句并跳过判断 2.switch的参数必须是整形或者是计算结果为整形的表达式,浮点数会…

centos 7 yum install -y nagios

centos 7 systemctl disable firewalld --now vi /etc/selinux/config SELINUXdisabled yum install -y epel-release httpd nagios yum install -y httpd nagios systemctl enable httpd --now systemctl enable nagios --now 浏览器 IP/nagios 用户名&#xff1a;…

stack,queue的模拟实现以及优先级队列

这篇博客用来记录stack&#xff0c;queue的学习。 stack的模拟实现 stack的模拟实现比较简单&#xff0c;先上代码 #pragma once #include<vector> #include<list> #include<deque> #include<iostream> using std::deque; using namespace std;name…

【STM32HAL库】外部中断

目录 一、中断简介 二、NVIC 1.寄存器 2.工作原理 3.优先级 4.使用NVIC 三、EXTI 1.简介 2.AFIO&#xff1a;复用功能IO&#xff0c;主要用于重映射和外部中断映射配置​编辑 3. 中断使用 4.HAL库配置使用 一、中断简介 中断的意义&#xff1a;高效处理紧急程序&#xff0c;不会…

树莓派学习笔记--串口通信(配置硬件串口进行通信)

树莓派串口知识点 树莓派4b的外设一共包含两个串口&#xff1a;硬件串口&#xff08;/dev/ttyAMA0&#xff09;,mini串口&#xff08;/dev/ttyS0&#xff09; 硬件串口由硬件实现&#xff0c;有单独的波特率时钟源&#xff0c;性能高&#xff0c;可靠&#xff1b;而mini串口性能…

Java-AQS的原理

文章目录 基本概述1. 设计思想2. 基本实现 一些关键词语以及常用术语&#xff0c;主要如下&#xff1a; 信号量(Semaphore): 是在多线程环境下使用的一种设施&#xff0c;是可以用来保证两个或多个关键代码段不被并发调用&#xff0c;也是作系统用来解决并发中的互斥和同步问题…

数据挖掘 | Count数据去除批次效应后不是整数甚至还出现负值导致无法进行差异分析怎么办?

之前咱们介绍过数据挖掘 | 批次效应的鉴定与处理 | 附完整代码 注释 | 看完不会来揍我&#xff0c;但是很多小伙伴遇到了Count数据批次处理后不是整数甚至还出现负值的问题&#xff0c;这就导致无法使用某些包包进行差异分析&#xff08;对差异分析感兴趣的小伙伴可以查看&…

MySQL中如何随机获取一条记录

点击上方蓝字关注我 随机获取一条记录是在数据库查询中常见的需求&#xff0c;特别在需要展示随机内容或者随机推荐的场景下。在 MySQL 中&#xff0c;有多种方法可以实现随机获取一条记录&#xff0c;每种方法都有其适用的情况和性能特点。在本文中&#xff0c;我们将探讨几种…

word添加行号

打开页面设置&#xff0c;找到行号

2018-2023年上市公司富时罗素ESG评分数据

2018-2023年上市公司富时罗素ESG评分数据 1、时间&#xff1a;2018-2023年 2、来源&#xff1a;整理自WIND 3、指标&#xff1a;证券代码、简称、ESG评分 4、范围&#xff1a;上市公司 5、指标解释&#xff1a; 富时罗素将公司绿色收入的界定和计算作为公司ESG 评级打分结…

「白嫖」开源的后果就是供应链攻击么?| 编码人声

「编码人声」是由「RTE开发者社区」策划的一档播客节目&#xff0c;关注行业发展变革、开发者职涯发展、技术突破以及创业创新&#xff0c;由开发者来分享开发者眼中的工作与生活。 面对网络安全威胁日益严重的今天&#xff0c;软件供应链安全已经成为开发者领域无法避免的焦点…

OpenWRT设置自动获取IP,作为二级路由器

前言 上一期咱们讲了在OpenWRT设置PPPoE拨号的教程&#xff0c;在光猫桥接的模式下&#xff0c;OpenWRT如果不设置PPPoE拨号&#xff0c;就无法正常上网。 OpenWRT设置PPPoE拨号教程 但现在很多新装的宽带&#xff0c;宽带师傅为了方便都会把光猫设置为路由模式。如果你再外…