写点什么

检索增强生成:革命性技术还是过度承诺?

Kateryna Reshetilo, Olexandr Moklyak

  • 2024-08-01
    北京
  • 本文字数:5112 字

    阅读完需:约 17 分钟

大小:2.49M时长:14:30
检索增强生成:革命性技术还是过度承诺?

本文将深入剖析 RAG(Retrieval-Augmented Generation)所宣称的能力和其在实际应用中的表现。我们首先将探讨 RAG 的工作原理,评估其潜在的优势。随后,我们将分享在实践中遇到的一些挑战,以及我们为应对这些挑战所开发的解决方案。此外,我们还将讨论那些我们仍在探索中的未解决的问题。通过这些内容,您将获得对 RAG 能力的全面了解,并认识到它在推动人工智能领域发展中所扮演的不断进化的角色。

 

设想一下,你正在与某人交谈,这个人不仅对当前事件缺乏了解,而且在面对不确定性时,还倾向于自信地编造细节。这种情况恰恰反映了传统生成式人工智能所面临的困境。尽管 AI 拥有广泛的知识储备,但它往往依赖于过时的数据源,并且容易陷入所谓的“幻觉”现象——即在缺乏确凿信息的情况下,虚构出细节。这种行为模式导致了一个严重的问题:AI 可能会基于某种虚构的细节,以一种不切实际的自信态度,提供错误的信息。

 

检索增强生成(Retrieval-Augmented Generation, RAG)技术为人工智能领域带来了革命性的变化。它的作用可以类比于为一个原本对当前事件一无所知的人提供了一部能够即时访问互联网上最新信息的智能手机。通过 RAG ,人工智能系统现在能够获取并整合实时数据,显著提升了其响应的准确性与相关性。然而,值得注意的是,RAG 技术并非一剂万能药。在不同的应用场景中,它仍在探索未知的领域,并没有一种放之四海而皆准的策略。有效的 RAG 落地方案往往需要根据具体的使用案例来定制,这是一个反复试验和不断试错的过程。

 

什么是 RAG 以及其工作原理

检索增强生成(RAG)是一种人工智能技术,它宣称通过在响应生成过程中整合外部最新信息,可以显著增强生成式模型的能力。该方法使人工智能系统能够获取最新可用数据,从而使生成的响应不仅准确,而且与当前上下文高度相关。

 

下面是 RAG 技术所涉及的各个关键步骤:

 

  1. 发起查询:整个过程始于用户向 AI 聊天机器人提出一个问题。这是用户与 AI 之间的初始互动,用户提出一个特定的主题或查询,以此启动对话。

  2. 编码以检索:随后,用户提出的查询被转换成文本的向量表示形式。这些向量是用户查询内容的数字化表达,它们是模型能够计算和分析的格式,并且包含了问题的核心信息。

  3. 寻找相关数据:接下来,RAG 的检索组件开始工作,利用查询的向量表示在数据集中进行深入的语义搜索。这种搜索超越了简单的关键词匹配,它旨在理解查询背后的深层意图,并寻找与之相匹配的相关数据。

  4. 生成答复:在成功整合了相关的外部数据之后,RAG 生成器结合 AI 模型的训练知识以及新检索到的特定信息,构建出回复。这一过程确保了生成的回复不仅有着可靠的依据,而且与当前上下文高度相关,提供了一个既准确又富有洞察力的答案。

 


RAG 的开发过程

开发一个用于生成式人工智能的检索增强生成(RAG)系统是一个多步骤的过程,关键在于确保系统不仅能检索到相关信息,还能有效地整合这些信息,以提升响应的质量。以下是该过程的详细概述:

  1. 收集自定义数据:首要步骤是收集人工智能将访问的外部数据。这要求我们构建一个多样化且与人工智能处理主题紧密相关的数据集。数据源可能包括书本、设备手册、统计数据和项目文档,这些数据为人工智能的响应提供了坚实的事实基础。

  2. 分块和格式化数据:收集到数据后,接下来的任务是对数据进行预处理。分块是将大型数据集分解成更小、更易于管理的段落,以便于后续处理。

  3. 将数据转换为嵌入(向量):这一步涉及将数据块转换成密集的数值表示形式,即嵌入或向量。这样的转换有助于人工智能更高效地分析和比较数据。

  4. 开发数据搜索:该系统必须采用一系列高级搜索算法,其中包括语义搜索技术,以突破传统关键词匹配的局限。此外,系统还需整合自然语言处理(NLP)技术,以确保即便用户的输入术语存在不精确性,也能够准确捕捉到查询背后的深层意图,检索出与用户查询高度相关的数据。

  5. 准备提示词系统:最后一步是调制提示词系统,这些提示词将指导大型语言模型(LLM)如何使用检索到的数据来生成响应。这些提示词确保了人工智能的输出不仅信息丰富,而且在上下文上与用户的查询高度匹配。

 

这些步骤构成了 RAG 开发的理想蓝图。然而,在实际实施过程中,通常需要进行额外的调整和优化,以适应特定项目的目标。因为在开发的每个阶段,都可能会遇到需要解决的难题。

 

RAG 的承诺

RAG 技术在人工智能系统中承诺可以发挥双重作用。首先,它致力于简化用户获取答案的流程。通过提供更准确和相关的响应,可以显著提升用户体验。这种改进使得用户在查询信息时能够体验到更加便捷和直观的交互过程。其次,RAG 技术为企业提供了深度利用其数据的能力。它使得原本庞大的信息库变得易于搜索,从而极大地促进了信息的可访问性。这种能力不仅提高了企业处理数据的效率,而且为企业的决策制定和洞见发掘提供了有力支持。

准确性提升

准确性仍然是大型语言模型的一个关键限制,这种表现出来通常有以下几种方式:

 

  1. 错误信息。当不确定时,大型语言模型可能会提供看似合理但实际上不正确的信息。

  2. 过时或样板式的响应。寻求特定和最新信息的用户往往会收到空泛或过时的响应。

  3. 不可靠的信息来源。大型语言模型有时会根据不可靠的来源生成响应。

  4. 术语混淆。不同来源可能在不同语境中使用相似的术语,导致不准确或混乱的响应。

 

使用 RAG ,你可以限定模型只使用正确的数据,以确保响应与当前的任务相关且准确。

 

会话式搜索

RAG 旨在增强我们搜索信息的方式,允许用户通过类似人类的对话而非一系列不连贯的搜索查询来找到所需信息,从而有望超越传统搜索引擎(如谷歌)的表现。这一承诺提供了一种更流畅、更自然的交互方式,其中人工智能能够理解并在正常对话的流程中响应查询。

 

实事求是的看法

然而,不管 RAG 的承诺看起来多么诱人,重要的是要记住这项技术并非万能良药。虽然 RAG 可以提供无可否认的好处,但它并不能解决所有挑战。我们已在几个项目中实施了这项技术,我们将分享我们的经验,包括我们面临的障碍和我们找到的解决方案。这种来自实践的见解旨在提供一个客观的观点,说明 RAG 真正能提供什么,以及哪些方面仍需要持续进步。

 

RAG 落地的挑战

在现实世界的应用场景中实施检索增强生成(RAG)会带来一系列独特的挑战,这些挑战可能深刻影响人工智能的性能。尽管这种方法提高了准确答案的可能性,但依然无法保证完美无误的准确性。

 

我们在一个发电机维护项目中的经验表明,在确保人工智能正确使用检索到的数据方面存在重大障碍。通常,它会误解或误用信息,导致生成误导性的答案。

 

此外,处理会话中的细微语义差异、浏览庞大的数据库以及纠正人工智能“幻觉”——即它虚构信息的情况——进一步增加了 RAG 落地的复杂性。

 

这些挑战突显了 RAG 的落地方案必须视具体项目而定制化,同时也强调了在人工智能的发展中持续创新和适应的必要性。

 

确保准确性

尽管检索增强生成(RAG)显著提高了提供正确答案的可能性,但更重要的是要认识到它并不能保证 100% 的准确性。

 

在我们实际应用中,我们发现仅仅让模型从我们提供的外部数据源中获取正确的信息是不够的;它还必须有效地利用这些信息。即使模型确实使用了检索到的数据,但仍然存在它可能误解或扭曲这些信息的风险,使得这些信息变得不那么有用甚至不准确。

 

例如,当我们为发电机维护开发了一个 AI 助手时,我们努力让模型找到并使用正确的信息。AI 偶尔会“破坏”这些宝贵的数据,要么误用它,要么以削弱其效用的方式改变它。

 

这次经历突出了 RAG 实施的复杂性,其中检索信息仅仅只是第一步。真正的任务是将这些信息有效且准确地整合到 AI 的响应中。

 

会话搜索中的语义误差

使用搜索引擎搜索信息和与聊天机器人交谈之间存在很大差异。使用搜索引擎时,你通常会确保你的问题定义得很好以获得最佳结果。但在与聊天机器人的对话中,问题可以不那么正式和完整,比如问:“X 怎么样?”。例如,在我们为发电机维护开发 AI 助手的项目中,用户可能从询问一个发电机型号开始,然后突然转换到另一个型号。

 

处理这些快速变化和突然的问题要求聊天机器人理解对话的完整上下文,这是一个主要挑战。我们发现 RAG 很难根据正在进行的对话查找正确信息。

 

为了改进这一点,我们调整了我们的系统,让底层的大型语言模型(LLM)在尝试查找信息之前,使用对话的上下文重述用户的查询。这种方法帮助聊天机器人更好地理解和响应不完整的问题,并使交互更加准确和相关,尽管它并不总是完美的。

 


数据库访问

在实施检索增强生成(RAG)时,访问庞大的数据库以检索正确的信息是一个重大挑战。当我们有了明确定义的查询并理解了所需的信息,下一步就不仅仅是搜索,而是有效搜索。我们的经验表明,尝试梳理整个外部数据库是不切实际的。如果项目包括数百份文档,每份文档可能又包含数百页,那么这个体量就变得难以管理。

 

为了解决这个问题,我们开发了一种方法,首先通过将焦点缩小到可能包含所需信息的特定文档来简化流程。我们使用元数据来实现这一点——为我们数据库中的每份文档分配清晰、描述性的标题和详细的描述。这些元数据就像一个向导,帮助模型快速识别并选择响应用户查询的最相关文档。

 

一旦确定了正确的文档,我们随后在该文档内执行向量搜索,以定位最相关的部分或数据。这种有针对性的方法不仅加快了检索过程,还显著提高了检索信息的准确性,确保了由 AI 生成的响应尽可能与上下文相关和精确。在深入内容检索之前先细化搜索范围的策略,对于有效管理和访问 RAG 系统中的大型数据库至关重要。

 

幻觉

如果用户请求的信息在外部数据库中没找到,会发生什么?根据我们的经验,大型语言模型(LLM)可能会编造回答。这个问题——被称为“幻觉”——是一个重大挑战,我们仍在寻找解决方案。

 

例如,在我们的发电机项目中,用户可能会询问我们数据库中没有记录的型号。理想情况下,助手应该承认缺少信息,并声明它无法提供帮助。然而,LLM 有时会提取关于类似型号的信息,并将其呈现为相关。目前,我们正在探索解决这个问题的方法,以确保 AI 在无法根据现有数据提供准确信息时可靠地指出来。

 

寻找“正确”的方法

另一个我们从使用 RAG 的工作中学到的关键教训是,它的实施没有放之四海而皆准的解决方案。例如,我们为发电机维护项目开发的 AI 助手所采用的成功策略并不能直接应用到其他不同背景的项目中。

 

我们尝试将相同的 RAG 设置应用于为销售团队创建 AI 助手的项目中,该助手的目的是简化入职流程并增强知识传递。和许多其他企业一样,我们也需要花费精力处理大量且难以筛选的内部文档。因此该项目的目标是部署一个 AI 助手,使这些丰富的信息更容易被获取。

 

然而,销售文档的性质——相对于发电机项目文档,更侧重于流程和协议而非技术规格——与前一个项目中使用的技术设备手册大相径庭。内容类型和使用方式的差异意味着相同的 RAG 技术并未如预期那样发挥作用。销售文档的独特特点要求 AI 检索和呈现信息的方式有所不同。

 

这次经历强调了根据每个新项目的内容、目的和用户期望量身定制 RAG 策略的必要性,而不是依赖于通用模板。

 

关键收获与 RAG 的未来

当我们回顾在检索增强生成的挑战和复杂性中的过程时,出现了几个关键教训,这些教训不仅强调了该技术目前的能力,也暗示了其不断发展的未来。

 

  • 适应性至关重要。RAG 在不同项目中的不同结果,展示了在其应用中适应性的必要性。由于每个项目的数据和需求的多样性,一种放之四海而皆准的方法是不存在的。

  • 持续改进。实施 RAG 需要不断的调整和创新。正如我们所看到的,克服幻觉等障碍、改进会话搜索和优化数据检索对于发挥 RAG 的全部潜力至关重要。

  • 数据管理的重要性。有效的数据管理,特别是在组织和准备数据方面,被证明是成功实施 RAG 的基石。这包括了对数据如何分块、格式化和实现可搜索性的细致关注。

 

展望未来:RAG 的前景

  • 加强上下文理解。RAG 的未来发展方向旨在更好地处理对话和上下文的语义误差。自然语言处理(NLP)和机器学习的进步可能会带来更精细的模型,这些模型能够以更高的精确度理解和处理用户查询。

  • 更广泛的应用。随着企业认识到使数据更易于访问和操作的好处,RAG 可能会在各个行业中看到更广泛的实施,从医疗保健到客户服务乃至更广泛的领域都可能出现它的身影。

  • 通过创新解决现有挑战。持续的研究和开发可能会产生创新的解决方案来应对当前的局限,例如幻觉问题,从而提高 AI 助手的可靠性和可信度。

 

总之,尽管 RAG 在人工智能技术方面展现出了富有希望的前景,但它并非没有挑战。未来的路将需要持续的创新、定制化的策略和开放的心态,以充分实现 RAG 的潜力,使人工智能交互更加准确、相关且有用。

 

原文链接:https://www.sitepoint.com/retrieval-augmented-generation-revolution-overpromise/#realworldragchallenges

2024-08-01 12:127817

评论 1 条评论

发布
用户头像
恭喜你,又水了一文,又浪费我5分钟
2024-08-07 20:25 · 浙江
回复
没有更多了
发现更多内容

软件测试/测试开发丨Selenium的常用元素定位方法

测试人

Python 软件测试 自动化测试 测试开发 selenium

ABAQUS有限元分析软件吃CPU还是GPU比较多?

思茂信息

gpu cpu 显卡 ANAQUS 有限元分析

制造业用哪款堡垒机好一点?为什么?

行云管家

网络安全 堡垒机 双因子认证 制造业

从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

什么是GPU与CPU?有什么不同?哪个更好?

Finovy Cloud

玩转“擎舵”,秒变AIGC时代营销创意“掌舵人”

Geek_2d6073

如何用 TDengine 预测 “未来”

爱倒腾的程序员

涛思数据 tdengine 时序数据库

Spring Loaded代码热更新实践和原理分析 | 京东云技术团队

京东科技开发者

spring 热更新 Loader 企业号 7 月 PK 榜

人脸识别技术的精度提高及其应用

来自四九城儿

[杂谈] 从PDF文件中进行表格抽取(tabula || paddle-pp-structure)

alexgaoyh

paddle 版式还原 表格提取 tabula pp-structure

“多”维演进:智能编码的深度进化

阿里云CloudImagine

云计算 编码 视频编码 视频云

【OpenAI】ChatGPT函数调用(Function Calling)实践 | 京东云技术团队

京东科技开发者

openai 数据交互 企业号 7 月 PK 榜 Function Calling

关于Java已死,看看国外开发者怎么说的

越长大越悲伤

Java 后端

架构课模块一作业

庚小庚

ElasticSearch - 批量更新bulk死锁问题排查 | 京东云技术团队

京东科技开发者

elasticsearch MQ 企业号 7 月 PK 榜 BulkProcessor

为什么越来越多的网站选择海外主机跨越国界?

一只扑棱蛾子

海外主机

分享实录 | NGINX 网络协议优化(下)

NGINX开源社区

nginx TCP TLS HTTP

HDC开发者盛典 | 破解创业老板高效制果汁奥秘挑战!赢取代金券、按摩枕、收纳袋等礼品~

华为云PaaS服务小智

云计算 软件开发 华为云 华为开发者大会2023

研发质量指标大 PK:MTTR vs MTBF,谁是靠谱王?

LigaAI

高可用性 研发效能度量 MTTR 研发效能管理 企业号 7 月 PK 榜

数智驱动 百业共荣!亚信科技精彩亮相2023 MWC上海展

亚信AntDB数据库

数据库 AntDB AntDB数据库

5G与妈祖守护的那片海

脑极体

5G

基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

袋鼠云数栈

sql flink 实时开发

人脸识别技术在智能家居中的应用

来自四九城儿

GPU 容器虚拟化新能力发布和全场景实践

Baidu AICLOUD

GPU容器虚拟化

了解Java可见性的本质

阿里技术

Java java 编程

5G与妈祖守护的那片海

白洞计划

5G

人脸识别技术的安全性和隐私保护

来自四九城儿

手把手教你如何做手机PCB电磁兼容性设计

华秋PCB

电磁 PCB 电路板 电子 PCB设计

文盘Rust -- FFI 浅尝 | 京东云技术团队

京东科技开发者

rust C语言 企业号 7 月 PK 榜 FFI

解决ueditor表格拖拽没反应的问题

互联网工科生

数据库 Vue

山西等级保护测评机构有哪些?有几家?

行云管家

信息安全 等级保护 等保测评 等级测评 山西

检索增强生成:革命性技术还是过度承诺?_生成式 AI_InfoQ精选文章