RAG:终结AI幻觉,让你的大语言模型秒变“知识渊博”!
本文深入浅出地介绍了检索增强生成(RAG)技术,解释了其如何通过结合文档检索与大语言模型(LLM),有效减少AI幻觉现象。文章详细阐述了RAG的工作流程,包括数据分块、嵌入转换、向量数据库存储、问题检索、上下文传递及基于事实的回答生成。此外,还列举了RAG在PDF聊天机器人、客户支持、内部知识助手和电子商务等领域的应用场景,并探讨了RAG可能失败的原因及优化策略。通过RAG,AI系统能够利用特定、私有的数据进行回答,从而避免因缺乏相关知识而产生幻觉。
了解 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 文件而它能够准确回答时,你就会完全明白其幕后正在发生着什么。
说真的,这两年看着身边一个个搞Java、C++、前端、数据、架构的开始卷大模型,挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis,稳稳当当过日子。
结果GPT、DeepSeek火了之后,整条线上的人都开始有点慌了,大家都在想:“我是不是要学大模型,不然这饭碗还能保多久?”
我先给出最直接的答案:一定要把现有的技术和大模型结合起来,而不是抛弃你们现有技术!掌握AI能力的Java工程师比纯Java岗要吃香的多。
即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地!大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇!
这绝非空谈。数据说话
2025年的最后一个月,脉脉高聘发布了《2025年度人才迁徙报告》,披露了2025年前10个月的招聘市场现状。
AI领域的人才需求呈现出极为迫切的“井喷”态势
2025年前10个月,新发AI岗位量同比增长543%,9月单月同比增幅超11倍。同时,在薪资方面,AI领域也显著领先。其中,月薪排名前20的高薪岗位平均月薪均超过6万元,而这些席位大部分被AI研发岗占据。
与此相对应,市场为AI人才支付了显著的溢价:算法工程师中,专攻AIGC方向的岗位平均薪资较普通算法工程师高出近18%;产品经理岗位中,AI方向的产品经理薪资也领先约20%。
当你意识到“技术+AI”是个人突围的最佳路径时,整个就业市场的数据也印证了同一个事实:AI大模型正成为高薪机会的最大源头。
最后
我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。
我整理出这套 AI 大模型突围资料包【允许白嫖】:
- ✅从入门到精通的全套视频教程
- ✅AI大模型学习路线图(0基础到项目实战仅需90天)
- ✅大模型书籍与技术文档PDF
- ✅各大厂大模型面试题目详解
- ✅640套AI大模型报告合集
- ✅大模型入门实战训练
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
①从入门到精通的全套视频教程
包含提示词工程、RAG、Agent等技术点
② AI大模型学习路线图(0基础到项目实战仅需90天)
全过程AI大模型学习路线
③学习电子书籍和技术文档
市面上的大模型书籍确实太多了,这些是我精选出来的
④各大厂大模型面试题目详解
⑤640套AI大模型报告合集
⑥大模型入门实战训练
👉获取方式:
有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
