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

5 分钟快速理解 RAG

了解 RAG 的工作原理,以及它为什么能够减少幻觉(hallucinations)

如果我告诉你,只需给我就接下来的 5 分钟,你就能理解当今最重要的一项生成式人工智能(GenAI)概念,会怎么样?

相信我,这里不会有任何复杂的流行词,也不会有令人困惑的架构图。

我将展示一个简单的流程,说明现代人工智能系统是如何利用你自己的文档和数据来回答问题的。

本指南的真正目标是帮助你理解什么是检索增强生成(RAG),以及大语言模型(LLMs)为何会产生幻觉。你还将了解到 RAG 的应用场景,以及它为何会成为最重大的突破之一。

如果向量数据库、嵌入(embeddings)和检索流水线等术语听起来很复杂,你完全不必担心。是时候让我们清晰地理解所有这些词汇了。

问题所在

像 GPT-4 或 Claude 这样的大语言模型是在来自互联网的大量文本上训练出来的。这包括来自博客、书籍、代码、维基百科以及更多渠道的内容。正是由于如此海量的学习,大语言模型才能够回答你的查询。

但那种训练是有过期时间的。我称之为“截止日期(cutoff date)”。这意味着大语言模型训练所依据的数据只截止到时间上的某一个特定节点。因此,如果你询问在该日期之后发生的事情,大语言模型可能无法准确回答,因为这些内容从未包含在它的数据中。

此外,大语言模型也不了解你的个人或公司数据,因为它从未见过这些数据。所以当你询问一个人工智能聊天机器人“我们的退款政策是什么?”时,它不会有正确的答案,因为它没有针对你的退款政策进行过训练。它会说“我不知道”,或者更糟糕的是,自信地给出一个错误的答案。而这种自信地给出错误答案的部分就被称为“幻觉”。这是目前人工智能领域最大的问题之一。

这是因为大语言模型的的目标是流畅地回答你的查询。该模型并非故意给出错误答案。由于它没有见过你的退款政策,它便进行了一种猜测,并最终得出了错误的答案。

针对此类问题的解决方案就是 RAG。

什么是 RAG?

RAG 代表检索增强生成(Retrieval-Augmented Generation)。相信我,这是一个非常简单的概念。

RAG 并不依赖于大语言模型(LLM)已经掌握的知识,而是首先从你的文档中获取相关信息,然后将该信息连同你的查询一起提供给大语言模型。这确保了大语言模型能够访问并利用你文档中存在的、经由验证的信息。

让我们尝试用一个简单的例子来理解这一点。假设你是一名新员工,一位客户打电话向你咨询某款特定产品的保修政策。由于你是新员工,你并不了解该产品的保修条款。于是,你迅速查阅了该产品的保修文档,阅读了相关章节,然后利用你刚刚读到的内容回答了客户。

这正是 RAG 所做的事情。员工就是大语言模型(LLM),文档就是知识库,而检索则是回答之前阅读相关章节的过程。

RAG 的运作方式

1. 将数据拆分为块(Chunks)

我们不会将文档直接发送给大语言模型(LLM),因为文档的体积可能会非常庞大。所以请始终记住,在 RAG 中,第一步是将数据切割成更小的片段。每个片段可以是 300 到 500 个单词。这个过程被称为“分块(chunking)”。我们首先从对这些文档中存在的内容进行分块开始。

2. 转换为嵌入(Embeddings)

在这一步中,我们刚刚创建的每一个数据块都会被转换成一串数字。这被称为“嵌入(embedding)”。它捕捉了该文本的语义。因此,含义相似的词最终会得到相似的数字。这有助于进行语义搜索。

3. 存储在向量数据库中

既然我们已经创建了嵌入,就需要将它们存储在某个地方。这些嵌入会被存储在一个被称为“向量数据库(vector database)”的特殊数据库中。一些常用的向量数据库包括:Pinecone、Chroma 和 FAISS。

4. 用户提出问题

这是一个非常直接的步骤。在这里,用户只需输入他们的问题。

5. 查找最相关的块

该问题也会被转换为一个嵌入。然后,系统会在向量数据库中寻找其嵌入与问题嵌入最接近的数据。这意味着我们正在努力为你的查询寻找最相关的答案。

6. 将上下文发送给大语言模型(LLM)

一旦我们找到了最相关的块,就会将它们连同原始问题一起作为最终的上下文发送给大语言模型。我们发送给大语言模型的提示词(prompt)看起来类似于:“这里有一些信息:检索到的块。现在请回答这个问题:用户问题。”

7. 基于事实的回答(Grounded Answer)

现在,大语言模型有了相关的素材可以利用。RAG 从中检索数据的文档起到了经由验证的源头作用。大语言模型此时将根据它所获得的信息来生成答案,并且不会再有任何凭空猜测。

一个简单的代码示例

让我们来看看在 Python 中使用 LangChain 实现 RAG 架构是什么样的。不用担心代码,理解逻辑就好。

from langchain.document_loaders import TextLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain.embeddings import OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom langchain.chains import RetrievalQAfrom langchain.chat_models import ChatOpenAI# Step 1: Load your documentloader = TextLoader("company_policy.txt")documents = loader.load()# Step 2: Split into chunkssplitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)chunks = splitter.split_documents(documents)# Step 3: Create embeddings and store in vector DBembedding_model = OpenAIEmbeddings()vector_store = Chroma.from_documents(chunks, embedding_model)# Step 4: Set up retrieval + LLMllm = ChatOpenAI(model="gpt-4", temperature=0)qa_chain = RetrievalQA.from_chain_type( llm=llm, retriever=vector_store.as_retriever())# Step 5: Ask a questionanswer = qa_chain.run("What is our refund policy for digital products?")print(answer)

这就是你能找到的最简化的 RAG 代码了。正如我们之前所探讨过的那样,你从加载文件开始,对其进行分块、生成嵌入、进行存储、检索,最后给出回答。这就是以最简单明了的方式所诠释的整个 RAG 流水线(pipeline)。

RAG 的应用场景

RAG 已经变得非常流行,并已成为众多真实世界人工智能工具的核心支柱。以下是几个 RAG 发挥主要作用的典型示例:

  • • PDF 聊天机器人 —— 上传一篇研究论文或学习文档,并针对其内容提出问题。大语言模型(LLM)将根据该文档进行回答,而不是根据其训练数据。
  • • 客户支持机器人 —— 公司将其全部数据的使用权限开放给 RAG 系统。RAG 检索出正确的文章,大语言模型则基于经由验证的信息进行回答,而不是产生幻觉。
  • • 内部知识助手 —— 公司可以拥有自己的助手,用以回答有关公司的日常问题,例如“新工程师的入职流程是什么?”。这可以作为你公司的专属私人助手,来解答内部的各种疑问。
  • • 电子商务与产品搜索 —— 零售商利用 RAG,通过将用户查询与现有的产品描述进行语义匹配,来帮助用户找到合适的产品。

你注意到这里的共同点了吗?这些数据都是私有的、特定的或最新的。没有任何大语言模型针对它们进行过训练。

为什么 RAG 有时仍会失败

RAG 固然强大,但它并非无懈可击的超级能力。

你需要了解的最核心概念是:如果检索阶段失败了,那么后续的一切都会失败。 大语言模型(LLM)只能基于它接收到的信息进行处理。如果因为语义歧义而检索到了错误的文本块(chunks),那么大语言模型就会自信地生成错误的答案。 这就是为什么构建 RAG 系统的工程师会把大量时间花在以下几个方面:

  • 分块大小(Chunk size)—— 如果分块太大,你可能会引入不必要的干扰信息;如果分块太小,则会丢失必要的上下文。
  • 嵌入质量(Embedding quality)—— 不同的嵌入模型在处理不同类型的文本时,性能表现各不相同。
  • 检索策略(Retrieval strategy)—— 有时基础的相似度搜索就能正常工作,但在绝大多数情况下,混合检索(将关键词检索与语义检索相结合)的效果通常会更好。

一个配备了卓越检索机制的普通大语言模型,其表现将会超越一个配备了糟糕检索机制的强大大语言模型。

回答的质量完全取决于检索内容的质量。

总结与启示

现在你已经了解了这样一个事实:人工智能模型在时间上是固化的。它们并不知晓你的数据。而当它们不确定的时候,就会产生幻觉。

RAG 通过允许大语言模型(LLM)在得出答案之前先查阅经由验证的源文件,从而解决了这一问题。通过这种方式,大语言模型现在便能够知晓你的数据了。 而这一切正是通过我们前面所学到的流水线(pipeline)来实现的:分块(chunk)、嵌入(embed)、存储(store)、检索(retrieve)、回答(answer)。 RAG 是防止幻觉并确保大语言模型利用你的特定数据进行回答的最佳方法之一。下一次当你向人工智能工具上传一份 PDF 文件而它能够准确回答时,你就会完全明白其幕后正在发生着什么。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

http://www.jsqmd.com/news/899175/

相关文章:

  • 别再死记硬背模型了!一张图带你分清P中位、P中心和覆盖问题,附Python代码对比
  • 从实验到实战:基于模糊推理的智能洗衣机控制系统设计与Python/Matlab实现
  • 2026年RAG架构演进:从混合搜索到智能体流程的生产级实践
  • DataAgent实战指南:从架构设计到工程实现,小白也能轻松掌握大模型落地(收藏版)
  • Windows风扇控制终极指南:用FanControl实现完美静音与散热平衡
  • 第5课:变量名与赋值
  • 揭开DDR引脚的神秘面纱:原理图背后的硬件逻辑
  • 40VOUT,3A,XZ5129,升压LED恒流驱动芯片
  • 阿贝云免费云服务器实测
  • 今日算法(带回文问题的回溯)
  • 戴森球计划8000+工厂蓝图终极指南:快速打造高效星际帝国
  • 告别RealVNC:在Ubuntu 20.04/22.04上快速搭建TigerVNC或x11vnc服务端(附防火墙配置)
  • ChatGPT辅助撰写IT技术文档:提升事故报告、操作手册与SOP效率
  • 【ChatGPT音乐理论解码指南】:20年作曲教授亲授——用AI精准解析调式、和声进行与曲式结构的5大认知盲区
  • 省钱又提效!大模型Token优化与减少使用技巧全指南
  • 田利健导演团队倾力护航《沿着边境看中国》第三季:融合真人秀元素,以匠心铸就边境新篇章
  • 2026程序员自学指南:国内口碑最好的三大编程实战网站,大厂面试刷题全靠它
  • py之某website之music搜索接口(某易版本)
  • 工业通信协议繁杂,设备接入困难?万德高科边缘计算网关来救场
  • 5G网络切片技术详解:从NFV/O-RAN架构到3GPP标准演进
  • 40VIN/VOUT,1.6A,XZ5130,升压LED恒流驱动芯片
  • Docker HUB Harbor 背后的镜像怎么存储的?存到哪里了?文件数据结构 底层存放方式
  • ContextCapture Master 倾斜摄影测量实景三维建模技术
  • 工业增强现实在智能船厂的应用实践:雾计算架构与AR性能评估
  • 网站对AI隐身?解析AEO挑战与RAG技术下的可见性策略
  • 2026年科里奥利质量流量计国产品牌排名:五家优选深度解析 - 科技焦点
  • 大语言模型效率优化实战:从量化、LoRA到推理部署的完整指南
  • EM68C16CWQG-25H DDR2 SDRAM芯片功能描述与操作逻辑
  • DownKyi:三步掌握B站高清视频下载的终极方案
  • 上百台服务器手动装Nginx?用Ansible Playbook一条命令搞定批量部署