谁将是RAG的头部玩家?

开篇

2cb46f10cb3b48fb824ddd1e24e71068.jpeg

 

菩提修妙树,接引证法源,屠龙万仙阵,玉虚祭封神。

混战是国内技术圈的常态,在众仙跟风与追捧的大潮中,如何看清方向至关重要,决定谁最终将封神。

语言大模型(LLM),多模态(MM),RAG是当下的热词,LLM将NLP带入到了2.0时代,LLM+MM将媒体带入到了2.0时代,必然,LLM+MM+RAG会将检索带入到2.0时代。

混迹于检索领域也有多年,从2011年开始,先后经历过大小的检索相关项目:非线性编辑媒资库检索(图片检索+文本检索),字幕自动生成(语音识别+文本匹配检索),节目检索(图片检索+音频检索),搜剧(图片检索+视频处理),相册管理(图片识别检索+文本检索+视频分析)等项目,对end to end的流程及优化技术还算了解,对AI模型的ensemble使用及performence炼丹接触较多,后面针对RAG做一些粗浅的分析,欢迎指正和讨论,勿喷~。

RAG的本质及作用

RAG = Retrieval Augmented Generation,本质呢,其实是Generation,这也定了个下文的基调,也是下文分析的基础,如何generate,如何generate的更好,谁有generate的能力。

提到RAG,凭借着谷哥度娘的强大能力,可能大多数人都能娓娓道来,么么哒,基于检索增强的内容生成,对大模型有好处,云云。深究一下,在我看来,RAG在generate有方面的作用:

  • 协助不正经的LLM产生正经的结果,采用多方证据或事实,监督LLM,防止它胡说八道(LLM幻觉)
  • 和LLM或推荐系统合作,五五开,共同构建历史性结果,防止前后时间上的信息脱节(因为LLM训练成本大,不大可能频频用最新的样本训练)
  • 和多模态合作,补充优质信息到text2video,text2image等模型,生成更符合物理世界的效果,生成更丰富的内容
  • long sequence(context)其实对LLM无益处(越长,attention消失越多,占资源越多),短+紧凑的prompt更能产生优质回答或结果。Is Long Sequence All LLM's Need?-Oh, No, 只是有时候迫不得已(物理表示就是这样的,叫我怎么办?但我并不关心冗余的token,要么你玩转高难度的attention pattern,要么你用RAG给我精简,要么你手工给我摘干净,My God!),所以出现了各种利用window+local+trunk+sparse+rnn优化attention的方法,本质都是不想用那么多attention,不想和更多的token关联。起初,我以为RAG通过查询向量数据库会增大sequence length,但仔细想一下,这只是表象,RAG需要进一步压缩结果的表示空间(这是兵家必争之地,也是创造门槛的地方,如果只玩vector distance+vector similarity,想必大家都会玩),使得sequence length变短才算无上妙法。

RAG的技术依赖

首先,说明一下,向量数据库(检索)不是一个新鲜事物,如果track了检索技术发展的整个历史脉络,那么,肯定不会因为它在LLM时代蹦出来而感到兴奋。

f9b7f6daefaa4ec0bead46ad262b87ec.jpeg

 

早在2000年,百度就follow了谷歌的文本搜索技术,构建大规模中文搜索引擎,后来构建了大规模图片搜索引擎,底层依赖的技术都是向量库索引与检索(曾经研究热度很高),经过20多年的发展,向量embedding生成技术->向量检索与索引技术->大规模检索集群部署其实已经发展相当完善(研究热度下降,都在搞竞价排名~)。

如果非要给retrieval一个蹭LLM热点的理由,那么,我希望它是“反哺”,而不是“投怀”(下文再续)。

软件依赖

RAG的本质是generation,但引起generation质变的是retrieval,可能到了这里,又可以娓娓道来一次,又可以侃侃而谈一次,又可以和谷哥度娘有一次亲密接触,向量数据库嘛,云云。概括起来,最关键的软件依赖是向量数据库底层的东西:

  • 用于构建索引或进行检索的embedding是否具有简约性(shorter dimension,越短越好)和鉴别性(descrimitive)
  • 构建索引的算法是否具有鉴别性,是否能将多维空间可分做到最优
  • 构建索引(可以理解成train)和索引检索(可以理解成inference)的效率。构建索引一般是离线的,数据量很大。构建索引也可能是增量online的,数据量不大,满足实时完善索引库的需求。索引检索需要照顾到multi request(可以理解为batchsize),不同batchsize的性能是不同的,检索是典型的IO bound的场景

硬件依赖

(1)通用计算支持能力

Is Vector Processing all RAG's Need? - Oh, No。

RAG中的R就是传统的R技术,除了vector similarity计算(1D计算)外,对如下技术的性能依赖性很强:

  • graph/tree数据结构遍历与检索
  • 排序
  • 递归
  • 高并发度
  • 细粒度scalar/task操作
  • 随机存储与访问等

(2)memory hierachy

向量检索在memory的访问上可能受如下特性影响,多级存储和cache(同时保证hot<->device间的访问或传输延时)+异构计算可能会比较适合

  • task粒度小,指令散,控制逻辑可能比较复杂,code size可能更大
  • 数据操作粒度小,非vector操作较多,随机访存场景多
  • 并发度高
  • 索引巨大,不能完全存于device memory(和推荐系统的embedding table比较类似)

v2-dd44fa8b3a5ad88a29c6c5f1ff4f2f7d_720w.png?source=d16d100b

96606f5eaf40453781e684b526428572.jpeg

 

(3)communication

  • 不同于AI,多机多卡间的传输数据类型不同(size+granularity)

模型依赖

RAG与模型的关系需要特别强调一下,团结拼搏,共勉创优一直是一件好事情,对于G(eneration)来说,R(etrieval)“反哺”LLM生成更好的内容,对于R(etrieval)来说,G(eneration)"投怀" 向量检索,生成更好的embedding representation,未来的LLM+多模态+RAG的流程发展趋势大概就是如下:

9aeeebb43adb4810bd4cdddfbe7285bb.jpeg

 

头部玩家的战场

如上所述,得出如下结论:

  • 有媒体内容存货的容易进入战场
  • 检索和索引技术能力强大的容易进入战场
  • 性能突出的硬件芯片厂商容易进入战场
  • 啥都不行,能给别人提供战场(部署R+G)的容易进入战场
  • 大流量+大日活+大数据存储的厂商容易进入战场(垂直领域可能机会较少,或没必要借助RAG)

硬件芯片厂商

  • 国外:nvidia gpu+amd gpu+intel cpu
  • 国内:有前途,很期待

云服务厂商

  • 腾讯云
  • 阿里云

媒体运营商

  • 爱奇艺
  • 腾讯视频
  • 视觉中国
  • 全景中国
  • 百度图片
  • Get Image

老牌检索商

  • 百度
  • 搜狗
  • 360

电商与推荐

  • 京东
  • 阿里
  • 字节

更多的产品形态预测

  • 媒体方(例如:get image的AI服务)开发RAG接口,向多模态生产方提供内容输出服务(抱歉,除了收正经版权费,我也要分AIGC一杯羹
  • 电商生成更真实的店家展示图片
  • AI检索+Legacy检索增强检索效果
  • 实时推荐系统

参考

推荐的其他阅读材料:Retrieval-Augmented Generation for Large Language Models: A Survey

 

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

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

相关文章

代码随想录day22(1)二叉树:左叶子之和(leetcode404)

题目要求&#xff1a;计算二叉树所有左叶子之和 思路&#xff1a;本题应该满足两个条件&#xff0c;一是叶子节点&#xff0c;二是要求是左叶子。所以判断时&#xff0c;如果一个节点左孩子的左右孩子均为空&#xff0c;且其右孩子也为空&#xff0c;此节点的左孩子就为左叶子…

编程语言常识

看图区别编程语言 什么是强类型、弱类型语言&#xff1f;哪种更好&#xff1f; 强类型语言 强类型语言是一种强制类型定义的语言&#xff0c;即一旦某一个变量被定义类型&#xff0c;如果不经强制转换&#xff0c;那么它永远就是该数据类型。 在强类型语言中&#xff0c;变量的…

【Eviews实战】——时序的平稳性检验

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

C++ 入门篇

目录 1、了解C 2、C关键字 2、命名空间 2.1 命名空间的定义 2.2 命名空间的使用 3. C输入与输出 4.缺省参数 4.1 缺省参数的概念 4.2 缺省参数的分类 5. 函数重载 5.1 函数重载的概念 5.2 C中支持函数重载的原理--名字修饰 6. 引用 6.1 引用概念 6.2 引用…

SQLiteC/C++接口详细介绍之sqlite3类(四)

快速跳转文章列表&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;三&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;五&#xff09; 编写不易&#xff0c;有用的朋友点个赞或加粉一下万分感…

day05-SpringBootWeb请求响应

请求响应&#xff1a; 请求&#xff08;HttpServletRequest&#xff09;&#xff1a;获取请求数据响应&#xff08;HttpServletResponse&#xff09;&#xff1a;设置响应数据 BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xf…

Python环境安装及Selenium引入

Python环境安装 环境下载 Download Python | Python.org 环境安装 需使用管理员身份运行 查看环境是否安装成功 python --version 如果未成功则检查环境变量配置 安装 Selenium 库 pip install selenium Selenium 可以模拟用户在浏览器中的操作&#xff0c;如点击按钮、填写…

轻松玩转消息通信:SimpleAmqpClient 和 RabbitMQ 在C++中的终极指南

Rabbmq服务端 安装 这里我使用docker安装rabbitmq服务端,没有安装的就先去看其他的博客安装rabbitmq或者docker #拉取rabbitmq docker pull rabbitmq:management #运行rabbitmq,记得打开防火墙端口 docker run -d --hostname rabbitsrv --name rabbit -p 5672:5672 -p 15672…

前端和后端权限控制【笔记】

前端权限设置【笔记】 前言版权推荐前端权限设置需求效果实现资源 后端权限控制1.给所有前端请求都携带token2.添加拦截器3.配置到WebMvcConfiguration4.更多的权限验证 最后 前言 2024-3-15 18:27:26 以下内容源自《【笔记】》 仅供学习交流使用 版权 禁止其他平台发布时删…

Seata 2.x 系列【11】多数据源分布式事务

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 多数据…

SQLiteC/C++接口简介

快速跳转文章列表&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite——世界上部署最广泛的开源数据库&#xff08;简介&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍&#xff08;一&#xff09; 引言&#xff1a; 作为一种轻量级、嵌入式关系型数据库…

MAC M芯片 Anaconda安装

Anaconda安装 1.M芯片下载AnaConda 1.M芯片下载AnaConda https://www.anaconda.com/download 安装完成 conda的版本是24.1.2

Go语言中的make和new:内存分配与对象创建的巧妙之道

Go语言中的make和new&#xff1a;内存分配与对象创建的巧妙之道 Go语言作为一门简洁而强大的编程语言&#xff0c;提供了多种用于动态内存分配和对象创建的关键词。其中&#xff0c;make和new是两个常见且常被混淆的关键词。本文将深入讲解Go语言中make和new的区别&#xff0c;…

python来判断密码强弱-类

设计者&#xff1a;ISDF 版本&#xff1a;v1.0 日期&#xff1a;2019/4/3设计者&#xff1a;ISDF 版本&#xff1a;v2.0 日期&#xff1a;2024/4/3 class PasswordTool:密码工具类def __init__(self,password):#类的属性self.password passwordself.stregth_level 0def check…

考研C语言复习进阶(5)

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 ​编辑 ​编辑 4.1 对比一组函数&#xff1a; ​编辑 5. 文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind…

【C语言】linux内核pci_save_state

一、中文注释 //include\linux\pci.h /* 电源管理相关的例程 */ int pci_save_state(struct pci_dev *dev);//drivers\pci\pci.c /*** pci_save_state - 在挂起前保存PCI设备的配置空间* dev: - 我们正在处理的PCI设备*/ int pci_save_state(struct pci_dev *dev) {int i;/* X…

谷歌网络营销方案有几种?​

谷歌作为海外的头部工具&#xff0c;本身其实就有多种工具可以供你使用&#xff0c;在这里说说谷歌那些工具 Google My Business&#xff0c;对于小企业或者本地服务来说&#xff0c;把自己的业务信息优化并完善在Google My Business上是个不错的选择。这样当人们在附近搜索相…

微信小程序云开发教程——墨刀原型工具入门(表单组件)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

【NC223888】红色和紫色

题目 红色和紫色 博弈论&#xff0c;想得出来思路就简单&#xff0c;想不出来就难。一般使用猜测法。 思路 如果小红随意取一个格子涂色&#xff0c;那么小紫怎么涂色才是她的最优选择呢&#xff1f; 假设小紫只能选择小红涂色的格子的相邻格子或者是最近斜对角的一个格子涂色…

LeetCode 2684.矩阵中移动的最大次数:一列一列处理,只记能到哪行(BFS)

【LetMeFly】2684.矩阵中移动的最大次数&#xff1a;一列一列处理&#xff0c;只记能到哪行(BFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-number-of-moves-in-a-grid/ 给你一个下标从 0 开始、大小为 m x n 的矩阵 grid &#xff0c;矩阵由若干 正 整…