Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

RAGFlow开源Star量破万,是时候思考下RAG的未来是什么了

图片

AIxiv专栏是机器之心发布学术、技术内容的栏目。过去数年,机器之心AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com

本文作者为张颖峰,英飞流 InfiniFlow 创始人 CEO,连续创业者,先后负责 7 年搜索引擎研发,5 年数据库内核研发,10 年云计算基础架构和大数据架构研发,10 年人工智能核心算法研发,包括广告推荐引擎,计算机视觉自然语言处理。先后主导并参与三家大型企业数字化转型,支撑过日活千万,日均两亿动态搜索请求的互联网电商业务。

搜索技术是计算机科学中最难的技术挑战之一,迄今只有很少一部分商业化产品可以把这个问题解决得很好。大多数商品并不需要很强的搜索,因为这和用户体验并没有直接关系。然而,随着 LLM 的爆炸性增长,每家使用 LLM 的公司都需要内置一个强大的检索系统,才能使得 LLM 可以真正为企业用起来,这就是 RAG (基于检索增强的内容生成)—— 通过搜索内部信息给 LLM 提供与用户提问最相关的内容,来帮助 LLM 做最终的答案生成。

想象一下,LLM 正在针对用户提问回答,如果没有 RAG,那么 LLM 不得不根据自己在训练过程中学到的知识来回忆内容,而有了 RAG 之后,这种问题回答就如同开卷考试,到教科书中去寻找包含答案的段落,因此回答问题变得容易很多。随着 LLM 的演进,新的 LLM 具有更长的上下文窗口,可以处理更大的用户输入,如果可以直接在上下文窗口中载入整个教科书,为什么还需要去教科书中翻答案呢?实际上,对于大多数应用而言,即使 LLM 可以包含上百万乃至上千万 Token 的上下文窗口,搜索依然必不可少:

  • 企业通常包含多个版本的类似文档,将它们全部传给 LLM 会导致相互冲突的信息。

  • 大多数企业内部场景都需要对传给上下文窗口的内容做访问权限控制。

  • LLM 更容易受到跟问题语义相关但却跟答案无关内容的干扰,从而分心。

  • 即使 LLM 能力很强大,也没有必要浪费多很多的成本和延迟来处理跟用户提问不相关的数百万个 Token 。

RAG 从出现到流行只花了很短的时间,这得益于各种 LLMOps 工具迅速将如下的组件串接起来使得整个系统得以运转。

图片

以上这种基于语义相似度的方法已经工作了很多年:首先,将数据分块(例如根据段落),然后通过 Embedding 模型把每个块转成向量保存到向量数据库。在检索过程中,把提问也转成向量,接着通过向量数据库检索到最接近该向量的数据块,这些数据块理论上包含跟查询语义最相似的数据。

在整个链路中,LLMOps 工具可以操作的事情有:

  • 解析和切分文档。通常采用固定大小来把解析好的文本切成数据块。

  • 编排任务,包括数据写入和查询时,负责把数据块发到 Embedding 模型(既包含私有化也包含 SaaS API);返回的向量连同数据块共同发给向量数据库;根据提示词模板拼接向量数据库返回的内容。

  • 业务逻辑组装。例如用户对话内容的生成和返回,对话跟业务系统(如客服系统)的连接,等等。

这个流程的建立很简单,但搜索效果却很一般,因为这套朴素的基于语义相似度的搜索系统包含若干局限:

  • Embedding 是针对整块文本的处理,对于一个特定的问题,它无法区分文字中特定的实体 / 关系 / 事件等权重明显需要提高的 Token,这样导致 Embedding 的有效信息密度有限,整体召回精度不高。

  • Embedding 无法实现精确检索。例如如果用户询问 “2024 年 3 月我们公司财务计划包含哪些组合”,那么很可能得到的结果是其他时间段的数据,或者得到运营计划,营销管理等其他类型的数据。

  • 对 Embedding 模型很敏感,针对通用领域训练的 Embedding 模型在垂直场景可能表现不佳。

  • 对如何数据分块很敏感,输入数据的解析、分块和转换方式不同,导致的搜索返回结果也会大不同。而依托于 LLMOps 工具的体系,对于数据分块逻辑往往简单粗暴,忽视了数据本身的语义和组织。

  • 缺乏用户意图识别。用户的提问可能并没有明确的意图,因此即便解决了前述的召回精度问题,在意图不明的情况下,也没有办法用相似度来找到答案。

  • 无法针对复杂提问进行回答,例如多跳问答(就是需要从多个来源收集信息并进行多步推理才能得出综合答案的问题。

因此可以把这类以 LLMOps 为核心的 RAG 看作 1.0 版本,它的主要特点在于重编排而轻效果,重生态而轻内核。因此,从面世一开始就迅速普及,普通开发者可以借助于这些工具快速搭建起原型系统,但在深入企业级场景时,却很难满足要求,并且经常处于无计可施的状态。随着 LLM 快速向更多场景渗透,RAG 也需要快速进化,毕竟搜索系统的核心是找到答案,而不是找到最相似的结果。基于这些,我们认为未来的 RAG 2.0 可能是这样工作的:

图片

其主要特点为:

1.RAG 2.0 是以搜索为中心的端到端系统,它将整个 RAG 按照搜索的典型流程划分为若干阶段:包含数据的信息抽取、文档预处理、构建索引以及检索。RAG 2.0 是典型的 AI Infra,区别于以现代数据栈为代表的 Data Infra,它无法用类似的 LLMOps 工具来编排。因为以上环节之间相互耦合,接口远没有到统一 API 和数据格式的地步,并且环节之间还存在循环依赖。例如对问题进行查询重写,是解决多跳问答、引入用户意图识别必不可少的环节。查询重写和获得答案,是一个反复检索和重写的过程,编排在这里不仅不重要,甚至会干扰搜索和排序的调优。近期知名的 AI 编排框架 LangChain 遭到吐槽,就是同样的道理。

2. 需要一个更全面和强大的数据库,来提供更多的召回手段,这是由于为解决 RAG 1.0 中召回精度不高的痛点,需要采用多种方法混合搜索。除了向量搜索之外,还应该包含关键词全文搜索、稀疏向量搜索,乃至支持类似 ColBERT 这样 Late Interaction 机制的张量搜索。

a. 关键词全文搜索是实现精确查询必不可少的手段,当用户检索意图明确时,期望的文档却没有返回,这会使他感到沮丧。其次,通过关键词全文搜索,可以查看跟查询匹配的关键词,从而更直观地了解检索到该文档的原因,这对于排序的可解释性也非常重要。所以在绝大多数情况下,都不应该把关键词全文搜索排除在 RAG 之外。全文搜索是个很成熟的功能,但并不等于实现它很容易。除了需要能够处理海量数据之外,为符合 RAG 召回的需要,还必须提供默认基于 Top K Union 语义的搜索机制,这是由于 RAG 的查询输入通常不是几个关键词,而是整句话。目前市面上大多数声称提供 BM25 和全文搜索能力的数据库,实现的都是阉割版本,既无法高性能搜索海量数据,也无法提供有效召回,不具备企业级服务能力。

b.IBM 研究院最新的研究成果显示,在若干问答数据集的评测中,联合关键词全文搜索、稀疏向量、以及向量搜索 3 种召回方式,取得了 SOTA 的结果。因此,有理由在数据库中原生支持这种 3 路混合搜索能力。

c. 张量搜索是一种很新的检索方式。它来自于以 ColBERT 为代表的 Late Interaction 机制。简单地总结,就是 Cross Encoder 为代表的 Reranker 模型,它能够捕捉查询和文档之间的复杂交互关系,因此相比向量搜索能够提供更精准的搜索排序结果。但是它的缺点在于,由于需要在查询时对每个文档和查询共同经过 Embedding 模型来编码,这使得排序的速度非常慢,因此 Cross-Encoder 只能用于最终结果的重排序。而类似 ColBERT 这样的模型,它仍然把文档在索引阶段就编码好,这一点类似于向量搜索,但不同之处在于,它把文档的每个 Token 都用单独的向量表示,因此是用许多向量或者一个张量来表示一个文档,在排序计算时,所有 Token 之间的向量都需要做交叉计算,这一点跟 Cross Encoder 的机制类似,因此比向量搜索损失的信息更少,召回精度更高。而相比 Cross Encoder,它的性能要好得多,因为在查询期间无需对每个文档进行编码, 所以可以理解为既拥有接近 Cross Encoder 的召回精度,也拥有接近向量搜索的性能,这样可以在召回阶段就引入更好的模型,具有非常强的实际操作价值。结合张量搜索和关键词全文搜索,不失为一种非常值得采用的混合搜索能力。作为数据库来说,同样需要为这样的能力提供选择。

近期 OpenAI 收购了数据仓库公司 Rockset,这背后的逻辑,其实并不在于数据仓库本身对于 RAG 有多么大的价值,而是相比其他数据仓库,Rockset 更是一个索引数据库,它对表的每列数据都建立了倒排索引,因此可以提供类比于 Elasticsearch 的关键词全文搜索能力,再配套以向量搜索,原生具备这 2 类混合搜索能力的数据库,在当前阶段,就已经没有多少选择了,再加上 Rockset 还采用了云原生架构,2 点结合,是 OpenAI 做出选择的主要原因。这些考虑,也是我们在另外开发 AI 原生数据库 Infinity 的主要原因,我们期望它能原生地包含前述的所有能力,从而可以更好地支撑 RAG 2.0。

3. 数据库只能涵盖 RAG 2.0 中的数据检索和召回环节,还需要站在整个 RAG 的链路上,针对各环节进行优化,这包括:

a. 需要有单独的数据抽取和清洗模块,来针对用户的数据,进行切分。切分的粒度,需要跟最终搜索系统返回的结果进行迭代。数据抽取模块,需要考虑到用户的各种不同格式,包含复杂文档例如表格处理和图文等,因此它必须依托于若干模型才能完成任务。高质量的数据抽取模块,是保证高质量搜索的前置条件。这部分可以类比为现代数据栈的 ETL,但却比 ETL 更加复杂,后者是以 SQL 为核心的的确定性规则系统,而前者则是以各种文档结构识别模型为核心的非标准化体系。

b. 抽取出的数据,在送到数据库索引之前,还可能需要若干预处理步骤,包括知识图谱构建,文档聚类,以及针对垂直领域的 Embedding 模型微调等。这些工作,本质上是为了辅助在检索阶段提供更多的依据,从而让检索更加精准。这个步骤不可或缺,它是针对用户的复杂提问,例如多跳问答,意图不确定,以及垂直问答等情况下的必要手段。通过把文档中包含的内部知识以多种方式组织,才能确保在召回结果包含所需要的答案。

c. 检索阶段分为粗筛和精排。精排通常放在数据库外进行,因为它需要不同的重排序模型。除此之外,还需要对用户的查询不断改写,根据模型识别出的用户意图不断改写查询,然后检索直至找到满意的答案。

这些阶段,可以说每个环节都是围绕模型来工作的。它们联合数据库一起,共同保证最终问答的效果。

因此,RAG 2.0 相比 RAG 1.0 会复杂很多,其核心是数据库和各种模型,需要依托一个平台来不断迭代和优化,这就是我们开发并开源 RAGFlow 的原因。它没有采用已有的 RAG 1.0 组件,而是从整个链路出发来根本性地解决 LLM 搜索系统的问题。当前,RAGFlow 仍处于初级阶段,系统的每个环节,都还在不断地进化中。由于使用了正确的方式解决正确的问题,因此自开源以来 RAGFlow 只用了不到 3 个月就获得了 Github 万星。当然,这只是新的起点。

RAG 2.0 将会对 LLM 在企业中如何应用产生巨大影响,我们对它作为产品推动力的发展感到振奋,如果你也对此感兴趣,欢迎关注和了解我们的工作:https://github.com/infiniflow/ragflow

工程搜索技术RocksetRAG 2.0
相关数据
IBM机构

是美国一家跨国科技公司及咨询公司,总部位于纽约州阿蒙克市。IBM主要客户是政府和企业。IBM生产并销售计算机硬件及软件,并且为系统架构和网络托管提供咨询服务。截止2013年,IBM已在全球拥有12个研究实验室和大量的软件开发基地。IBM虽然是一家商业公司,但在材料、化学、物理等科学领域却也有很高的成就,利用这些学术研究为基础,发明很多产品。比较有名的IBM发明的产品包括硬盘、自动柜员机、通用产品代码、SQL、关系数据库管理系统、DRAM及沃森。

https://www.ibm.com/us-en/
相关技术
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

知识图谱技术

知识图谱本质上是语义网络,是一种基于图的数据结构,由节点(Point)和边(Edge)组成。在知识图谱里,每个节点表示现实世界中存在的“实体”,每条边为实体与实体之间的“关系”。知识图谱是关系的最有效的表示方式。通俗地讲,知识图谱就是把所有不同种类的信息(Heterogeneous Information)连接在一起而得到的一个关系网络。知识图谱提供了从“关系”的角度去分析问题的能力。 知识图谱这个概念最早由Google提出,主要是用来优化现有的搜索引擎。不同于基于关键词搜索的传统搜索引擎,知识图谱可用来更好地查询复杂的关联信息,从语义层面理解用户意图,改进搜索质量。比如在Google的搜索框里输入Bill Gates的时候,搜索结果页面的右侧还会出现Bill Gates相关的信息比如出生年月,家庭情况等等。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

云计算技术

云计算(英语:cloud computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

数据仓库技术

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

信息抽取技术

信息/数据抽取是指从非结构化或半结构化文档中提取结构化信息的技术。信息抽取有两部分:命名实体识别(目标是识别和分类真实世界里的知名实体)和关系提取(目标是提取实体之间的语义关系)。概率模型/分类器可以帮助实现这些任务。

聚类技术

将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。

机器之心机构

机器之心,成立于2014年,是国内最具影响力、最专业、唯一用于国际品牌的人工智能信息服务与产业服务平台。目前机器之心已经建立起涵盖媒体、数据、活动、研究及咨询、线下物理空间于一体的业务体系,为各类人工智能从业者提供综合信息服务和产业服务。

https://www.jiqizhixin.com/
分块技术

将标注好词性的句子按句法结构把某些词聚合在一起形成比如主语、谓语、宾语等等。

意图识别技术

意图识别指理解说话人的意图 。

推荐文章
暂无评论
暂无评论~