当前位置: 首页 > news >正文

Elasticsearch:RAG 和 grounding 的价值

作者:来自 Elastic Tomás Murúa

了解 RAG、grounding,以及如何通过将 LLM 连接到你的文档来减少幻觉。

更多阅读:Elasticsearch:在 Elastic 中玩转 DeepSeek R1 来实现 RAG 应用

想获得 Elastic 认证吗?查看下一期 Elasticsearch Engineer 培训的时间!

Elasticsearch 拥有大量新功能,帮助你为你的使用场景构建最佳搜索方案。深入学习我们的示例 notebook,了解更多信息,开始免费的 cloud 试用,或者现在就在你的本地机器上尝试 Elastic 吧。


大型语言模型(LLM)能够生成连贯的回答,但当你需要真实且更新的信息时,它们可能会产生幻觉(编造数据)并给出不可靠的答案。为防止这种情况,我们使用 grounding 来为模型提供专门的、针对特定使用场景的、相关的上下文信息,超越 LLM 的训练内容。

Grounding 是将特定数据源连接到模型的过程,用于将其 “接地” 到真实内容,而不是仅依赖模型训练时学到的模式,从而提供更可靠和更准确的答案。

Grounding 有助于减少模型幻觉,根据你的数据源生成响应,并通过提供引用让你能够审查回答内容。

检索增强生成( Retrieval Augmented Generation - RAG )是一种 grounding 技术,它使用搜索算法从外部来源检索相关信息,然后将这些信息作为上下文提供给 LLM,最后模型结合增强后的上下文和其原始训练数据生成答案。

RAG 的工作流程图如下:

RAG 让你可以通过更新或扩展模型可访问的外部数据源来轻松扩展系统。同时,它也是一种相较于微调 LLMs 更具性价比的替代方案,因为你只需添加数据,无需大量定制。

而且由于 RAG 可以访问并使用最新信息,它非常适合那些对最新信息要求较高的使用场景。

幻觉示例

在这个例子中,我们将使用 DeepSeek 并提问:“Who is the author who won the Chilean National Literature Prize in 1932?” 这是一个有陷阱的问题,因为这个奖项是在 1942 年才设立的。让我们看看模型是如何回答的:

如你所见,由于 AI 没有完整的信息,它产生了幻觉并给出了一个编造的答案。尽管作者和作品是真实存在的,但回答中的其他部分是错误的。

现在,我们来看看当我们使用 RAG 进行 grounding 后,模型的表现如何。为此,我们将上传关于智利国家文学奖的 Wikipedia 页面:

现在,让我们再次提出同样的问题并检查答案:

如你所见,使用 RAG 后我们得到了正确的答案。它指出 1932 年没有颁发该奖项,并请求用户进一步澄清问题。

在 Playground 中使用 RAG

通过使用 Elasticsearch,你可以轻松扩展,唯一的限制是集群容量。你可以使用不同的数据源和连接器(connectors)来获取所需数据。此外,你完全拥有你的数据,因为它保留在你的基础设施中,不会上传到第三方服务;如果你运行本地 LLM,你的数据甚至不会离开你的网络。最后,你可以通过设计查询和基于访问控制( RBAC )的过滤方式来控制搜索过程。

我们将使用 Playground,这是我们的低代码平台,它可以让你快速简单地使用 Elasticsearch 内容创建 RAG 应用。

以下是一个逐步指南,教你如何将 PDF 或其他文档上传到 Playground。你也可以在这里查看更多信息,并在这里试用 Playground。

上传 PDF

我们将把与 DeepSeek 提供的相同 PDF 文件索引到 Kibana 中。如果你按照上面文章中的步骤操作并创建了 semantic_text 字段,你将创建一个带有相应嵌入的向量数据库,准备好供使用。

提问

提问以下问题:

“Who is the author who won the Chilean National Literature Prize in 1932?”

Playground 将此查询发送到 Elasticsearch,Elasticsearch 运行语义搜索并定位与问题相关的信息片段。然后,这些片段作为上下文被包含在发送给 LLM 的提示中,以便将答案与我们提供的信息源进行 grounding。

最后,Playground 生成的答案说明 1932 年没有颁发奖项,并提供相关片段的引用作为证据。

Playground 还提供了两个非常有用的功能,以帮助理解 RAG 系统的底层组件:

查询

你可以查看 Elasticsearch 正在运行的查询,以检索相关文档,并根据需要启用/禁用字段。

查看代码

如果你可以部署你的 RAG 应用,Playground 为你提供支持。在 "View Code" 标签下,你可以查看用于创建整个 RAG 工作流的底层代码。你可以选择两种 Python 方案:使用 Elasticsearch 客户端与 OpenAI,或基于 Langchain 的实现。

如果你想定制体验并将代码部署到其他地方,你可以使用这个代码片段作为起点。

结论

Grounding 是一个将 LLM 连接到外部数据源的过程,使它们能够超越训练内容,提供更准确和可信的答案。检索增强生成(RAG)是一种 grounding 方法,它具有可扩展性、性价比高,并确保可以访问最新的信息。

像 Playground 这样的工具通过启用大规模索引、定制搜索和带有引用的响应,简化了 RAG 的实施,这使你能够轻松验证答案并确保获得准确和可信的结果。

如果你想关于 RAG 特性的深入文章,可以从这篇开始,获得 RAG 的更技术性定义。你还可以查看《Rag vs. fine-tuning: When RAG is the best decision》,《How to leverage document security using RAG》以及《RAG systems in production》。

原文:RAG and the value of grounding - Elasticsearch Labs

相关文章:

Elasticsearch:RAG 和 grounding 的价值

作者:来自 Elastic Toms Mura 了解 RAG、grounding,以及如何通过将 LLM 连接到你的文档来减少幻觉。 更多阅读:Elasticsearch:在 Elastic 中玩转 DeepSeek R1 来实现 RAG 应用 想获得 Elastic 认证吗?查看下一期 Elast…...

经典算法 求解台阶问题

求解台阶问题 题目描述 实现一个算法求解台阶问题。介绍如下: 对于高度为 n 的台阶,从下往上走,每一步的阶数为 1、2 或 3 中的一个。问要走到顶部一共有多少种走法。 输入描述 输入一个数字 N: 1 ≤ N ≤ 35表示台阶的高度 …...

伊甸园之东: 农业革命与暴力的复杂性

农业革命的开始 农业革命是人类历史上的第一次重大经济和社会变革,标志着人们从狩猎采集转向农耕。 该变革虽然进展缓慢,却彻底改变了人类的生活方式和社会结构。狩猎采集社会的特征 狩猎采集者生活在小规模、低密度的部落中,依赖于不稳定的自…...

MCP多智能体消息传递机制(Message Passing Between Agents)

目录 🚀 MCP多智能体消息传递机制(Message Passing Between Agents) 🌟 为什么要引入消息传递机制? 🏗️ 核心设计:Agent间消息传递模型 🛠️ 1. 定义标准消息格式 &#x1f6e…...

Deformable DETR模型解读(附源码+论文)

Deformable DETR 论文链接:Deformable DETR: Deformable Transformers for End-to-End Object Detection 官方链接:Deformable-DETR(这个需要在linux上运行,所以我是用的是mmdetection里面的Deformable DERT,看了一下源码基本是…...

游戏引擎学习第255天:构建配置树

为今天的内容设定背景 今天的任务是构建性能分析(profiling)视图。 目前来看,展示性能分析图形本身并不复杂,大部分相关功能在昨天已经实现。图形显示部分应该相对直接,工作量不大。 真正需要解决的问题,是…...

JavaScript性能优化实战之调试与性能检测工具

在进行 JavaScript 性能优化时,了解和使用正确的调试与性能检测工具至关重要。它们能够帮助我们识别性能瓶颈,精确定位问题,并做出有针对性的优化措施。本文将介绍一些常见的调试和性能检测工具,帮助你更好地分析和优化你的 JavaScript 代码。 1️⃣ Chrome DevTools Chro…...

C#VisionMaster算子二次开发(非方案版)

前言 在网上VisionMaster的教程通常都是按照方案执行的形式,当然海康官方也是推荐使用整体方案的形式进行开发。但是由于我是做标准设备的,为了适配原有的软件框架和数据结构,就需要将特定需要使用的算子进行二次封装。最直接的好处是&#…...

计算机总线系统入门:理解数据传输的核心

一、总线系统简介:计算机内部的交通网络 在计算机系统中,总线是指连接各个组件的一组共享信号线或传输通道,用于在系统内不同的硬件模块之间传递数据、地址、控制信号等信息。它类似于交通系统中的道路,帮助计算机各个部件&#…...

【Linux】Petalinux驱动开发基础

基于Petalinux做Linux驱动开发。 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 一个完整的Linux系统(针对Zynq) 1.1 PS部分 1.2 PL部分(若…...

提升办公效率的PDF转图片实用工具

软件介绍 这款专注于PDF文档处理的工具功能单一但实用,能够将PDF文件内容智能提取并自动拼接成长图,为用户提供便捷的图片化文档处理方案,无需复杂设置即可轻松上手。 简洁直观的用户界面 软件界面设计简洁清爽,没有任何多余…...

动态库与ELF加载

目录 动态库 ELF格式 ELF和后缀的区别 什么是目标文件 ELF文件中的地址--虚拟地址 动静态库和可执行文件 动态库ELF加载 为什么编译时静态库需要指定库?而运行时不需要指定库的,但是动态库需要呢? 总结: 动态库 动态库制作需要的.o文件需要使…...

算法每日一题 | 入门-顺序结构-数字反转

数字反转 题目描述 输入一个不小于 且小于 ,同时包括小数点后一位的一个浮点数,例如 ,要求把这个数字翻转过来,变成 并输出。 输入格式 一行一个浮点数 输出格式 一行一个浮点数 输入输出样例 #1 输入 #1 123.4输出 #1 …...

ROS2学习笔记|实现订阅消息并朗读的详细步骤

本教程将详细介绍如何使用 ROS 2 实现一个节点订阅另一个节点发布的消息,并将接收到的消息通过 espeakng 库进行朗读的完整流程。以下步骤假设你已经安装好了 ROS 2 环境(以 ROS 2 Humble 为例),并熟悉基本的 Linux 操作。 注意&…...

【Hot 100】 146. LRU 缓存

目录 引言LRU 缓存官方解题LRU实现📌 实现步骤分解步骤 1:定义双向链表节点步骤 2:创建伪头尾节点(关键设计)步骤 3:实现链表基础操作操作 1:添加节点到头部操作 2:移除任意节点 步骤…...

web应用开发说明文档

工程目录结构 FACTORY--bin #网络流可执行程序 参考后文1.1部分文字说明webrtc-streamer--deployment #部署相关的配置--mysql #参考1.3 mysql数据库详细说明--conf #存放mysql的配置文件--data #存放pem加密…...

快速搜索与管理PDF文档的专业工具

软件介绍 在处理大量PDF文档时,专业的文档管理工具能显著提升工作效率。这款工具能够帮助用户快速检索PDF内容,并提供了便捷的合并与拆分功能,让复杂的PDF操作变得简单高效。 多文件内容检索能力 不同于传统PDF阅读器的单文件搜索局…...

在GPU集群上使用Megatron-LM进行高效的大规模语言模型训练

摘要 大型语言模型在多个任务中已取得了最先进的准确率。然而,训练这些模型的效率仍然面临挑战,原因有二:a) GPU内存容量有限,即使在多GPU服务器上也无法容纳大型模型;b) 所需的计算操作数量可能导致不现实的训练时间。因此,提出了新的模型并行方法,如张量并行和流水线…...

NocoDB:开源的 Airtable 替代方案

NocoDB:开源的 Airtable 替代方案 什么是 NocoDB?NocoDB 的主要特点丰富的电子表格界面工作流自动化应用商店程序化访问 NocoDB 的应用场景使用 Docker 部署 NocoDB1. 创建数据目录2. 运行 Docker 容器3. 访问 NocoDB 注意事项总结 什么是 NocoDB&#x…...

关于Python:7. Python数据库操作

一、sqlite3(轻量级本地数据库) sqlite3 是 Python 内置的模块,用于操作 SQLite 数据库。 SQLite 是一个轻量级、零配置的关系型数据库系统,整个数据库保存在一个文件中,适合小型项目和本地存储。 SQLite 不需要安装…...

修改ollama.service都可以实现什么?

通过修改 ollama.service 系统服务单元文件,可以实现以下核心配置变更: 一、网络与访问控制 监听地址与端口 通过 Environment="OLLAMA_HOST=0.0.0.0:11434" 修改服务绑定的 IP 和端口: 0.0.0.0 允许所有网络接口访问(默认仅限本地 127.0.0.1)。示例:改为 0.0.…...

k8s笔记——kubebuilder工作流程

kubebuilder工作流程 Kubebuilder 工作流程详解 Kubebuilder 是 Kubernetes 官方推荐的 Operator 开发框架,用于构建基于 Custom Resource Definitions (CRD) 的控制器。以下是其核心工作流程的完整说明: 1. 初始化项目 # 创建项目目录 mkdir my-opera…...

长江学者答辩ppt美化_特聘教授_校企联聘学者_青年长江学者PPT案例模板

WordinPPT / 持续为双一流高校、科研院所、企业等提供PPT制作系统服务。 长江学者特聘教授 “长江学者奖励计划”中的一类,是高层次人才计划的重要组成部分,旨在吸引和培养具有国际领先水平的学科带头人。特聘教授需全职在国内高校工作,是高…...

Vscode/Code-Server 安装中文包——CI/CD

前言 啊好多人问我怎么还不更新,其实本月是已经写了一篇测评的,但是鉴于过于超前会给产品带来不好的影响,所以就没有公开。那么既然这样本月就再更新一篇。 首先 声明 一点,安装中文包的初衷不是看不懂英文,也不是对…...

【信息系统项目管理师-论文真题】2012上半年论文详解(包括解题思路和写作要点)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题1:论信息系统工程的风险管理1、写作要点2、解题思路对项目风险的认识和项目风险管理的基本过程、主要方法、工具信息系统项目最主要的风险是什么试题2:论信息系统工程项目可行性研究1、写作要点2、解题思…...

PowerPC架构详解:定义、应用及特点

一、PowerPC架构的定义 PowerPC(Performance Optimization With Enhanced RISC – Performance Computing) 是一种由IBM、摩托罗拉(现NXP)和苹果于1991年联合开发的精简指令集(RISC)处理器架构&#xff0c…...

IP伪装、代理池与分布式爬虫

一、动态代理IP应用:代理池的获取、选择与使用 代理池技术的核心是通过动态切换IP地址,让爬虫看起来像不同用户在访问网站,从而规避封禁。 (一)代理池的获取途径 1. 免费代理:低成本但高风险 免费代理可…...

【Arthas】火焰图优化应用CPU(问题原因:获取调用栈)

优化场景总结归纳 1. 问题背景 现象:在公共搜索功能中,火焰图分析发现 获取Java调用栈(StackTrace) 占用了约 6%的CPU(日常流量下),系统高负载时占比更高。原因: 每次外部API调用时…...

回溯算法详解(Java实现):从组合到排列的全面解析

引言 回溯算法是一种强大的算法思想,广泛应用于解决各种组合优化问题。它通过系统性地尝试所有可能的解,并在发现当前路径无法得到解时立即回溯,从而高效地找到问题的解。在本文中,我们将深入探讨回溯算法的核心思想、三要素、通…...

【BLE】【nRF Connect】 精讲nRF Connect自动化测试套件(宏录制、XML脚本)

目录 前言 1. nRF Connect自动化测试介绍 1.1. nRF connect宏录制功能介绍 1.2. 电脑端XML方式 1.3 实际应用案例 1.3.1 BLE 稳定性测试 1.3.2 设备固件更新(DFU)测试 1.3.3 批量设备配置 1.4 操作步骤 1.5 注意事项 2. nRF Connect日志记录 2.1. 日志记录功能 …...

springboot war包tomcat中运行报错,启动过滤器异常,一个或多个筛选器启动失败。

错误信息: "level": "ERROR", "thread": "localhost-startStop-1", "class": "o.a.c.c.C.[.[localhost].[/Crmeb-admin]", …...

基于开源AI大模型与AI智能名片S2B2C商城小程序的线上活动执行优化研究

摘要:本文以开源AI大模型、AI智能名片及S2B2C商城小程序为技术载体,探讨线上活动执行阶段的效能提升路径。通过分析某科技展会案例,发现AI智能名片可将参会者信息采集效率提升60%,S2B2C商城小程序的21链动模式使活动裂变传播速度提…...

解决奥壹oelove婚恋原生小程序上架问题,彻底解决解对问题增强版旗舰版通用

现在很多客户还不了解OElove小程序上架流程!因为很多用户对技术无感!随意上架工作都是要靠官方来辅助!这样在在二开性就会失去很多主动权!本人商业用户有全新原生态小程序源码(注意:这是原生非Uniapp&#…...

Java SE(7)——类和对象(二)

1.包(package) 1.1 包的定义 在Java中,包是一种用于组织和管理类,接口和其他包的机制。主要作用是防止命名冲突,并提供一种访问控制机制 1.2 package关键字 package关键字的主要作用是声明当前类在哪个包里面。 当然,用户也可以…...

Python 装饰器优化策略模式:电商促销折扣的优雅解法

问题背景:促销策略的重复陷阱 在电商促销系统中,我们曾面临这样的痛点: promos [fidelity_promo, bulk_item_promo, large_order_promo] # 6.1节原始方案 def best_promo(order):return max(promo(order) for promo in promos)当新增new…...

redis延时队列详细介绍

Redis延时队列是一种利用Redis数据结构的功能来实现延时任务调度的方法。在Redis中,常用的数据结构包括List(列表)和Sorted Set(有序集合)。延时队列通常是通过有序集合来实现的。 具体实现步骤如下: 将延…...

PHP 开发工程师如何借助 DeepSeek 提升工作效率

在当今数字化时代,PHP 开发工程师面临着不断提高工作效率和应对复杂项目需求的挑战。DeepSeek 作为一款先进的人工智能工具,为 PHP 开发工程师提供了一系列强大的功能,能够显著助力其日常工作。从代码生成与优化,到文档撰写和知识…...

Vibe Coding 新时代:AI 辅助编程完全指南

第一章:什么是 Vibe Coding?AI 编程的新范式 在传统编程的世界里,程序员需要掌握语法、算法和框架,一行一行地编写代码。但随着人工智能的快速发展,一种全新的编程方式正在兴起——这就是 Vibe Coding(氛围编程)。 Vibe Coding 的定义 Vibe Coding 是由 AI 研究者 An…...

Oracle RAC ‘Metrics Global Cache Blocks Lost‘告警解决处理

1. 引言: 前段时间鄙人检查处理过Oracle RAC Metrics Global Cache Blocks Lost’告警,在此总结分享下针对该报警的原因分析及处理办法。 2. 具体事件 通过排查发现造成该告警的原因是共享存储控制器损坏导致的。由于发生已经有段时间了,没…...

Go语言入门基础:协程

第21章 协程 目录 21.1 启动Go协程 协程的概念与特点启动协程的方法及示例协程执行顺序的控制 21.2 通道 通道类型及表示方式21.2.1 实例化通道21.2.2 数据缓冲21.2.3 单向通道21.2.4 通道与select语句 21.3 互斥锁 协程并发访问的逻辑问题互斥锁的使用示例 21.4 WaitGroup类…...

Servlet+tomcat

serverlet 定义:是一个接口,定义了java类被浏览器(tomcat识别)的规则 所以我们需要自定义一个类,实现severlet接口复写方法 通过配置类实现路径和servlet的对应关系 执行原理 当用户在浏览器输入路径,会…...

中间件和组件

文章目录 1. 前言2. 中间件介绍3. 组件介绍4. 区别对比5. 简单类比6. 总结 中间件和组件 1. 前言 中间件和组件是软件开发中两个重要的概念,但它们的定位和作用完全不同。中间件解决的事通信、跨系统、安全等问题,组件是解决具体业务模块,提高…...

piccolo-large-zh-v2 和 bge-m3哪个效果好?

环境: piccolo-large-zh-v2 bge-m3 问题描述: piccolo-large-zh-v2 和 bge-m3哪个效果好? 解决方案: 比较Piccolo-large-zh-v2(商汤)与BGE-M3(智源)的效果时,需结合…...

《告别试错式开发:TDD的精准质量锻造术》

深度解锁TDD:应用开发的创新密钥 在应用开发的复杂版图中,如何雕琢出高质量、高可靠性的应用,始终是开发者们不懈探索的核心命题。测试驱动开发(TDD),作为一种颠覆性的开发理念与方法,正逐渐成…...

哈希函数详解(SHA-2系列、SHA-3系列、SM3国密)案例:构建简单的区块链——密码学基础

文章目录 一、密码哈希函数概述1.1 哈希函数的基本概念1.2 哈希函数在数据安全中的应用 二、SHA-2系列算法详解2.1 SHA-2的起源与发展2.2 SHA-256技术细节与实现2.3 SHA-384和SHA-512的特点2.4 SHA-2系列算法的安全性评估 三、SHA-3系列算法详解3.1 SHA-3的起源与设计理念3.2 K…...

CUDA输出“hello world”

在我们学习任何一门编程语言的时候, 无疑当我们真正用其输出“hello world”的时候, 我们已经成功入门, 接下来要做的就是从入门到放弃了😆 接下来我们通过对比C和CUDA来学习CUDA的运行逻辑: C中的hello worldCUDA中的hello world文本编辑器编写源代码, 比如vscod…...

计算机视觉与深度学习 | 视觉里程计算法综述(传统+深度)

视觉里程计算法综述 1. 算法分类与原理1.1 传统几何方法1.2 深度学习方法2. 关键公式与模型2.1 本征矩阵分解2.2 深度学习模型架构3. 代码实现与开源项目3.1 传统方法实现3.2 深度学习方法实现4. 挑战与未来方向总结传统视觉里程计算法综述1. 算法分类与核心原理1.1 特征点法1.…...

c++ 函数参数传递

C 中的值传递和地址传递 在 C 中,函数参数传递主要有两种方式:值传递和地址传递(指针传递和引用传递都属于地址传递的变体)。 1. 值传递 特点 函数接收的是实参的副本对形参的修改不会影响原始变量适用于小型数据(…...

计算机视觉与深度学习 | 什么是图像金字塔?

图像金字塔详解 图像金字塔 图像金字塔详解1. **定义**2. **原理与公式****2.1 高斯金字塔****2.2 拉普拉斯金字塔**3. **代码示例****3.1 使用OpenCV实现****3.2 手动实现高斯模糊与降采样**4. **应用场景**5. **关键点总结**1. 定义 图像金字塔是一种多尺度图像表示方法,将…...

AI超级智能体教程(五)---自定义advisor扩展+结构化json输出

文章目录 1.自定义拦截器1.2自定义Advisor1.2打断点调试过程1.3Re-reading Advisor自定义实现 2.恋爱报告开发--json结构化输出2.1原理介绍2.1代码实现2.3编写测试用例2.4结构化输出效果 1.自定义拦截器 1.2自定义Advisor spring里面的这个默认的是SimpleloggerAdvisor&#…...