初识 RAG:让 AI 学会“开卷考试“

张开发
2026/4/11 18:00:39 15 分钟阅读

分享文章

初识 RAG:让 AI 学会“开卷考试“
导读 你是否遇到过 ChatGPT 一本正经地胡说八道或者发现它对去年发生的事情一无所知本文将带你认识 RAG——一项让 AI 既能博学又能查资料的核心技术零基础友好附代码实战。一、大模型的阿喀琉斯之踵在使用 ChatGPT、DeepSeek 这类大语言模型LLM时你可能遇到过这两种让人抓狂的情况场景一自信地胡说八道你问“2025 年诺贝尔物理学奖得主是谁”AI 答编造一个听起来很合理的名字……场景二对新知识一问三不知你问“我们公司最新的产品手册里第三章讲的是什么”AI 答“对不起我没有相关信息……”这两个问题的根源是一样的——大模型的知识是冻结的。大模型的两个痛点LLM 在训练完成后其内部参数“记忆”就被固定下来了。它❌ 不知道训练数据截止日期之后发生的事知识时效性问题❌ 不了解你的私域数据企业内部文档、个人知识库等❌ 有时会幻觉——用错误信息填补知识空白那么如何破解这个困局答案就是 RAG。二、什么是 RAGRAG全称 Retrieval-Augmented Generation检索增强生成是目前 AI 应用领域最火热的技术范式之一。用一句话来概括它的精髓 RAG 就是让 LLM 学会了开卷考试——它既能利用训练时学到的通识知识也能在回答时临时翻阅指定的外部资料。2.1 两种知识一个系统理解 RAG首先要理解两种知识的概念知识类型存储位置特点类比参数化知识模型权重参数中固化、模糊、有截止日期你脑子里记住的知识非参数化知识外部知识库精准、可实时更新你手边的参考书RAG 的核心价值就是在生成答案之前先通过检索机制从外部知识库动态捞取最相关的参考资料再交给 LLM 综合作答。两种知识对比动图动图参数化知识模型内部vs 非参数化知识外部知识库的核心差异2.2 RAG 的工作流程RAG 系统的运作分为两个核心阶段检索阶段 与 生成阶段。RAG 核心工作流程动图动图完整 RAG Pipeline——从文档入库到最终生成答案阶段一知识入库索引构建在用户提问之前系统需要先把所有参考书处理好、建好索引1. 文档解析将 PDF、Word、网页等格式的文档切割成小片段Chunk2. 向量化调用 Embedding 模型将每个文本片段转化为一串数字向量这串数字能代表文本的语义含义3. 存入向量库将所有向量存入专门的向量数据库如 Chroma、Faiss、Milvus阶段二检索 生成推理用户提问时实时执行1. 问题向量化将用户的问题同样转化为向量2. 相似度检索在向量库中找出与问题向量最近的若干个文档片段Top-K 召回3. 上下文整合将检索到的片段 用户原始问题拼成一个完整的 Prompt4. LLM 生成答案将这个 Prompt 交给大模型大模型基于提供的上下文给出有据可查的回答三、为什么选 RAG而不是微调面对大模型不知道我的私域数据这个问题技术上有几种解法。我们来理清它们的关系技术选型象限图 技术选型口诀先 Prompt → 再 RAG → 最后微调成本逐级递增改动逐级加深。横轴代表对模型本身的修改程度纵轴代表对输入信息上下文的增强程度。在实际选型时应遵循最小改动原则按以下顺序依次尝试第一步提示词工程Prompt Engineering适用场景模型已经具备相关知识只是回答不够好做法精心设计提问方式、给出示例、明确格式要求成本极低不需要改动任何代码或模型局限模型真的不知道时再好的提示词也无济于事第二步RAG检索增强生成✅ 推荐优先选择适用场景模型缺乏特定领域知识或实时信息做法外挂知识库让模型参考外部资料回答成本中等需要搭建检索管道和向量库但不修改模型参数优势知识可实时更新无需重新训练模型答案有据可查可追溯来源减少幻觉成本远低于微调第三步微调Fine-tuning适用场景需要改变模型的行为方式而非知识储备做法用特定数据集重新训练部分或全部模型参数成本极高需要高质量数据集、大量 GPU 算力和专业知识什么时候才真正需要微调让模型严格遵循某种特殊输出格式模仿特定人物的写作风格将极其复杂的指令内化进模型权重在某个极度垂直的专业领域提升推理能力一句话总结大多数企业级 AI 应用RAG 是性价比最高的选择。四、代码实战用 LangChain 搭建你的第一个 RAG文档切割 Chunking 动图动图长文档被切割成带 overlap 的小片段黄色高亮区域为相邻块的重叠部分理论说了这么多现在来动手实现一个最简单的 RAG Demo。我们使用 LangChain 框架它是目前最流行的 LLM 应用开发框架极大地简化了 RAG 的搭建流程。4.1 环境准备pip install langchain langchain-community langchain-openai chromadb4.2 准备知识库文档假设我们有一个关于公司产品的文本文件knowledge.txt# 关于 SuperBot 3000 产品手册 ## 第一章产品简介 SuperBot 3000 是一款智能客服机器人支持 7x24 小时全天候服务 可同时接入微信、钉钉、飞书等平台。 ## 第二章核心功能 - 多轮对话支持上下文感知的多轮对话 - 知识库管理支持导入 PDF、Word、Excel 等格式文档 - 数据统计提供详细的会话质量分析报表 ## 第三章定价方案 基础版每月 299 元支持 3 个坐席 专业版每月 999 元支持 20 个坐席含高级数据分析 企业版定制报价无限坐席含专属技术支持4.3 完整 RAG 代码# simple_rag.py from langchain_community.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_community.vectorstores import Chroma from langchain.chains import RetrievalQA # 第一步加载文档 print( 正在加载知识库文档...) loader TextLoader(knowledge.txt, encodingutf-8) documents loader.load() # 第二步切割文档 # 将长文档切割成小片段Chunk便于精准检索 text_splitter RecursiveCharacterTextSplitter( chunk_size200, # 每个片段最多 200 个字符 chunk_overlap20 # 相邻片段重叠 20 字符避免语义断裂 ) chunks text_splitter.split_documents(documents) print(f✅ 文档切割完成共 {len(chunks)} 个片段) # 第三步向量化并存入向量库 print( 正在生成向量索引...) embedding_model OpenAIEmbeddings() # 可替换为本地 Embedding 模型 vectorstore Chroma.from_documents( documentschunks, embeddingembedding_model, persist_directory./chroma_db # 向量库持久化路径 ) print(✅ 向量索引构建完成) # 第四步构建 RAG 检索链 llm ChatOpenAI(modelgpt-4o-mini, temperature0) # RetrievalQA 自动完成检索 → 拼接 Prompt → 调用 LLM → 返回答案 qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, # stuff 策略直接将检索结果塞入 Prompt retrievervectorstore.as_retriever( search_kwargs{k: 3} # 检索最相关的 3 个片段 ), return_source_documentsTrue # 同时返回参考来源便于溯源 ) # 第五步提问 questions [ SuperBot 3000 的专业版每月多少钱, 这个产品支持哪些平台接入, ] for question in questions: print(f/n❓ 问题{question}) result qa_chain.invoke({query: question}) print(f 答案{result[result]}) print(f 参考来源{result[source_documents][0].page_content[:50]}...)4.4 运行结果 正在加载知识库文档... ✅ 文档切割完成共 8 个片段 正在生成向量索引... ✅ 向量索引构建完成 ❓ 问题SuperBot 3000 的专业版每月多少钱 答案SuperBot 3000 专业版每月 999 元支持 20 个坐席并含高级数据分析功能。 参考来源专业版每月 999 元支持 20 个坐席含高级数据分析... ❓ 问题这个产品支持哪些平台接入 答案SuperBot 3000 支持接入微信、钉钉、飞书等平台。 参考来源可同时接入微信、钉钉、飞书等平台...向量相似度检索动图动图查询向量Q在语义空间中飞入系统找到距离最近的 3 个文档片段Top-3 召回关键点说明步骤对应 RAG 原理核心作用TextLoader知识获取读取原始文档RecursiveCharacterTextSplitter文档切割将长文本切成可检索的小片段OpenAIEmbeddingsChroma向量化 存储建立语义检索索引as_retriever(k3)相似度检索召回最相关的 Top-3 片段RetrievalQA生成整合上下文让 LLM 作答五、总结与展望RAG 进阶路线图学到这里你已经掌握了 RAG 的核心概念和基础实现。让我们回顾一下今天的重点是什么RAG 检索Retrieval 增强Augmented 生成Generation通过外部知识库弥补 LLM 的知识局限为什么用相比微调RAG 成本低、可更新、答案可溯源是企业 AI 应用的首选方案怎么做索引构建文档切割 → 向量化 → 存库 检索生成相似度召回 → 拼接 Prompt → LLM 作答当然本文展示的只是一个最基础的 Naive RAG。在真实的生产环境中还有大量值得深入探索的进阶话题进阶方向关键技术解决的问题高级 RAG查询改写、混合检索、重排序Rerank提升检索召回的精准度模块化 RAG自定义检索策略、多路召回融合应对复杂业务场景Agentic RAG工具调用、多步推理、自我反思处理需要多轮推理的复杂问题如果这篇文章对你有帮助欢迎点赞 转发支持下一篇我们将深入讲解 文档切割策略——为什么切割方式会直接影响 RAG 的最终效果以及如何选择最适合你场景的切割方案。这里给大家精心整理了一份全面的AI大模型学习资源包括AI大模型全套学习路线图从入门到实战、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等资料免费分享扫码免费领取全部内容1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 2026行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。7. 资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容

更多文章