超越 RAG 基础:AI 应用的高级策略

news2024/9/22 13:28:02

作者:来自 Elastic Platform Team

我们最近与 Cohere 举办的线上活动深入探讨了检索增强生成 (Retrieval Augmented Genereation - RAG) 的世界,重点讨论了在概念验证阶段之后构建 RAG 应用程序的关键注意事项。我们的演讲者是 Elastic 的首席解决方案架构师 Lily Adler 和 Cohere 的高级产品经理 Maxime Voisin,他们就这一不断发展的自然语言处理 (Natural Language Processing - NLP) 领域的挑战、解决方案和最佳实践分享了宝贵的见解。

为什么要构建一堆解决方案来补充大型语言模型?

大型语言模型 (Large Language Models - LLMs) 功能强大,但远非完美。它们经常会犯一些荒谬的错误,例如建议在披萨上涂胶水或吃石头 —— 这些错误源于它们的训练数据,没有内在的逻辑层。这就是 RAG 的作用所在,它增加了一个关键的控制和上下文层,以帮助从 LLM 中得出响应。RAG 的全部目的是将相关信息检索系统与 LLMs 集成,以增强文本生成。通过将 LLM 置于上下文相关数据中,RAG 不仅可以提高响应准确性,而且在降低成本和总体控制方面也具有显著优势。它有助于利用外部知识来源,使 AI 输出更加可靠和相关。

你的 RAG 的好坏取决于你的检索引擎。没有灵丹妙药可以让它变得完美。但有一些最佳实践。

Maxime Voisin,Cohere 高级产品经理 (RAG)

了解 RAG 架构

基本的 RAG 架构从用户问题开始,使用向量数据库检索相关数据,例如文档、图像和音频。然后,这些数据为 LLM 生成更准确的响应提供了必要的背景信息。

但是,高级 RAG 设置涉及多个层,每个层都发挥着关键作用:

  • 数据层:确定信息的类型(结构化或非结构化)和存储。有效的数据管理对于高质量的信息检索至关重要。
  • 模型层:结合基础 LLMs 和嵌入模型。微调这些模型对于处理特定任务和提高文本生成的性能至关重要。
  • 应用层:管理检索、提示和应用程序逻辑,确保将相关文档无缝集成到工作流中。
  • 分析和部署层:确保解决方案适合用途并高效部署。持续分析有助于改进模型性能并适应新数据。

战略数据层管理

有效的 RAG 解决方案始于对数据格局的彻底了解。在处理图像或文档等非结构化数据或数据库等结构化数据时,强大的分块策略必不可少:

  • 大块与小块:平衡上下文丰富性和精确性。大块提供更多上下文,但可能会降低精确度,而小块更精确,但可能缺乏完整的信息。
  • Token 重叠:确保跨块的连续上下文,这有助于保持检索到的信息的一致性。
  • 折叠相关块:保持精确度,同时始终引用来源进行验证,确保所提供信息的可靠性。

安全和法律考虑也至关重要。必须谨慎管理访问控制机制(LDAP、Active Directory)和隐私问题,例如使用命名实体识别编辑敏感信息,以确保合规性和用户信任。这些措施对于防止数据泄露和未经授权访问敏感信息至关重要。

评估模型层

使用人工标记的数据集和适当的指标选择(召回率与精确度)是有效信息检索的基础。此外,成本和速度也是关键因素,需要在以下要素之间进行权衡:

  • 召回率 (Recall):确保检索到所有相关文档。高召回率在法律或合规场景中至关重要,因为缺少相关信息可能会产生严重后果。
  • 精确度 (Precision):确保检索到的文档与查询高度相关。高精度在消费者应用中很重要,可以避免用户沮丧。

有效微调 LLMs 对于优化这些指标和提高 RAG 系统的整体性能至关重要。

解决生成模型中的挑战

为了提高生成模型的可验证性并减少幻觉,请使用提供引用的模型,选择幻觉率较低的模型,并提高上下文窗口利用率。这将增强生成文本的连贯性。此外,专门针对 RAG 应用训练的模型可以显著降低不准确的可能性并提高系统的整体可靠性。

LLMs 会犯错,人类也会犯错,不过 LLMs 会犯一些更愚蠢的错误,因为 LLM 没有那层逻辑。

Lily Alder,Elastic 首席解决方案架构师

观看网络研讨会

高级 RAG 技术

  • 并行查询:使用并行搜索查询处理多部分问题可显著提高 RAG 系统的响应准确性,使其能够熟练处理复杂的用户请求。此技术使系统能够同时分解和处理查询的不同部分,从而确保全面准确的响应。
  • 带有工具的 RAG:通过集成工具来处理复杂数据类型(例如电子表格和 SaaS 应用程序)来扩展 RAG 功能,为工作场所助手等 AI 应用程序开辟了新的可能性。这种整合使 RAG 系统能够与外部知识源交互,提供更全面的答案。例如,查询数据库或电子表格以提供数据驱动的响应可以增强系统在业务和生产力应用程序中的实用性。
  • Agentic RAG:为 RAG 系统配备代理功能可实现顺序推理和动态规划,使其能够应对更复杂的查询。Agentic RAG 系统可以利用多种工具并根据收集的结果调整计划。这种灵活性允许更复杂的问题解决能力,并可以处理需要多个步骤和逻辑推理的复杂任务。

大规模部署检索增强生成

扩展 RAG 解决方案涉及解决三个主要领域:

  1. 成本管理:选择高效模型并优化向量搜索数据库以有效控制成本。成本分析和定期监控有助于确定需要优化的领域,确保解决方案保持成本效益。
  2. 安全性和可靠性:实施灾难恢复、服务级别目标,并采用站点可靠性工程 (site reliability engineering - SRE) 方法以确保强大的基础设施。这些措施有助于保持正常运行时间和可靠性,这对于生产环境至关重要。
  3. 持续分析:利用可观察性工具来监控和评估 LLM 响应,适应变化并确保一致的性能。持续评估有助于保持信息检索的质量并适应任何不断变化的需求。

实用的实施策略

LangChain、LlamaIndex、Autogen 和 Cohere 的 API 等多种工具和框架提供了开箱即用的解决方案,可有效实施高级 RAG 系统。利用这些工具可以帮助你避免从头开始,加快部署速度并减少开销。它们为信息检索和自然语言处理任务提供预构建的组件,从而实现更快、更可靠的实施。

例如,LangChain 可以通过链接不同的流程来帮助构建复杂的工作流程,而 LlamaIndex 则提供高效的索引解决方案以实现快速检索。另一方面,Autogen 通过提供一系列预配置的设置和模板来简化响应的生成。

协作和资源

Elastic 和 Cohere 一直处于信息检索和 RAG 研究与开发的前沿。你可以通过以下方式深入了解 RAG:

  • 观看完整的网络研讨会:超越 RAG 基础知识:实施 RAG 的策略和最佳实践。
  • 如需进一步阅读和参加实践研讨会,请访问 Elastic Search Labs。此资源提供与各种 RAG 用例相关的宝贵信息、教程和代码示例,包括将 Elastic 与 Cohere 结合使用的教程。
  • 开始免费试用,开始使用搜索 AI 构建应用程序。

通过了解 RAG 的复杂性并实施自然语言处理的最佳实践,你可以构建强大的 AI 应用程序,利用外部知识源获得更准确、更可靠的响应。无论你专注于简单的 RAG 系统还是更高级的实现,目标都是创建可扩展、经济高效并通过精确的信息检索和文本生成提供价值的解决方案。

本文中描述的任何特性或功能的发布和时间均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付或根本无法交付。

在这篇博文中,我们可能使用或提及了第三方生成式 AI 工具,这些工具由其各自的所有者拥有和运营。Elastic 无法控制第三方工具,我们对其内容、操作或使用不承担任何责任,也不对你使用此类工具可能产生的任何损失或损害承担任何责任。在使用 AI 工具处理个人、敏感或机密信息时,请谨慎行事。你提交的任何数据都可能用于 AI 培训或其他目的。我们无法保证你提供的信息将得到安全或保密。在使用任何生成式 AI 工具之前,你应该熟悉其隐私惯例和使用条款。

Elastic、Elasticsearch、ESRE、Elasticsearch Relevance Engine 和相关标志是 Elasticsearch N.V. 在美国和其他国家/地区的商标、徽标或注册商标。所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。

原文:Beyond RAG Basics: Advanced strategies for AI applications | Elastic Blog

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

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

相关文章

使用 Python和 FFmpeg 批量截图视频到各自文件夹中

在这篇博客中,我们将创建一个简单的图形用户界面 (GUI) 工具,利用 wxPython 和 FFmpeg 来从视频文件中批量生成截图。这个工具能够让用户选择一个文件夹,遍历其中的所有视频文件,按照视频长度将其分为四等分,然后为每个…

鸿蒙HarmonyOS之使用ArkTs语言实现自定义Tab菜单栏分页主页面UI

一、效果 显示为3个Tab菜单栏,中间可以滑动 二、实现步骤 1、Index.ets 示例代码中用到的颜色、文字、图片等资源可以自行替换 import { Tab_1 } from ./Tab_1; import { Tab_2 } from ./Tab_2; import { Tab_3 } from ./Tab_3;//主页面 Entry Component stru…

Excel数字中间指定位置插入符号——以120120加*为例

设置单元格格式——自定义 更多阅读Excel数字中间指定位置插入符号_哔哩哔哩_bilibili

B码对时案例分享,基于RK3568J+Logos-2,让电力设备轻松实现“高精度授时”!

本文主要介绍瑞芯微RK3568J紫光同创Logos-2的B码对时案例,开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit Pango Design Suite(PDS):PDS_2022.2-SP3 IRIG-B码对时典型应用 IRIG-B码对时可应用于继电保护装…

台球厅自动控制无人台球之智能开关-SAAS本地化及未来之窗行业应用跨平台架构

一、无人台球厅优点 1. 降低人力成本:无需雇佣大量员工,如收银员、服务员等,节省了工资、福利和管理成本。 2. 24 小时营业:不受人工营业时间限制,可以随时满足顾客的需求,增加营业时长和收入。 3. 便捷高…

不良图片检测

OpenNSFW模型简介 OpenNSFW是一个由 Yahoo 研究院开源的深度学习模型,用于识别和区分网络上的正常内容与不适宜内容(Not Safe For Work)。 项目地址:https://github.com/yahoo/open_nsfw OpenNSFW主要基于Caffe框架实现&#x…

邮票孔拼版制作方法

邮票孔拼版制作方法 拼版后的局部图:(中间用连接桥的方式,此方式能最少程度上减少残留) 2)拼版后的效果图 3)邮票孔拼版规则: 拼板与板间距1.2MM或者1.6MM 等邮票孔:8个0.55MM的孔,孔间距0.2MM加两排,邮票孔伸到…

KubeSphere核心实战_kubesphere部署redis01_为redis指定配置文件_指定存储卷_配置服务---分布式云原生部署架构搭建047

然后我们再来,部署一下redis,可以看到,首先去容器官网去找到对应的redis的镜像然后 可以看到镜像中都有说的,如何启动,以及 --appendonly yes 是指定持久化.然后 /data表示数据存储的位置. 可以看到数据存储位置 然后还有配置文件的位置. 可以看到,我们首先去创建配置文件,然后…

【专题】2024全数驱动 致胜未来-数字化敏捷银行白皮书报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p37404 政策明确发展使命,新时代商业银行应坚持党建引领,秉持高质量发展理念。数字经济已成大势,商业银行需构建数字基础设施能力,强化顶层战略规划。当前商业银行数字化发展面临诸多挑…

改变自己·心情治愈

今早起床了 看镜子里的我 忽然发现我发型睡得有点kuso 一点点改变,有很大的差别 你我的力量也能改变世界 最近比较烦 最近情绪很down 每天看新闻都会很想大声尖叫 但脏话没用 大家只会嫌凶 我改变自己发现大有不同 新一代的朋友我们好好地加油 大家一起大…

QT:QWebEngineView基本使用

QWebEngineView介绍 添加库 QT core gui webenginewidgets出现问题 解决 提升类 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//ui->web_widget->load(QUrl("http://www.baidu.com"));ui->…

Rimworld边缘世界使用服务器开服联机教程

订阅联机模组RimWorld Together (MULTIPLAYER)(百度莱卡云) 打开创意工坊搜索RimWorld Together (MULTIPLAYER) 订阅联机模组与它的依赖模组 打开游戏➡点击Mod配置 双击左边灰色的模组,到右边启用 还需要排一下顺序,顺序不对会…

iPhone变身万能钥匙,iOS 18.1让你的手机解锁一切

Apple 近日发布新闻稿宣布,在即将推出的 iOS 18.1 更新中,将开放全新的 NFC(近场通信)和 SE(安全元件)API 给第三方开发者使用。这一举措将使得开发者能够开发出更加多样化和实用的应用程序,如车…

Redis清空缓存

Windows环境下使用命令行进行redis缓存清理 1、redis安装目录下输入cmd 2、redis-cli -p 端口号 3、flushdb 清除当前数据库缓存 4、flushall 清除整个redis所有缓存

Dubbo源码深度解析(七)

接上一篇博客《Dubbo源码深度解析(六)》,上篇博客主要从服务消费方开始讲起,主要讲:如果类中的属性或者方法,如果被DubboReference注解所修饰,Dubbo是怎么处理的,处理逻辑类似Spring框架提供的Autowired注解…

JavaScript - Ajax

Asynchronous JavaScript And XML,异步的JavaScript和XML 作用: 数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术…

Vue2 与 Vue3 生命周期对比

首先我们需要了解 Vue2 的生命周期,请参考我之前写的博文 Vue2-生命周期 Vue2 生命周期存在四个阶段,八个钩子函数,具体作用可以看图,详细解释可以参考之前的博文 Vue3 生命周期 经过对比,我们发现 Vue3 的生命周期也存…

Office办公软件从哪里下载

Offece下载方法有哪些?从哪里下载Office办公软件?是日常办公必不可少的常用软件。 进入正题 第一步:下载最新的office办公软件软件包 https://docs.qq.com/doc/DQUhtSnJxU1FxZnVF 先下载后解压,看到下面的文件 然后右击-以管理…

mq-work模型

work模型是什么-任务模型 会产生什么现象? 操作 1、新建一个队列 2、在consuner增加2个消费者 2、发送50条消息 4、消费者1和消费者2,一轮1次 消费能力不一致,还是一人一个消费50条消息,所以浪费了能力 总结 prefetch预获取&#…

文心快码 Baidu Comate 前端工程师观点分享:以文心快码 Baidu Comate为例,智能代码助手需要什么(一)

本系列视频来自百度工程效能部的前端研发经理杨经纬,她在由开源中国主办的“AI编程革新研发效能”OSC源创会杭州站105期线下沙龙活动上,从一款文心快码(Baidu Comate)前端工程师的角度,分享了关于智能研发工具本身的研…