Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >检索增强生成RAG的关键特性与优势

检索增强生成RAG的关键特性与优势

原创
作者头像
走向未来
发布于 2025-04-21 07:06:03
发布于 2025-04-21 07:06:03
1.6K0
举报

什么是检索增强生成呢?在灯塔书《知识增强大模型》一书的第四章《检索增强生成》中这样介绍“检索增强生成(Retrieval Augmented Generation,RAG)通过检索外部知识(如文档、知识图谱、数据库等)提升大模型知识的准确性、时效性及推理能力,从而缓解“幻觉”现象,解决知识老化问题。RAG 的核心理念在于通过提供可靠的知识资源,使大模型在生成答案时更加全面、可信和可靠。这类似于人类记忆的运作机制。人类的记忆往往并不精确,会随着时间的推移变得模糊;同理,大模型也无法精确地保存知识。人类通过翻阅书籍或使用搜索引擎找到可靠的知识源,验证知识的准确性;同理,RAG 也利用外部知识来补充和更新知识,解决不准确、不及时和不可靠的问题,从根本上弥合知识鸿沟。”关于检索增强生成有关的技术,涉及到向量数据库、向量检索和文本检索以及RAG本身的实战,可以阅读灯塔书《知识增强大模型》。本文则进一步探讨RAG的关键特性,深入理解,为什么大模型需要利用外部知识来解决不准确、不可靠和不及时的问题,进而实现可信人工智能。

1. 访问实时和最新的知识

RAG依赖于外部知识库,以便在生成响应之前检索实时且相关的信息 。这与LLM受限于特定时间和数据集的训练形成鲜明对比 。RAG允许响应基于当前和补充数据,而不是仅仅依赖于模型的训练集 。开发人员可以利用RAG将LLM直接连接到实时社交媒体、新闻网站或其他频繁更新的信息源 。这一特性对于需要最新信息的应用至关重要,例如实时客户支持、旅行规划或理赔处理,通过使用实时数据扩展了这些应用的潜力。例如,在客户支持中,RAG系统可以快速检索准确的产品规格或故障排除指南,帮助用户高效地解决问题,从而提升用户体验和信任度 。

RAG能够利用实时数据流,这标志着LLM与世界互动方式的范式转变,使其能够超越静态知识,实现动态的、实时的理解。传统的LLM在一个特定的时间点接受训练,其知识库是固定的。RAG打破了这个限制,引入了一种机制,可以从不断发展的数字环境中获取和整合信息。对于那些对时效性和准确性要求极高的应用,例如金融分析、新闻报道和客户服务而言,这种能力尤其有价值,在这些领域,获取最新数据能够显著提升人工智能输出的质量和相关性。

确保生成响应的上下文相关性

RAG通过复杂的检索算法从海量数据中识别最相关的文档或片段,从而提供与用户查询高度契合的上下文丰富回答。这是通过复杂的检索算法实现的,这些算法能够从庞大且分散的数据集中识别出最相关的文档或数据片段 ,这些算法通常有向量检索(参考灯塔书《知识增强大模型》第3章《向量数据库》、第4章《检索增强生成》以及第8章《图模互补应用范式》、第9章《知识图谱增强生成与GraphRAG》等)。语义搜索作为RAG的一个组成部分,超越了关键词匹配,能够理解问题和源文档的含义,从而检索到更准确的结果 。RAG系统通过使用上下文信息,使AI系统能够生成针对用户特定需求和偏好的定制化响应 。

RAG检索算法的精密度标志着人工智能从仅仅处理关键词到理解用户意图的转变,从而实现了更具意义和准确性的互动。上下文相关性是有效沟通的关键。RAG先进的检索算法,包括语义搜索,使其能够超越表面的关键词匹配,深入研究用户查询的潜在含义。这种能力使得RAG能够识别和检索不仅准确而且直接适用于用户特定情境和需求的知识,从而产生更有帮助和更令人满意的AI驱动的互动。

减少幻觉生成:基于事实的生成

RAG通过控制信息流,平衡检索事实与生成内容,最大限度地减少虚构信息。许多RAG实现支持透明来源标注(引用检索内容),这对于负责任的AI实践至关重要,并提升了用户信任,也符合监管要求。RAG通过将LLM的响应建立在外部、可验证的事实基础上,减少了模型自行捏造信息的可能性。透明的来源标注不仅提高了用户对AI生成内容的信任度,也使得信息的准确性可以被核实,这在法律、医疗保健和金融等高风险领域尤为重要。

RAG在减轻幻觉方面的多方面方法,结合了受控的信息访问与确保事实一致性的技术,强调了构建更可靠和值得信赖的AI系统的承诺。LLM产生不准确或误导性信息的问题对AI的广泛应用构成了重大挑战。RAG通过确保LLM的响应以外部、可验证的信息为基础,直接应对了这一问题。此外,来源标注功能增强了AI输出的透明度,允许用户追溯信息的来源并验证其准确性,这对于在各个领域建立和维持对AI系统的信任至关重要。

实现成本效益:避免昂贵的模型再训练

RAG允许企业利用现有数据和知识库,无需对LLM进行大规模重新训练 。RAG通过使用相关检索数据增强模型输入,而不是要求模型从头开始学习,从而实现了这一点。这种方法显著降低了与开发和维护AI系统相关的成本,使得组织能够更快、更高效地部署RAG应用,而无需在专有数据上大量投资于大型模型的训练。与重新训练LLM相比,RAG提供了一种更经济高效的方式来引入新数据。

RAG的经济优势,特别是避免了耗时且昂贵的模型再训练,使得更广泛的企业能够利用先进的AI技术,而无需承担通常与定制AI模型相关的巨额费用。通过允许组织利用其现有的数据资产,RAG降低了进入门槛,使得各种规模的企业都能部署强大的AI驱动的应用程序,从而提高效率和创新。

另一方面,即使在不训练的情况下,某些大模型支持百万级词元(token)的输入,此时使用RAG,能够减少上下文,进而减少计算的成本。

提升用户生产力:快速获取精准数据

RAG通过结合信息检索与生成式AI,帮助用户快速获取精准的上下文相关数据。例如,在客户支持场景中,RAG系统可以快速检索相关信息,帮助用户高效解决问题。RAG通过提供准确且具有上下文敏感性的响应,减少了用户在数据收集和分析上花费的时间,使决策者能够专注于可操作的见解,并使团队能够自动化耗时的任务。RAG能够快速检索和综合信息,这有助于研究人员更高效地工作。

RAG通过提供对精确和上下文相关数据的快速访问,显著提高了用户的工作效率,从而减少了信息搜索和处理所花费的时间,并使个人和团队能够专注于更具战略性和创造性的任务。通过将高效的信息检索与LLM的生成能力相结合,RAG充当了一个强大的工具,可以加速知识工作者的工作流程并提高整体生产力。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用了这么多年分页PageHelper,才发现自己一直用错了!
在实际项目运用中,PageHelper的使用非常便利快捷,仅通过PageInfo + PageHelper两个类,就足以完成分页功能,然而往往这种最简单的集成使用方式,却在很多实际应用场景中,没有得到充分的开发利用.
业余草
2020/10/29
10.1K0
一次因PageHelper引起的多线程复用问题的排查和解决
导读 本文不仅对遇到类似问题的开发者提供了实际的解决思路,也为希望深入理解PageHelper工作机制和多线程编程的读者提供了丰富的技术细节。无论是对于中级开发者还是有经验的架构师,本文的内容都具有一定的参考价值。
京东技术
2024/03/18
4430
一次因PageHelper引起的多线程复用问题的排查和解决
PageHelper 真的会用么?
PageHelper 用法,在serviceimpl 执行mapper前 加入 PageHelper.startPage(page, pageSize),在new PageInfo<>(T) 即可
收心
2022/01/19
3130
MyBatis分页插件PageHelper的使用
从图中可以看出,mybatis中首先要在配置文件中配置一些东西,然后根据这些配置去创建一个会话工厂,再根据会话工厂创建会话,会话发出操作数据库的sql语句,然后通过执行器操作数据,再使用mappedStatement对数据进行封装,这就是整个mybatis框架的执行情况。那么mybatis的插件作用在哪一环节呢?它主要作用在Executor执行器与mappedeStatement之间,也就是说mybatis可以在插件中获得要执行的sql语句,在sql语句中添加limit语句,然后再去对sql进行封装,从
似水的流年
2018/06/13
1.8K0
MyBatis分页组件--PageHelper
PageHelper是国内非常优秀的一款开源的 mybatis 分页插件,它支持基本主流与常用的数据库,例如 Oracle、Mysql、MariaDB、SQLite、Hsqldb 等。
宋先生
2019/07/18
1.2K0
Mybatisplus的查询
首先要引入mabtisplus的分页拦截器,官方已经提供MybatisPlusConfig
名字是乱打的
2021/12/24
1K0
Mybatisplus的查询
Pagehelper超级好用的分页插件
ma布
2024/10/21
2700
记一次PageHelper分页未生效问题排查
最近在项目中使用PageHelper分页工具+Mybatis实现分页查询逻辑,但是发现分页逻辑并没有生效,代码片段如下:
眯眯眼的猫头鹰
2022/03/23
1.7K0
Mybatis分页插件PageHelper的配置和使用方法
前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页。 前端分页 一次性请求数据表格中的所有记录(ajax),然后在前端缓存并且计算count和分页逻辑,一般前端组件(例如dataTable)会提供分页动作。 特点是:简单,很适合小规模的web平台;当数据量大的时候会产生性能问题,在查询和网络传输的时间会很长。 后端分页 在ajax请求中指定页码(pageNum)和每页的大小(pageSize),后端查询出当页的数据返回,前端只负责
用户1225216
2018/03/05
5.1K0
SpringBoot整合分页插件PageHelper
在springboot中使用PageHelper插件有两种较为相似的方式,接下来我就将这两种方式进行总结。官方使用说明
zpzp6
2023/03/23
1.4K0
PageHelper 插件,无故给 SQL 增加 Limit 问题
在项目中,使用了 MyBatis 的 PageHelper 插件,发现了一个奇怪的问题,经常会给SQL无缘无故的增加Limit语句,经过调查,发现原因是没有安全的使用PageHelper插件,先来看一个例子:
BUG弄潮儿
2021/12/08
2.2K0
PageHelper分页插件
PageHelper是适用于MyBatis框架的一个分页插件,使用方式极为便捷,支持任何复杂的单表、多表分页查询操作。
2020/10/23
1.1K0
PageHelper分页插件
springboot集成mybatisplus分页_mybatis分页查询原理
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194202.html原文链接:https://javaforall.cn
全栈程序员站长
2022/10/02
8220
java 的 pagehelper.PageHelper实现分页的逻辑
目录 1 需求 2 实现 3 原理 1 需求 我们想要在Java代码里面实现分页,那么可以使用第三方的插件 2 实现 1 倒入依赖 <!-- PageHelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1
一写代码就开心
2023/02/02
5520
【MyBatis】MyBatis分页插件PageHelper的使用
转载自 https://www.cnblogs.com/shanheyongmu/p/5864047.html   
allsmallpig
2021/02/25
8560
springboot整合mybatis分页插件PageHelper实战
https://www.cnblogs.com/xifengxiaoma/p/11027551.html
全栈程序员站长
2022/11/03
1.5K0
MyBatis 的分页方式,你都会吗
分页是我们在开发中绕不过去的一个坎!当你的数据量大了的时候,一次性将所有数据查出来不现实,所以我们一般都是分页查询的,减轻服务端的压力,提升了速度和效率!也减轻了前端渲染的压力!
Java技术精选
2021/09/15
1.5K0
Springboot引入pageHelper流程以及小坑
mybatisplus自带的插件一般用于我们使用其自带的sql操作api,比如查询的时候加一个ipage,这一般不适用于我们自己写的sql操作,想应用于自定义sql比较麻烦,这里介绍一款我们mybatis和mybatisplus都可以使用的分页插件pagehelper mybatis引用
名字是乱打的
2021/12/24
1.8K0
sql2java-pagehelper:参照Mybatis-PageHelper实现分页查询
sql2java是我几年年开始写的一个sql2java是一个轻量级数据库(SQL)访问代码(java)生成器。这几年一直在根据工作需要维护升级,最近的项目中需要对数据库的记录提供分页查询功能,于是我参照Mybatis-PageHelper并借用其外部数据格式为sql2java实现的分页功能,将其封装为一个sql2java子项目sqlj2ava-pagehelper。使用方式与Mybatis-Pagehelper基本一致。
10km
2022/09/27
3600
Mybatis分页插件-PageHepler的使用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pyycsd/article/details/80969700
用户1212940
2019/06/20
1.1K0
推荐阅读
相关推荐
用了这么多年分页PageHelper,才发现自己一直用错了!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档