AI “幻觉“揭秘:小白程序员必备RAG技术,收藏学会轻松应对大模型挑战! 本文深入解析了AI大模型的“幻觉”问题即模型生成看似合理却错误的回答。核心原因在于模型无法稳定、可控地调用事实。为解决此问题文章详细介绍了RAG检索增强生成技术将其比喻为给AI配上“外挂资料库”通过先检索资料再生成答案的方式确保回答的准确性和可追溯性。文章还详细阐述了RAG的工作流程包括建立知识库、检索、增强和生成四个阶段并探讨了RAG的关键技术点、进阶玩法以及实际应用案例。最后文章总结了RAG的优势和局限性并展望了其未来发展方向。1.AI 的幻觉问题你肯定遇到过这种情况问 ChatGPT 一个具体问题它回答得头头是道语气自信得不行结果你一查证发现它说的全是错的。比如问它我们公司年假怎么算“它给你编了一条工作满一年可休 10 天”——但你公司手册写的是 5 天。问它某某法律条款是什么“它引了一条根本不存在的第 123 条规定”。问它这个药有什么副作用它列出一堆听起来很专业的术语但跟你的药完全没关系。这种现象有个学名叫 “幻觉”Hallucination。大模型会产生幻觉根本原因在于它不能稳定、可控、可追溯地调用事实。这些知识被压缩在参数里模型生成答案时无法像数据库一样精确查询、校验和追溯来源。所以在需要准确、可更新、可验证的场景里它容易产生看似合理但实际错误的回答。打个比方大模型就像一个读过海量书籍的学霸你问它问题它会根据哪些词经常出现在类似问题后面来生成答案。它不是在查资料而是在猜下一个词。这种方式在写诗、编故事时很棒但在需要准确答案的场景下就很要命。那么有没有办法让 AI 回答时有据可查而不是靠猜有。这个方法叫 RAG。2.RAG 是什么给 AI 配了个外挂资料库RAG全称是 Retrieval-Augmented Generation中文叫检索增强生成。核心思想不难理解不让 AI 凭记忆回答而是先让它去查资料再根据查到的资料来回答。类比一下没有 RAG 的 AI就像一个闭卷考试的考生只能靠脑子里的记忆答题记错了就只能瞎编。有 RAG 的 AI就像一个开卷考试的考生遇到不会的先翻书找到相关内容再作答。这就是 RAG 的核心把生成和检索结合起来让 AI 的回答有据可查。RAG 这个概念最早是 2020 年 Facebook AI现在叫 Meta AI在一篇论文里提出的论文题目叫《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》。这篇论文的开创性在于它证明了一个道理——与其让模型记住所有知识不如让它能够查到知识。这其实也符合人类的学习方式我们不需要记住百科全书里的每一个字但我们需要知道去哪里查。3.RAG 的工作流程详细版RAG 的整个流程可以分为四个阶段建立知识库、检索、增强、生成。我们一步步拆解。3.1 建立知识库离线阶段在用户提问之前你得先有一个资料库也就是向量数据库。当然其他的原始文档、元数据、权限信息、关键词索引和业务数据库也都可以共同参与检索。为什么要用向量因为检索的本质是找相似——用户问了一个问题你得去资料库里找跟这个问题最相关的文档片段。向量恰好擅长做这件事。具体步骤第一步文档切片Chunking假设你有一本 100 页的员工手册 PDF你不能直接把它整本塞进数据库。得先把它切成一块一块的比如每块 500 字块与块之间留一点重叠overlap避免切得太碎导致语义断裂。切片策略很关键切太大检索不精准一块里可能包含很多无关内容。切太小语义不完整检索到了也理解不了上下文。第二步向量化Embedding把每一块文本转换成一个向量一串数字。这个向量捕捉了文本的语义。比如年假怎么算和休假制度是什么这两个句子字面不一样但语义很接近它们的向量在空间里也离得很近。而年假怎么算和今天天气真好语义完全不相关向量距离就很远。常用的 Embedding 模型有OpenAI 的 text-embedding-3-small和text-embedding-3-large收费但效果好开源的 BGE 系列BAAI 出品中文友好M3E中文场景表现不错Jina Embeddings支持多语言第三步存入向量数据库把每一块文本和它的向量一起存进向量数据库。常见的选择有Chroma轻量级适合本地测试Qdrant性能好支持复杂过滤Pinecone云端托管开箱即用收费Milvus国产企业级支持混合检索Weaviate功能丰富支持多模态3.2 检索Retrieval用户提问了比如问“年假怎么算”第一步把用户的问题也向量化用同样的 Embedding 模型。第二步去向量数据库里找跟这个问题向量最相似的几个文档片段。怎么衡量相似通常用余弦相似度Cosine Similarity或者欧氏距离。第三步返回 Top-K 个最相关的片段K 通常取 3-10。这里有个技术细节单纯靠向量相似度有时候会漏掉一些重要结果。比如用户问年假向量检索可能返回休假制度但漏掉那些没出现年假这个词但内容相关的片段。所以业界常用 Hybrid Search混合检索向量检索 关键词检索BM25结合取长补短。还有一个进阶技巧叫 Query Expansion查询扩展把用户的问题改写成多个不同表述分别检索再合并结果。这样能提高召回率。3.3 增强Augmented检索到了相关片段后把这些片段和用户的问题拼在一起形成一个增强后的提示词Augmented Prompt。比如根据以下参考资料回答问题 【参考资料 1】公司员工手册第 23 页 员工工作满 6 个月可享受年假 5 天满 1 年可享受年假 10 天。 【参考资料 2】公司员工手册第 24 页 年假需在当年内使用不得跨年累计。 用户问题年假怎么算这个拼接动作看起来简单但其实很关键你怎么把检索到的片段组织起来让模型既能看到关键信息又不会被无关内容干扰有些系统会在这一步做 Re-ranking重排序检索阶段返回了 20 个候选片段再用一个更精细的模型比如 Cohere Re-ranking 或者 BGE Re-ranker对这 20 个片段重新打分选出最相关的 5 个再送给 LLM。这样能显著提高最终答案的质量。但是当上下文很长时LLM 对中间内容的注意力会显著下降开头和结尾的内容更容易被利用也就是 Lost in the Middle 问题。这直接影响到检索结果如何排列塞进 prompt中。3.4 生成Generation最后一步把这个增强后的提示词交给大语言模型LLM让它生成答案。这一步跟普通的 LLM 调用没太大区别但有一个重要技巧要让模型知道如果参考资料里没有答案就说不知道而不是瞎编。你可以在提示词里加一句“如果参考资料无法回答用户问题请明确告知不要编造信息。”这一步很关键能有效减少幻觉。4.一个具体例子公司制度问答机器人假设你要给公司做一个员工问答机器人让员工能直接问年假怎么算“报销流程是什么”加班怎么申请这类问题。没有 RAG 的方案直接把员工手册扔给 ChatGPT让它记住然后回答员工问题。问题在哪员工手册可能很长超出模型上下文窗口GPT-4 Turbo 虽然支持 128K tokens但实际效果会下降。手册更新了比如年假规则改了你得重新教模型成本高。模型可能记混把别公司的制度安到你公司头上。有 RAG 的方案把员工手册切成片段向量化存进向量数据库。员工问年假怎么算系统去向量库里找最相关的几段比如年假那一节。把这几段 员工的问题拼在一起送给 LLM。LLM 根据这几段内容回答。好处准确答案来自手册原文不是模型编的。可追溯你可以告诉员工这个答案来自员工手册第 23 页员工可以去查证。易更新手册改了你只需要更新向量库不用重新训练模型。成本低不需要 Fine-tuning不需要 GPT-4用 GPT-3.5 也能做。5.RAG 的关键技术点深入一点RAG 看起来简单但要把它做好有很多技术细节需要注意。5.1 Embedding 模型的选择Embedding 模型决定了检索的质量。如果向量化效果不好后面再怎么优化也白搭。英文场景OpenAItext-embedding-3-large依然是标杆但 Cohere Embed 和 Voyage AI 也很强。中文场景BGE、bge-m3、Jina、Qwen Embedding 等都是常见候选最终应以业务数据集评测为准。尤其是bge-large-zh-v1.5。M3Emoka-ai/m3e-base也不错。多语言场景Jina Embeddings v2 支持 89 种语言效果稳定。选型建议先在你们的数据集上做几个小实验看哪个模型的检索准确率高再决定。5.2 Chunking 策略文档切片看起来简单但其实很有讲究。固定长度切片每块 500 字简单粗暴但可能把一句话拦腰截断。语义切片按照段落、章节、或者语义完整性来切。比如用langchain的RecursiveCharacterTextSplitter它会优先在段落边界切实在不行再在句子边界切。重叠Overlap相邻两块之间留 50-100 字的重叠避免切得太碎导致语义断裂。父子块Parent-Child Chunking检索时用小块精准喂给 LLM 时用大块上下文完整。这在实际工程里很常用LangChain 的 ParentDocumentRetriever 就是这样处理。实验表明语义切片 适当重叠通常比固定长度切片效果好。5.3 向量数据库的选择本地测试/小项目Chroma 或 FAISSFacebook 出品的轻量级向量库。生产环境Qdrant性能好支持过滤、Milvus国产企业级、Weaviate功能全。全托管不想自己运维Pinecone、Zilliz CloudMilvus 的云端版。5.4 Retrieval 策略Top-K最简单取相似度最高的 K 个片段。但 K 取多少通常 3-10取决于你的文档长度和模型上下文窗口。MMRMaximal Marginal Relevance最大边际相关性不仅考虑相关性还考虑多样性避免检索到的几个片段内容重复。Hybrid Search向量检索 关键词检索BM25结合。LangChain 和 LlamaIndex 都支持这种混合检索。5.5 Re-ranking重排序检索阶段为了快通常用简单的向量相似度。但这样可能漏掉一些语义相关但向量距离稍远的片段。解决方案检索阶段返回较多候选比如 20 个再用一个更精细的 Re-ranking 模型重新打分选出最相关的 5 个。常用的 Re-ranking 模型BGE Re-rankerBAAI 出品中文友好Cohere Re-ranking API收费效果好Cross-Encoder本地部署用sentence-transformers库6.RAG 的进阶玩法基础的 RAG 已经能解决很多问题但学界和业界还在不断推陈出新。以下是几个值得关注的进阶方向。6.1 Self-RAG让模型自己判断要不要检索传统的 RAG 是不管什么问题先检索再回答。但有些问题其实不需要检索比如你能做什么“讲个笑话”强行检索反而引入噪声。Self-RAG2023 年提出论文Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection的思路是让模型在生成过程中自己判断要不要检索、检索得好不好、答案靠不靠谱。具体做法在训练时让模型学会几个反思 tokenreflection tokens。但这需要特定微调不是普通 RAG 工程师能直接用的比如[Retrieve]决定要不要检索[Relevant]/[Irrelevant]判断检索到的内容是否相关[Supported]/[Unsupported]判断答案是否有检索结果支持这样模型就能按需检索而不是机械地每一步都去查资料。6.2 Corrective RAGCRAG检索结果不好时自动修正有时候检索到的内容不相关或者质量很差但模型还是会根据这些内容生成答案garbage in, garbage out。CRAG2024 年提出论文Corrective Retrieval Augmented Generation的思路是在检索之后、生成之前加一个检索质量评估模块。如果评估结果是检索结果相关就正常生成 如果评估结果是检索结果不相关就从其他来源比如网页搜索补充信息 如果评估结果是部分相关就先做知识精炼把相关部分提取出来再生成。6.3 Graph RAG用知识图谱增强检索传统的 RAG 是向量相似度检索能找到语义相似的片段但找不到逻辑相关的内容。比如你问某某公司的竞争对手有哪些单纯靠向量检索可能找不到答案因为竞争对手这个关系不一定在文本里明说。Graph RAG微软 2024 年提出论文From Local to Global: A Graph RAG Approach to Query-Focused Summarization的思路是先把文档里提到的实体人物、公司、地点、概念和它们之间的关系抽取出来构建一个知识图谱Knowledge Graph。用户提问时不仅做向量检索还在知识图谱上做图遍历找到跟问题相关的所有实体和关系再把这些结构化信息送给 LLM。这种方法特别适合复杂推理任务比如比较 A 公司和 B 公司的优劣势“分析某件事的前因后果”。6.4 Query Expansion查询扩展有时候用户的提问很短、很模糊比如年假两个字直接拿去检索效果可能不好。解决方案查询扩展。用 LLM 把用户的短问题改写成多个更完整、更具体的表述分别检索再合并结果。比如原问题“年假”扩展后“年假怎么申请”“年假最多可以累积多少天”“年假和调休有什么区别”这样能显著提高召回率。LangChain 里有现成的MultiQueryRetriever就是干这个的。7.RAG 的局限性和坑RAG 不是万能药。在实际落地时你会遇到各种坑。7.1 检索不到知识库里没有如果知识库里根本没有跟用户问题相关的内容RAG 也只能巧妇难为无米之炊。解决方案扩充知识库把更多文档加进去接一个兜底方案比如网页搜索让模型诚实地说我不知道而不是瞎编7.2 检索到了但答非所问有时候检索到的片段字面相似但语义不相关。比如用户问苹果好吃吗检索到了苹果公司发布了新款 iPhone——字面都有苹果但完全不是一回事。解决方案用更好的 Embedding 模型加 Re-ranking 步骤在提示词简单回答大多数情况下RAG 更合适。维度RAGFine-tuning适用场景知识密集型任务需要查阅大量文档改变模型行为、风格、格式和任务偏好但不适合承载高准确事实知识成本低不需要重新训练模型高需要 GPU、数据、时间更新频率实时更新改文档就行慢需要重新训练效果答案相对准确、可追溯优化回答方式不适合存储事实知识可解释性高能告诉用户答案来自哪份文档低模型黑盒实际落地时的建议如果你的目标是让 AI 能回答关于你们公司/产品/业务的问题用 RAG。如果你的目标是让 AI 的回答风格更符合你们的品牌调性可以考虑 Fine-tuning或者用 Prompt Engineering。最好的方案是两者结合用 RAG 保证准确性用 Fine-tuning或者精心设计的 Prompt保证风格。9.实战用 LangChain Chroma 搭一个最简 RAG光说不练假把式。这一节我带你用 LangChain Chroma搭一个最简化版的 RAG。9.1 环境准备pip install langchain langchain-community langchain-openai chromadb tiktoken你需要有 OpenAI API Key或者本地部署的 LLM。9.2 代码不到 30 行import os from pathlib import Path from langchain_community.document_loaders import TextLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_chroma import Chroma from langchain_core.prompts import ChatPromptTemplate from langchain.chains.combine_documents import create_stuff_documents_chain from langchain.chains import create_retrieval_chain # 0. 检查 OpenAI API Key if not os.getenv(OPENAI_API_KEY): raise RuntimeError(请先设置环境变量 OPENAI_API_KEY) # 1. 加载文档 file_path Path(employee_handbook.txt) if not file_path.exists(): raise FileNotFoundError(未找到 employee_handbook.txt请先在当前目录放入该文件) loader TextLoader(str(file_path), encodingutf-8) documents loader.load() # 2. 文档切片 text_splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) texts text_splitter.split_documents(documents) # 3. 向量化 存入 Chroma embeddings OpenAIEmbeddings(modeltext-embedding-3-small) vectorstore Chroma.from_documents(documentstexts, embeddingembeddings) # 4. 构建检索器 retriever vectorstore.as_retriever(search_kwargs{k: 3}) # 5. 构建 Prompt prompt ChatPromptTemplate.from_messages([ (system, 你是一个严谨的公司制度问答助手。 请只根据下面的参考资料回答问题。 如果参考资料中没有答案请直接说资料中没有找到相关信息。/n/n 参考资料/n{context}), (human, {input})]) # 6. 构建 RAG 链 llm ChatOpenAI(modelgpt-4o-mini, temperature0) combine_docs_chain create_stuff_documents_chain(llmllm, promptprompt) qa_chain create_retrieval_chain(retrieverretriever, combine_docs_chaincombine_docs_chain) # 7. 提问 result qa_chain.invoke({input: 年假怎么算}) print(result[answer])就这几十行代码你就搭起了一个公司制度问答机器人的雏形。9.3 跑起来需要什么文档你的知识库PDF、Word、TXT 都行LangChain 支持各种 Loader。OpenAI API Key或者本地 LLM比如用langchain.llms.Ollama调用本地部署的 Llama 3。一点 Python 基础能改改代码、处理报错。10.RAG 的评估和监控做完 RAG 系统你怎么知道它效果好不好10.1 检索阶段的指标RecallK前 K 个检索结果里有多少是相关的理想情况100%PrecisionK前 K 个检索结果里有多少是真的 relevantMRRMean Reciprocal Rank第一个相关结果出现在第几位10.2 生成阶段的指标Answer Relevance答案相关性生成的答案真的回答了用户的问题吗Faithfulness忠实度答案是否忠于检索到的参考资料有没有编造Groundedness接地性比 Faithfulness 更细粒度——答案里的每一个具体陈述都能在检索到的文档里找到对应依据。因为它是逐句可溯源。实际评估时更难作假、更有诊断价值。Context Precision / Recall知识库中应该被找出的关键信息是否真的被检索出来10.3 自动化评估工具手动评估太累了业界有一些自动化工具RAGASRAGAS: Automated Evaluation of Retrieval Augmented Generation2023 年论文专门评估 RAG 系统的框架提供上述各种指标。LangSmithLangChain 官方出的评估 监控平台能追踪每一次 RAG 的完整链路检索了什么、生成了什么、用了多少 token。DeepEval类似 RAGAS但支持更多类型的 LLM 应用评估。11.业界案例RAG 不是学术界的玩具它已经在很多真实产品中落地了。11.1 客服机器人阿里小蜜淘宝的客服机器人背后就用到了 RAG或者说类似 RAG 的技术。当用户问我的订单为什么还没发货系统会去订单数据库里查再把结果送给 LLM 生成回复。京东 JIMI类似结合了商品知识库 订单知识库。11.2 企业知识库助手Notion AI你在 Notion 里问我之前写的那篇关于 XX 的文档在哪它背后就是 RAG——去你的 Notion 页面里检索再回答。Confluence RAG很多公司把 Confluence企业内部 Wiki接上 RAG员工可以直接问我们团队的 OKR 是什么“上个季度的复盘会说了什么”。11.3 代码助手GitHub Copilot虽然主要用的是代码补全模型但在处理这个函数的文档在哪这个 API 怎么用这类问题时也会用到类似 RAG 的检索机制。Sourcegraph Cody明确用了 RAG去你的代码库里检索相关代码片段再生成建议。12.RAG 的未来在哪里RAG 技术还在快速演进。以下是几个值得关注的方向。12.1 从检索到理解更智能的检索现在的 RAG 大多是向量相似度检索将来可能会出现理解式检索——不是简单找相似而是真正理解用户问题的意图然后去知识库里找能回答这个问题的内容。这可能需要更强大的 Reasoning推理能力比如让 LLM 在检索之前先做问题理解和查询规划。12.2 多模态 RAG现在的 RAG 大多处理纯文本。但现实世界的知识不只是文字——还有图片、表格、视频。多模态 RAG 的目标是用户问一个问题系统能去图片里找答案比如这个零件的尺寸是多少“去表格里找答案比如去年 Q3 的营收是多少”去视频里找答案比如这个瑜伽动作的标准姿势是什么。12.3 Agent RAG让 AI 主动决定要不要查资料现在的 RAG 是被动的——用户问了才去检索。将来的 RAG 可能是主动的——AI Agent 在解决问题的过程中自己判断我需要查一下这个知识点然后主动去检索甚至多次检索、迭代优化。这其实就是 Agentic RAG 的思路把 RAG 嵌进 Agent 的思考-行动循环里让 Agent 能自主地使用检索工具。RAG检索增强生成的核心思想很简单不让 AI 凭记忆回答而是先查资料再回答。它的价值在于减少幻觉答案有据可查不是模型编的。知识可更新不用重新训练模型改文档就行。可追溯能告诉用户这个答案来自哪里。成本低不需要 Fine-tuning不需要海量算力。但 RAG 也不是万能的它有局限性检索不到、检索不准、成本问题需要结合具体场景来权衡。对于大多数需要 AI 回答专业知识的场景RAG 都是首选方案。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2026 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《AI大模型入门进阶学习资源包》下方扫码获取~① 全套AI大模型应用开发视频教程包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点② 大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通③ 大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。④ AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。⑤ 大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。⑥ 大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。以上资料如何领取为什么大家都在学大模型最近科技巨头英特尔宣布裁员2万人传统岗位不断缩减但AI相关技术岗疯狂扩招有3-5年经验大厂薪资就能给到50K*20薪不出1年“有AI项目经验”将成为投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。以上全套大模型资料如何领取