检索-增强生成 (RAG) 是一个永不过时的话题,并在不断扩展以增强LLMs 的功能。对于那些不太熟悉RAG 的人来说:这种方法利用外部知识来增强模型的能力,从外部资源中检索您实际需要的信息。今天,我们深入探讨比传统RAG 更进一步的三种方法,克服了检索数据质量、答案准确性和特定领域性能低下等问题。多模态和agentic systems是2025 年AI领域的重点之一,因此将探讨以下几种RAG: 1) HtmlRAG,可直接处理 HTML 版本的文本;2) 多模态 RAG,可检索图像信息;3) AgenticRAG,在RAG 技术中加入agentic功能。主要探讨以下内容:
RAG系统将检索机制与generative AI模型相结合,以提供更准确或与上下文相关的回复。然而,与任何技术一样,它也有一些局限性,例如:
1. 取决于检索信息的质量:响应的有效性在很大程度上取决于检索文件的质量、相关性和偏差。如果检索步骤失败,生成的输出结果就可能是错误的
2. 标准 RAG 无法检索 HTML 文本、图像和视频等各种类型的信息
3. 检索与查询不匹配:系统可能无法将用户的查询与检索文档中的正确上下文相一致
4. 标准 RAG 在搜索和检索多个资料来源或处理复杂的文件结构方面存在困难。
5. Scalability延迟问题:在大型知识库中搜索可能会带来延迟,尤其是在检索系统没有优化的情况下
6. 在上下文和细微差别至关重要的高度专业化领域,RAG系统可能表现不佳
7. 计算资源:处理大型数据集进行检索的计算成本很高,需要大量的存储和处理能力
研究人员创造了不同的升级 RAG 系统和方法来克服这些问题。我们将要讨论的RAG 类型主要解决检索信息质量和多样性的限制以及查询和检索之间的不匹配问题。
许多 RAG 系统,包括 ChatGPT 和 Perplexity 等工具所使用的系统,都依赖网络作为外部信息的主要来源
通常是这样工作的:这些系统搜索网络,收集网页结果,将内容剥离为纯文本,然后将其输入LLM 以帮助其生成更好的答案。但是,这种纯文本可能会丢失网页中许多有用的细节,如标题、表格和其他结构信息。为了解决这个问题,百川智能科技公司和中国人民大学的研究人员推出了HtmlRAG,它使用原始HTML 格式,而不仅仅是纯文本。
这种方法好在哪里?
•现代LLMs 可以很好地理解HTML,因此可以有效地实现这种RAG
•HTML 能更好地保留内容的结构和含义。许多文件格式(如PDF 或Word 文件)也可以轻松转化为HTML,因此HTML 是一种灵活的选择
不过,这也有个问题。HTML 中充满了额外的内容,如标签、JavaScript 和样式等不必要的数据,而且可能太长。因此,研究人员还提出了解决这些问题的特殊技术。下面我们就来分析一下各方面是如何协同工作的。
HtmlRAG直接处理HTML,保留了更多原始内容的结构和含义,省去了将数据转换为纯文本的步骤。HtmlRAG工作流程的主要部分是HTML 清理和剪枝技术:
该步骤删除无关内容,简化结构,并将文件大小缩减至原始长度的 6%,包括
•剔除 CSS 样式、JavaScript 和无附加价值的注释
•通过合并多余的标记来简化HTML 结构(例如,合并嵌套的<div> 标记)
•删除空标签或无关标签
和 Markdown 的 90.32% 相比,HtmlRAG 的标记清理减少了 94.07%。
这一步骤可进一步缩小清理后的 HTML 的大小,同时根据用户的查询只保留最相关的部分。这一步骤更为复杂,包括两个不同的剪枝步骤,并使用" block tree "方法对HTML 的各个部分进行分组和排序。
所有检索到的 HTML 文档都会合并成一个文档进行处理。合并后的文档使用Beautiful Soup 等工具转换成DOM 树。然后将子节点合并到父节点中,形成块。每个块的大小由设置控制,例如每个块的最大字数。tree's granularity (level of detail)可根据修剪需要进行调整,以确保不会太详细,也不会太粗糙。为了有效衡量数据的相关性,block tree被转换成标记树,其中HTML 标记和标记用颜色编码。然后结合标记概率得出区块分数。
修剪过程分为两个步骤,都使用这种block tree结构:
Step 1:使用嵌入模型剪枝
该步骤使用轻量级嵌入模型来识别和删除HTML 文档中相关性较低的部分。具体操作如下
•利用嵌入模型的相似性得分,将每个HTML 块的文本与用户的查询进行比较
•相关性分数较低的区块会被删除,直到文档符合LLM 的输入限制
•剪枝后,剩余的HTML 结构将被清理,以去除多余的标记或空元素
虽然这种方法可以快速有效地缩小文档大小,但它没有考虑到文档的整体结构,因为它是孤立地评估每个区块。此外,它还难以处理非常小的区块,因为这些区块没有足够的文本来准确判断相关性。因此,需要第二步
Step 2: 使用生成模型进行细粒度修剪
通过使用生成模型,将文档的全部结构考虑在内,从而进一步完善HTML。一般来说,生成模型与嵌入模型不同,可以一次性处理整个文档上下文。它们更善于识别区块及其内容之间的细微关系。那么,它是如何工作的呢?
•该过程从步骤 1 中清理过的 HTML 开始,将区块扩展为更精细的部分
•生成模型会根据文档中每个较小区块与用户查询的匹配程度进行评分。分数是通过分析通向每个区块的标记"路径"(例如,<div><p>)计算出来的
•得分较低的区块会被删除,以确保剩下的HTML 既紧凑又有意义
为了优化这一过程,HtmlRAG 采用了token skipping方法,即模型跳过 HTML 结构中重复或可预测的部分,以节省计算资源;还采用了深度优先遍历技术,以重复使用以前计算过的数据,从而减少冗余并提高速度。
HTML修剪将平均token数从160 万减少到 4K,同时保留了相关性。它还跳过了 45% 的节点,在保持有效性的同时最大限度地降低了成本增加。
虽然 HtmlRAG 中使用的技术显示出良好的效果,但仍存在一些局限性:
•HtmlRAG 严重依赖结构良好的 HTML 输入,这意味着在处理不完整或结构不良的页面时,其性能可能会下降
•多源挑战:在综合多源信息时,系统可能难以理解或适当权衡上下文
•特定领域的限制:对于小众或高度专业化的领域,HTML页面与典型结构不一致时,HtmlRAG的性能可能会不理想
不过,尽管存在这些局限性,HtmlRAG 还是通过处理更复杂的文本格式有效提高了检索准确性。但如果我们添加图像信息,是否会进一步提高RAG 的性能呢?
在多模态模型不断发展的时代,显然需要能够处理多模态数据的RAG 技术。2022年,Google Research 通过MuRAG 方法探索了多模态RAG 的理念。西门子的Center for Information and Language Processing对此类 RAG 进行了最新研究。他们测试了从技术和工业文档中处理和检索图像信息的两种方法。主要问题是多模态RAG 方法是否比只使用文本的RAG 效果更好?
首先,需要确定如何处理和检索 PDF 等文档中的图像信息。研究人员提出了两种变体:
1. 多模态嵌入
:这种方法将图像的视觉内容与文本查询直接联系起来。具体操作如下
•用CLIP 工具将图像和问题转化为嵌入式内容
•通过计算相似度,找出与问题最相关的图像
•然后,AI模型利用检索到的图像生成答案
2. 图像文本摘要
:将图像转换为文本可以更好地与基于文本的RAG pipelines集成,并降低检索过程中丢失信息的风险。以下是工作流程:
•图像摘要以文本形式嵌入,并存储在向量数据库中
•当有人提问时,系统会检索最相关的文本摘要,并将其与原始图像一起传递给AI模型
如何结合文字和图像信息来创建多模态RAG。我们测试了这种RAG 类型的两种配置:
1. Separate vector stores:
文本块存储在一个向量数据库中,而图像嵌入则存储在另一个向量数据库中。系统会在这两个数据库中进行相似性搜索。检索到的文本和图像数据合并后传递给AI模型生成答案。种方法将文本和图像数据分开,使每种模式都能独立优化。
2. Combined vector store:
转换为文本摘要的图像与文档(PDF)中的文本块相结合。两者都作为文本嵌入并存储在一个向量数据库中。然后,在组合数据库中执行单一的相似性搜索,检索文本和图像摘要。AI模型会检索这些组合信息来回答问题。将所有信息存储在一个数据库中可简化检索过程,并确保对文本和图像信息的一致处理。
实验表明,与单独使用文本或图像相比,将文本和图像相结合能带来更好的性能。事实证明,从图像中提取文本摘要比多模态嵌入更灵活、更有效。
不过,多模态RAG也有一些局限性:
•依赖LLMs 会带来典型的LLM 问题,如不准确、幻觉和复杂的多模态输入挑战
•缺乏公开可用的特定领域数据集限制了研究结果的可复制性和可推广性,开发此类数据集对未来的改进至关重要。现在,这种方法并非针对特定领域,但可以扩展到其他领域
总体结果证明,赋予 RAG 多模态功能对 RAG 系统的有效性有很好的影响。
但是,与多模态能力同样重要的agentic能力又如何呢?
Agentic systems正在崛起,需要所有元素都更加代理化。这就是为什么许多人工智能研究人员都在探索agentic RAG 的概念,以建立更高效的系统。今天,我们来探讨一下Hugging Face 的Agentic RAG 变体,以阐明这种系统是如何工作的。
在前半部分,强调了标准 RAG 的局限性,与查询和检索不匹配以及检索数据的质量有关。关于这些局限性,还能说些什么呢?
•用户查询通常以问题的形式提出,但知识库中的文档可能会以不同的措辞表达相同的信息,这种不匹配会降低检索质量
•如果最初的检索不准确,生成的答复很可能不准确或不完整
这就是 Agentic RAG 的由来,通过为系统配备类似代理的能力来增强RAG,这意味着:
•重构查询:将用户问题转化为更符合相关文档结构的检索友好语句
•批判和重试检索:评估检索结果,找出差距或不相关性,并通过调整查询进行重试
与传统的 RAG 系统一样,RAG Agent 使用语义相似性来查询向量数据库。工作原理如下:
•Agent首先将用户的查询转化为检索友好的语句,接受肯定式查询,而不是问题式查询,以改善文档的一致性。例如用户询问:"如何将模型上传到 Hub?
重新制定查询:"上传模型到中枢"
•使用初始查询,Agentic RAG 根据嵌入相似性搜索数据库中的top-k 个相关文档
•返回检索到的内容供进一步分析。如果检索到的结果不充分或不相关,agent会对其进行批判并生成新的查询。这一过程不断重复,直到检索到足够的信息或达到预先设定的限制
•一旦agent对检索到的上下文感到满意,就会将这些信息与用户查询结合起来,并将其传递给LLM 以生成最终响应
自主性更强,可以用语义不同的查询重试检索,从而增加找到正确信息的机会。这大大提高了准确性和完整性,尤其是对于复杂的特定领域问题。Agent设置将标准 RAG 的性能提高了 14%,证明了查询重构和迭代检索的价值。
建立一个agenticRAG 系统虽然有益,但也会带来一些问题,例如
•与标准RAG 系统相比,设置和执行更加复杂
•过增加查询重构和迭代检索步骤来增加计算开销
•对LLM 性能的依赖:系统的质量在很大程度上取决于语言模型生成准确且与上下文相关的重构查询和答案的能力
•评估局限性:自动评估依赖于基于LLM 的判断,这可能会带来偏差。因此,要想获得更可靠的评估结果,人工评估仍然必不可少
三种RAG 系统在检索信息的质量以及整体效率和准确性方面提高了标准RAG。当需要处理结构复杂的文档时,HtmlRAG可以保留文本的所有关键结构,从而节省资源。在多模态时代,无法想象没有图像的AI领域,在这种情况下,多模态 RAG 是必不可少的工具。AgenticRAG 是另一个层次的系统,可以将RAG 提升到自主和准确的新高度。
文章来自于“X Partners”,作者“浅浅是Cloris”。
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。
项目地址:https://github.com/labring/FastGPT
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】MindSearch是一个模仿人类思考方式的AI搜索引擎框架,其性能可与 Perplexity和ChatGPT-Web相媲美。
项目地址:https://github.com/InternLM/MindSearch
在线使用:https://mindsearch.openxlab.org.cn/
【开源免费】Morphic是一个由AI驱动的搜索引擎。该项目开源免费,搜索结果包含文本,图片,视频等各种AI搜索所需要的必备功能。相对于其他开源AI搜索项目,测试搜索结果最好。
项目地址:https://github.com/miurla/morphic/tree/main
在线使用:https://www.morphic.sh/