[{"data":1,"prerenderedAt":343},["ShallowReactive",2],{"article-agent\u002Frag":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"body":13,"_type":337,"_id":338,"_source":339,"_file":340,"_stem":341,"_extension":342},"\u002Farticles\u002Fagent\u002Frag","agent",false,"","RAG 入门：用检索增强生成解决上下文限制与幻觉","从分片、索引、Embedding、召回、重排到生成，通俗讲清 RAG 的完整工作流与核心价值，适合理解文档问答系统的基础原理。","2026-03-21",[12],"Agent开发",{"type":14,"children":15,"toc":321},"root",[16,24,37,44,49,74,80,85,92,103,108,121,133,159,164,170,182,187,193,198,203,209,214,219,225,230,235,241,295,301],{"type":17,"tag":18,"props":19,"children":20},"element","p",{},[21],{"type":22,"value":23},"text","用大模型处理大量文件问答时，常遇到两个痛点：要么文件太多超出上下文窗口，要么模型瞎编答案（幻觉）",{"type":17,"tag":18,"props":25,"children":26},{},[27,29,35],{"type":22,"value":28},"而RAG（检索增强生成，Retrieval-Augmented Generation）就是解决这两个问题的“神器”。它的核心逻辑特别简单——",{"type":17,"tag":30,"props":31,"children":32},"strong",{},[33],{"type":22,"value":34},"不让大模型“瞎猜”，只给它“精准的参考资料”再答题",{"type":22,"value":36},"。",{"type":17,"tag":38,"props":39,"children":41},"h2",{"id":40},"一核心对比正常问答-vs-rag问答",[42],{"type":22,"value":43},"一、核心对比：正常问答 vs RAG问答",{"type":17,"tag":18,"props":45,"children":46},{},[47],{"type":22,"value":48},"先通过两个场景，快速get RAG的价值：",{"type":17,"tag":50,"props":51,"children":52},"ul",{},[53,64],{"type":17,"tag":54,"props":55,"children":56},"li",{},[57,62],{"type":17,"tag":30,"props":58,"children":59},{},[60],{"type":22,"value":61},"正常大模型问答",{"type":22,"value":63},"：把所有文件 + 问题直接丢给大模型。 缺点：文件多了会超出上下文窗口（装不下），模型记不住细节就容易“编答案”，而且旧文件的知识无法及时更新。",{"type":17,"tag":54,"props":65,"children":66},{},[67,72],{"type":17,"tag":30,"props":68,"children":69},{},[70],{"type":22,"value":71},"RAG问答",{"type":22,"value":73},"：先筛选出和问题相关的文件片段，再把“相关片段 + 问题”交给大模型。 优点：精准投喂核心信息，既解决上下文超限问题，又大幅降低幻觉，还能通过更新文件实现知识实时迭代。",{"type":17,"tag":38,"props":75,"children":77},{"id":76},"二rag关键名词拆解通俗版",[78],{"type":22,"value":79},"二、RAG关键名词拆解（通俗版）",{"type":17,"tag":18,"props":81,"children":82},{},[83],{"type":22,"value":84},"RAG的核心逻辑靠“5个关键步骤”落地，先把每个步骤的核心概念讲明白：",{"type":17,"tag":86,"props":87,"children":89},"h3",{"id":88},"_1-分片给文件分块既装得下又不碎",[90],{"type":22,"value":91},"1. 分片：给文件“分块”，既装得下又不碎",{"type":17,"tag":18,"props":93,"children":94},{},[95,97,102],{"type":22,"value":96},"简单说就是把大文件拆成小片段，拆分依据可以是",{"type":17,"tag":30,"props":98,"children":99},{},[100],{"type":22,"value":101},"长度、章节、页码",{"type":22,"value":36},{"type":17,"tag":18,"props":104,"children":105},{},[106],{"type":22,"value":107},"核心目的：① 适配大模型的上下文窗口（比如把10万字文档拆成500字\u002F段，避免超出模型上限）；② 保证片段语义完整（不能把一个完整句子从中间切开，否则后续检索会出错）。",{"type":17,"tag":86,"props":109,"children":111},{"id":110},"_2-索引给片段建字典方便快速查找",[112,114,119],{"type":22,"value":113},"2. 索引：给片段",{"type":17,"tag":30,"props":115,"children":116},{},[117],{"type":22,"value":118},"建字典",{"type":22,"value":120},"，方便快速查找",{"type":17,"tag":18,"props":122,"children":123},{},[124,126,131],{"type":22,"value":125},"这是RAG能",{"type":17,"tag":30,"props":127,"children":128},{},[129],{"type":22,"value":130},"快速找相关片段",{"type":22,"value":132},"的核心步骤，过程很简单：",{"type":17,"tag":18,"props":134,"children":135},{},[136,138,143,145,150,152,157],{"type":22,"value":137},"通过embedding（嵌入）技术，把每个拆分后的文本片段转换成计算机能理解的“",{"type":17,"tag":30,"props":139,"children":140},{},[141],{"type":22,"value":142},"向量",{"type":22,"value":144},"，再把",{"type":17,"tag":30,"props":146,"children":147},{},[148],{"type":22,"value":149},"原始片段文本 + 对应向量",{"type":22,"value":151},"一起存到专门的",{"type":17,"tag":30,"props":153,"children":154},{},[155],{"type":22,"value":156},"向量数据库",{"type":22,"value":158},"里。",{"type":17,"tag":18,"props":160,"children":161},{},[162],{"type":22,"value":163},"类比：就像给书籍建索引目录，后续找相关内容不用逐页翻，直接查索引就行。",{"type":17,"tag":86,"props":165,"children":167},{"id":166},"_3-embedding文本的数字身份证",[168],{"type":22,"value":169},"3. Embedding：文本的“数字身份证”",{"type":17,"tag":18,"props":171,"children":172},{},[173,175,180],{"type":22,"value":174},"简单说就是",{"type":17,"tag":30,"props":176,"children":177},{},[178],{"type":22,"value":179},"把文本转换成向量（一串数字）",{"type":22,"value":181}," 的过程。",{"type":17,"tag":18,"props":183,"children":184},{},[185],{"type":22,"value":186},"核心逻辑：语义越相近的文本，转换成的向量越“像”（数字差异越小）。比如“猫喜欢吃鱼”和“猫咪爱吃鱼”的向量会非常接近。",{"type":17,"tag":86,"props":188,"children":190},{"id":189},"_4-召回根据数字相似度找候选片段",[191],{"type":22,"value":192},"4. 召回：根据“数字相似度”找候选片段",{"type":17,"tag":18,"props":194,"children":195},{},[196],{"type":22,"value":197},"先把用户的问题也转换成向量，然后在向量数据库里，通过“向量相似性计算”（比如余弦相似度），快速找出和问题最相关的10个左右片段。",{"type":17,"tag":18,"props":199,"children":200},{},[201],{"type":22,"value":202},"这里有个小细节：召回会分“粗召回”和“精召回”——粗召回负责从海量片段里快速筛选出20个左右候选（追求速度），精召回再初步过滤掉不相关的，最终留下10个左右核心候选。",{"type":17,"tag":86,"props":204,"children":206},{"id":205},"_5-重排给候选片段排优先级",[207],{"type":22,"value":208},"5. 重排：给候选片段“排优先级”",{"type":17,"tag":18,"props":210,"children":211},{},[212],{"type":22,"value":213},"在召回的10个片段里，用更精细的策略（比如更精准的语义匹配、关键词权重、片段在原文的位置等）重新排序，最终筛选出3个最相关的核心片段。",{"type":17,"tag":18,"props":215,"children":216},{},[217],{"type":22,"value":218},"核心目的：提升传给大模型的片段质量，减少“噪音”（无关信息），让大模型答题更精准。",{"type":17,"tag":86,"props":220,"children":222},{"id":221},"_6-生成给大模型精准投喂再答题",[223],{"type":22,"value":224},"6. 生成：给大模型“精准投喂”再答题",{"type":17,"tag":18,"props":226,"children":227},{},[228],{"type":22,"value":229},"这是RAG的最后一步，也是落地的关键：把重排后的3个核心片段 + 原始问题，组合成一个清晰的提示词（Prompt），再传给大模型。",{"type":17,"tag":18,"props":231,"children":232},{},[233],{"type":22,"value":234},"示例提示词模板： “以下是与问题相关的参考资料：{重排后的3个片段}。请严格根据这些参考资料回答问题，不要编造信息。如果资料中没有相关答案，请直接回复‘暂无相关信息’。问题：{用户的原始问题}”",{"type":17,"tag":38,"props":236,"children":238},{"id":237},"三rag完整工作流",[239],{"type":22,"value":240},"三、RAG完整工作流",{"type":17,"tag":242,"props":243,"children":244},"ol",{},[245,255,265,275,285],{"type":17,"tag":54,"props":246,"children":247},{},[248,253],{"type":17,"tag":30,"props":249,"children":250},{},[251],{"type":22,"value":252},"第一步：分片",{"type":22,"value":254},"：把10万字的论文\u002F文档，按“500字\u002F段+段落边界”拆成小片段，保证每个片段语义完整。",{"type":17,"tag":54,"props":256,"children":257},{},[258,263],{"type":17,"tag":30,"props":259,"children":260},{},[261],{"type":22,"value":262},"第二步：索引",{"type":22,"value":264},"：用embedding工具把每个片段转成向量，和原始片段一起存到向量数据库（比如Chroma、FAISS），建好“检索索引”。",{"type":17,"tag":54,"props":266,"children":267},{},[268,273],{"type":17,"tag":30,"props":269,"children":270},{},[271],{"type":22,"value":272},"第三步：召回",{"type":22,"value":274},"：用户问“这篇论文的核心创新点是什么？”，先把这个问题转成向量，在向量数据库里通过相似性计算，粗召回10个相关片段。",{"type":17,"tag":54,"props":276,"children":277},{},[278,283],{"type":17,"tag":30,"props":279,"children":280},{},[281],{"type":22,"value":282},"第四步：重排",{"type":22,"value":284},"：用更精细的策略给10个片段排序，筛选出3个最贴近“核心创新点”的片段（比如包含“创新”“提出”等关键词的片段）。",{"type":17,"tag":54,"props":286,"children":287},{},[288,293],{"type":17,"tag":30,"props":289,"children":290},{},[291],{"type":22,"value":292},"第五步：生成",{"type":22,"value":294},"：把这3个片段和用户问题组合成提示词，传给大模型，大模型基于这些精准资料，生成不跑偏、不编造的答案。",{"type":17,"tag":38,"props":296,"children":298},{"id":297},"四总结rag的核心价值与适用场景",[299],{"type":22,"value":300},"四、总结：RAG的核心价值与适用场景",{"type":17,"tag":242,"props":302,"children":303},{},[304,316],{"type":17,"tag":54,"props":305,"children":306},{},[307,309,314],{"type":22,"value":308},"核心价值：",{"type":17,"tag":30,"props":310,"children":311},{},[312],{"type":22,"value":313},"让大模型“有据可依”",{"type":22,"value":315}," ，解决上下文超限、知识过时、幻觉三大痛点，不用重新训练大模型，就能快速适配特定领域的文档问答（比如企业知识库、论文库、行业手册等）。",{"type":17,"tag":54,"props":317,"children":318},{},[319],{"type":22,"value":320},"适用场景：企业内部知识库问答、论文\u002F文献检索问答、客服智能回复（基于产品手册）、法律\u002F医疗文档咨询等。",{"title":7,"searchDepth":322,"depth":322,"links":323},2,[324,325,335,336],{"id":40,"depth":322,"text":43},{"id":76,"depth":322,"text":79,"children":326},[327,329,331,332,333,334],{"id":88,"depth":328,"text":91},3,{"id":110,"depth":328,"text":330},"2. 索引：给片段建字典，方便快速查找",{"id":166,"depth":328,"text":169},{"id":189,"depth":328,"text":192},{"id":205,"depth":328,"text":208},{"id":221,"depth":328,"text":224},{"id":237,"depth":322,"text":240},{"id":297,"depth":322,"text":300},"markdown","content:articles:agent:RAG.md","content","articles\u002Fagent\u002FRAG.md","articles\u002Fagent\u002FRAG","md",1779811689534]