【Claude Code】带你理解从零理解 RAG 以及具体实现流程图

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

RAG

中文语义就是检索增强生成,是一种技术理念

概念

RAG 是指对**大语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。 LLM用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。

在 LLM 本就强大的功能基础上,RAG 将其扩展为能访问特定领域或组织的内部知识库,所有这些都无需重新训练模型。 这是一种经济高效地改进 LLM 输出的方法,让它在各种情境下都能保持相关性、准确性和实用性。

为什么RAG很重要?

LLM 技术的性质给 LLM 响应带来了不可预测性。此外,LLM 训练数据是静态的,从而为其掌握的知识限定了截止日期。

LLM 面临的已知挑战包括:

  • 在没有答案的情况下提供虚假信息。
  • 在用户需要具体的最新响应时,提供过时或宽泛的信息。
  • 依据非权威来源创建响应。
  • 由于术语混淆,不同的培训来源使用相同的术语来谈论不同的事情,因此会产生不准确的响应。

可以将大语言模型看作是一个过于热情的新员工,他拒绝随时了解时事,但总是会绝对自信地回答每一个问题,这就有很大可能会回答错或者过时。则向量数据库能够提供实时信息来源。

RAG 是解决其中这些问题的一种方法。它会重定向 LLM,从权威的、预先确定的知识来源中检索相关信息。 组织可以更好地控制生成的文本输出

工作原理

  • 如果没有 RAG,LLM 会接收用户输入,并根据训练信息(即其已知信息)创建响应。

  • 如果有 RAG,则会引入一个信息检索组件,利用用户输入首先从新数据源提取信息。用户查询和相关信息都提供给 LLM。 LLM 使用新知识及其训练数据来创建更好的响应。以下各部分概述了该过程。

创建外部数据

LLM 原始训练数据集之外的新数据称为外部数据。它可以来自多个数据来源,例如 API、数据库或文档存储库。

数据可能以各种格式存在,例如文件、数据库记录或长篇文本。另一种称为*嵌入语言模型的技术将数据转换为数字表示形式并将其*存储在向量数据库中。**

检索相关信息

下一步是执行相关性搜索。用户查询将转换为向量表示形式,并与向量数据库匹配。

例如,一个可以回答组织的人力资源问题的智能聊天机器人。如果员工搜索 :“我有多少年假?” ,系统将检索年假政策文档以及员工个人过去的休假记录。将会返回这些与员工输入的内容高度相关的特定文档。 相关性是使用数学向量计算表示法计算得出并确立的。

增强 LLM 提示

接下来,RAG 模型通过在上下文中添加检索到的相关数据来增强用户输入或提示(就是用户输入 + RAG模型添加的相关数据发给LLM)

更新外部数据

下一个问题可能是——如果外部数据过时了怎么办? 要维护当前信息以供检索,可以**异步更新文档并更新文档的嵌入表示形式**,通过自动化实时流程或定期批处理来执行此操作。

具体的流程图所示:

在这里插入图片描述

检索增强生成与语义搜索有什么区别?

  • 语义搜索可以完善 RAG 结果,适用于想要在其 LLM 应用程序中添加大量外部知识源的组织。现代企业在各种系统中存储大量信息,例如手册、常见问题、研究报告、客户服务指南和人力资源文档存储库等。上下文检索在规模上具有挑战性,因此会降低生成输出质量。

  • 语义搜索技术可以扫描包含不同信息的大型数据库,并更准确地检索数据。 例如,他们可以回答诸如 “去年在机械维修上花了多少钱?” 之类的问题,方法是**将问题映射到相关文档并返回特定文本而不是搜索结果。** 然后,开发人员可以使用该答案为 LLM 提供更多上下文。

  • RAG 中的传统或关键字搜索解决方案对知识密集型任务产生的结果有限。 相比之下,语义搜索技术可以完成知识库准备的所有工作(单词嵌入、文档分块和其他复杂问题) 。它们还生成**语义相关的段落和按相关性排序的标记词**,以最大限度地提高 RAG 有效载荷的质量。

画图不易,如果喜欢请点点赞

希望对你有所帮助,祝你身体健康。

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值