ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【大模型RAG生成式AI开发实战】《大模型RAG生成式AI开发实战》_6.[第1章 RAG基础概念] 5分钟搭建你的第一个RAG应用:从零到一的实战

【大模型RAG生成式AI开发实战】《大模型RAG生成式AI开发实战》_6.[第1章 RAG基础概念] 5分钟搭建你的第一个RAG应用:从零到一的实战 别再对着空白的IDE发呆了5分钟后你将拥有一个能读懂你私有知识库、回答得头头是道的AI助手。本文不灌鸡汤、不堆概念直接带你从“这是啥”到“跑起来”手把手完成你的第一个RAG应用彻底告别“调包侠”的迷茫与自我怀疑全文将围绕RAG的三大核心环节——知识入库、向量检索、增强生成展开用最小化的知识集和最精简的代码帮你绕过新手常见的环境地狱、切片翻车、检索玄学三大天坑。读完本文你不仅能跑通第一个RAG应用还能建立起对RAG工程化的正确直觉。5分钟搭建你的第一个RAG应用破除迷雾RAG核心原理与最小知识集轻装上阵开发环境极简搭建指南知识入库文档切片与向量化实战检索艺术从暴力搜索到精准召回生成闭环组装完整的RAG链路破除迷雾RAG核心原理与最小知识集轻装上阵开发环境极简搭建指南知识入库文档切片与向量化实战检索艺术从“暴力搜索”到“精准召回”生成闭环组装完整的RAG链路嗨大家好呀我是你的老朋友精通代码大仙。接下来我们一起学习 《大模型RAG生成式AI开发实战》6.[第1章 RAG基础概念] 5分钟搭建你的第一个RAG应用从零到一的实战俗话说得好“饭要一口一口吃代码要一行一行敲”。可在RAG这条赛道上太多同学还没搞明白“检索”和“生成”是怎么握手言和的就急着去研究什么混合检索、重排序、Agent化结果环境配了三天Demo还是没跑起来。你是不是也这样收藏夹里躺了50篇RAG论文GitHub Star了20个仓库连LangChain的logo都盘出包浆了却连一个能回答“咱们公司年假到底有几天”的机器人都没弄出来。别慌这种“知识丰富但动手能力为零”的焦虑我太懂了。今天这篇文章就是来治这个病的。破除迷雾RAG核心原理与最小知识集你是不是也这样打开技术社区搜“RAG入门”扑面而来的是“稀疏向量”、“稠密向量”、“查询重写”、“混合检索”这些黑话。还没开始学呢血压先上来了。更离谱的是有同学上来就啃Transformer论文啃完问自己我不是要做应用吗怎么开始复习数学了这就是新手最容易踩的第一个坑概念恐惧症。你把RAG想成了什么洪水猛兽其实它骨子里特别朴素。说白了RAG就是一场“开卷考试”。大模型是那个聪明的考生但它有个致命弱点闭卷。它只学过训练数据里的知识对公司内部文档、昨天刚发的通知、你私人的笔记它一概不知。而RAG做的事情很简单在考试回答问题之前先帮考生把相关的教科书你的私有文档翻出来摆在课桌上下文窗口上。考生看着书答题自然就不会瞎编了。咱们把这事儿拆成四步你品品第一你把公司制度、产品手册这些文档塞进去切成小段转成向量存进向量库。第二用户问“加班费怎么算”这个问题也被转成向量。第三去向量库里找跟这个问题最像的几个文档片段。第四把这些片段连同问题一起打包发给大模型让它照着原文回答。就这四步没了。什么微调、什么强化学习、什么LoRA在基础RAG里通通不需要。你不需要重新训练大模型你只需要告诉它“喂答案就在这几段话里你老实组织语言说出来就行。”有位粉丝小王之前非要拿公司10万条客服记录去微调ChatGLM标注团队都累趴了效果还一般甚至出现了“模型学会了客服语气但答错了产品参数”的诡异现象。我让他改成RAG直接把FAQ文档切了塞进去半天就上线了准确率反而更高。你看方向错了努力就是内卷方向对了五分钟都是奢侈。所以你的最小知识集是什么记住三个词切片、向量、上下文。剩下的都是在这上面的锦上添花。当你觉得被各种新概念绕晕的时候回到这三个词你就不会迷路。用户提问Embedding模型向量数据库检索Top-K私有文档文本切片Embedding模型Prompt模板组装大模型生成答案输出带引用的回答小结RAG不是让大模型重新学习而是给它配了一本实时更新的教科书。先理解“开卷考试”的本质后面的代码才会有灵魂。轻装上阵开发环境极简搭建指南好原理明白了撸起袖子就是干。结果第一步就给你当头一棒CUDA driver version is insufficient、torch.cuda.is_out_of_memory、DLL load failed……熟悉吗太熟悉了。多少英雄汉倒在了环境配置这个新手村BOSS面前。我见过最离谱的案例一位兄弟为了本地跑一个7B大模型显卡是GTX 1650显存4G。他愣是在某宝上研究了三天怎么升级驱动又在各种论坛上泡了两天最后得出结论——“RAG这玩意儿对硬件要求太高了我不配。”停谁跟你说RAG一定要本地跑大模型的这是第二个致命误区把“RAG”和“本地部署大模型”强行绑定。对于新手来说本地跑大模型那是后期副本不是新手任务。你的第一个RAG应用核心目标是验证数据流是否跑通是理解“检索生成”是怎么协作的。这时候调用云端API才是性价比最高的选择。现在国内国外一堆OpenAI兼容的API比如智谱AI、通义千问、Moonshot甚至直接用OpenAI的API。本地你只需要一个能跑Python的电脑对哪怕是你写Java用的那台办公本都绰绰有余。你需要装的东西极简pipinstalllangchain langchain-openai chromadb sentence-transformers就这四件套。LangChain负责串流程OpenAI接口负责调大模型ChromaDB负责当向量库轻量、本地、零配置sentence-transformers负责把文本转成向量。没有Docker没有K8s没有CUDA陷阱。至于Embedding模型新手别去碰什么庞大的GPT模型直接用轻量级的text2vec-base-chinese或者BAAI/bge-small-zh都足够你玩明白原理。它们甚至不需要GPUCPU跑起来嗖嗖的。你就算在星巴克用轻薄本也能丝滑运行。目录结构也清爽点my_first_rag/ data/ # 放你的私有文档PDF、TXT都行 vector_db/ # ChromaDB自动生成的存储不用你管 main.py # 主流程咱们的主战场别搞什么微服务架构、负载均衡那是生产环境该考虑的事。你现在的任务是在main.py里写出一个能跑的脚本打印出第一句基于你私有文档的回答。这就够了。哪怕代码写得丑一点没关系先让马车跑起来再去想怎么镶金边。记住这个心法环境搭建服从“快速验证”原则任何让你卡壳超过半小时的环境问题都应该考虑换一种更轻量的方案。咱们是来学RAG的不是来修电脑的。小结新手的第一敌人不是算法而是环境。用API代替本地大模型用轻量Embedding代替庞然大物先跑通数据流再去追求私有化部署。知识入库文档切片与向量化实战环境搞定了文档也准备好了。然后你啪的一下把整本PDF扔进了向量库自信满满地问“我们公司年假有几天”结果检索出来的第一个结果是公司发展史第二个结果是组织架构图第三个结果是财务制度。你要的年假信息藏在第18页的一个表格里死活搜不出来。欢迎来到第三个天坑文档处理翻车现场。很多新手的错误做法堪称简单粗暴用PyPDFLoader把PDF读出来得到一个几百页的字符串然后直接调用Chroma.from_documents(documentsdocs, embeddingembeddings)。这就好比把整本《新华字典》当作一个词条去查向量模型直接懵了“这啥啊这么大一段主题到底是啥”检索的时候它只能凭直觉返回一个跟整本书最像的片段精度能高才怪。还有另一个极端切得太碎。有个同学设置了chunk_size50一句话被切成两半“加班”在前一段“费计算规则”在后一段。向量检索倒是召回了一堆结果但内容都是残肢断臂大模型看了直呼“这题超纲”。正确的姿势是什么是有策略的切片Chunking。咱们用的是RecursiveCharacterTextSplitter这个工具特别懂事它会优先按段落切\n\n段落太长就按句子切\n或。还不够就按空格切最后兜底按字符切。这样切出来的块既不会太大导致主题模糊也不会太小导致语义断裂。对于中文文档chunk_size500左右是个不错的起点大概覆盖1到2个自然段。代码长这样fromlangchain.document_loadersimportPyPDFLoaderfromlangchain.text_splitterimportRecursiveCharacterTextSplitter# 加载文档loaderPyPDFLoader(data/employee_handbook.pdf)docsloader.load()# 关键步骤切片text_splitterRecursiveCharacterTextSplitter(chunk_size500,# 每块大约500字chunk_overlap50,# 块与块之间重叠50字防止断句separators[\n\n,\n,。,,, ,])chunkstext_splitter.split_documents(docs)# 入库vectorstoreChroma.from_documents(documentschunks,embeddingembeddings,persist_directoryvector_db)看到chunk_overlap50了吗这就是魔鬼细节。它能让相邻两块共享一点上下文比如“第三章 考勤制度”这句话如果刚好在边界重叠区能保证它既出现在上一块的末尾也出现在下一块的开头。检索时无论命中哪一块都不会丢失关键的上下文信息。没有这个overlap万一在“加班”和“费”之间切开那场面简直惨不忍睹。至于向量模型新手用sentence-transformers里的text2vec-base-chinese就好。它会把每个chunk转成一组768维的数字向量。语义相近的句子在向量空间里的距离就近。这就是机器能“读懂”你文档的秘诀——不是真读懂是算距离。当你的文档变成一个个浮点数数组静静躺在ChromaDB里的时候你的知识库就有了“可检索”的生命。小结文档入库不是简单的“复制粘贴”而是精心的“分装打包”。合理的切片策略和重叠设计是检索精度的第一道生命线。检索艺术从“暴力搜索”到“精准召回”文档美美地躺在向量库里了你迫不及待地敲下查询docsvectorstore.similarity_search(加班费怎么算,k3)结果搜出来的三条一条讲餐补一条讲交通费一条讲年度团建。真正的加班工资计算条例排在了第8位根本没进前三。你开始怀疑人生是向量模型不行是文档有问题还是RAG本身就是个骗局别慌这是第四个坑默认检索策略太“直男”了。similarity_search就像一个只会按分数排名的考官它只看“谁跟问题的向量最像”完全不管搜出来的内容是不是重复、是不是覆盖了问题的不同侧面。更关键的是k值选多少选3可能漏掉关键信息选20上下文窗口又塞不下大模型直接“失忆”看了后面忘了前面。咱们得给检索加一点“情商”。第一招控制k值。对于大部分FAQ和企业知识库k3到k5是黄金区间。太少了信息不够太多了噪音太大。想象一下你给大模型塞了20段参考资料它跟个健忘症考生似的根本抓不到重点。第二招使用MMRMax Marginal Relevance。这是检索界的“去重多面手”算法。它的逻辑是先从向量库里多抓一些候选比如fetch_k10然后在这10个里面选3个。选的时候不仅看它们跟问题多相关还看它们彼此之间差异有多大。这样就不会出现三条内容几乎一样的结果霸占你的上下文窗口浪费宝贵的token。代码改动极小收益极大# 直男检索容易召回重复内容# docs vectorstore.similarity_search(query, k3)# 高情商检索兼顾相关性与多样性docsvectorstore.max_marginal_relevance_search(query,k3,# 最终要3条fetch_k10# 先抓10条候选再优中选优)第三招学会看分数调试。很多新手从来不看检索召回了什么只看最终生成结果。这是典型的“黑盒调试”纯纯的玄学编程。你得先确保喂给大模型的“食材”是对的才能期待它做出好菜。试试这样docs_with_scoresvectorstore.similarity_search_with_score(query,k5)fordoc,scoreindocs_with_scores:print(f相似度分数:{score:.4f}| 内容:{doc.page_content[:100]}...)如果你发现分数都很低比如超过0.5甚至更高取决于距离度量说明问题跟文档确实不在一个频道这时候你该回去检查切片或者Embedding模型而不是怪大模型不听话。还有个工程小技巧简单的关键词预过滤。如果你知道用户问的一定是“考勤”相关可以在检索前先做个关键词过滤把范围缩小到“考勤”标签下的chunk。这一招对于垂直领域极其好使别嫌它“不AI”工程上管用才是硬道理。小结检索是RAG的咽喉要道。别只用默认的相似度搜索MMR、合适的k值、必要的关键词过滤是你必须攥在手里的三板斧。生成闭环组装完整的RAG链路检索的文档拿到了怎么塞给大模型有同学这样做context\n.join([doc.page_contentfordocindocs])promptf以下是一些文档{context}\n请回答问题{question}然后大模型的回答开始放飞自我引用错了文档编号把不同片段的内容张冠李戴甚至开始编造文档里没有的信息。你气得想砸键盘“我都给你资料了你怎么还胡说”这就是最后一个坑Prompt工程与链式调用的缺失。你以为RAG是“检索结果问题答案”的简单拼接Too young too simple。大模型其实很“机械”它需要清晰的边界感。你给它一堆文字不告诉它“这是参考资料这是用户问题你只能基于参考资料回答”它就会开启“创作模式”开始一本正经地胡说八道。这不能全怪它得怪咱们的Prompt写得太敷衍。咱们得把Prompt写“规矩”fromlangchain.promptsimportPromptTemplate template你是一个严谨的企业知识库助手。请严格基于以下已知信息回答问题不要编造答案。 如果已知信息不足以回答问题请直接回复“根据现有资料无法回答”。 【已知信息】 {context} 【用户问题】 {question} 【回答】promptPromptTemplate(templatetemplate,input_variables[context,question])看到了吗用【】把区块隔离开大模型就不容易犯迷糊。还要加上安全护栏不知道就说不知道这比瞎编强一万倍。在企业场景里宁可让AI说“我不会”也不能让它捏造一个假的报销额度那后果可是要背锅的。接下来是链式组装。LangChain的RetrievalQA就是帮你把“检索-拼接-调用LLM-返回答案”这一系列动作打包好的流水线fromlangchain.chainsimportRetrievalQA qa_chainRetrievalQA.from_chain_type(llmllm,chain_typestuff,# 最直白的方式把所有文档塞进一个Promptretrievervectorstore.as_retriever(search_typemmr,search_kwargs{k:3,fetch_k:10}),return_source_documentsTrue,chain_type_kwargs{prompt:prompt})# 跑起来resultqa_chain.invoke({query:加班费怎么算})print(AI回答,result[result])print(参考文档,result[source_documents])chain_typestuff是什么意思就是“填充”——把检索到的所有chunk直接填充到prompt的{context}里。这是最简单、最透明的模式新手用它就对了。它的好处是你能很清楚地看到到底哪些内容被塞进了上下文调试起来一目了然。等你后面遇到上下文超长的情况再去研究map_reduce或refine这些高级模式。更棒的是我们设置了return_source_documentsTrue这样大模型不仅给出答案还会告诉你它参考了哪几段原文。这对于企业应用来说太重要了可解释性直接拉满。老板问你“这个结论哪来的”你能直接把原文拍在桌上而不是说“AI告诉我的”。当你的终端第一次打印出基于你私有文档的、准确的、有引用来源的回答时那种成就感不亚于当年第一次写出Hello World。你的第一个RAG应用活了。它真的能看懂你的文档真的在基于你的私有知识说话而不是在背训练数据里的过时答案。小结RAG的临门一脚是Prompt工程和链式调用。给大模型清晰的指令边界用RetrievalQA串起完整链路让检索与生成产生化学反应而不是简单拼接。写在最后老弟老妹们咱们今天从零开始把RAG这架飞机的骨架搭起来了。你学会了它“开卷考试”的本质绕过了环境配置的泥潭掌握了文档切片的颗粒度艺术给检索装上了MMR的导航仪最后用一条清晰的Prompt和Chain让大模型老实交代出了答案。这一路走过来你发现没有RAG并不是什么高不可攀的玄学。它是一层窗户纸捅破了里面就是工程化的细节怎么切、怎么搜、怎么拼、怎么问。这些细节不需要你有多少数学功底需要的是你对数据流的敏感和“先跑起来”的工程直觉。我知道现在的AI领域信息爆炸今天出个新模型明天出个新框架后天又出个新术语。看得多了难免会焦虑会觉得自己追不上。但我想告诉你的是万丈高楼平地起任何复杂系统的背后都是由这些最基础、最扎实的模块组成的。你把RAG吃透了后面去学Agent、去学多模态、去学更复杂的编排框架都会事半功倍。编程之路从来不易但每一步成长都算数。别害怕报错报错是代码在跟你对话别害怕文档晦涩你现在的每一点啃下来的硬骨头都会变成未来面对复杂需求时的底气。保持好奇保持动手保持那份“我就不信跑不起来”的轴劲儿。你不仅能成为RAG的高手更能在AI这波浪潮里找到属于自己的那片天地。咱们下回见拜拜关注私信备注“资料代找获取”全网计算机学习资料代找例如:《课程2026 年多模态大模型实战训练营》《课程AI 大模型工程师系统课程 (22 章完整版 持续更新)》《课程AI 大模型系统实战课第四期 (2026 年开课 持续更新)》《课程2026 年 AGI 大模型系统课 23 期》《课程2026 年 AGI 大模型系统课 21 期》《课程AI 大模型实战课 8 期 (2026 年 2 月最新完结版)》《课程AI 大模型系统实战课三期》《课程AI 大模型系统课程 (2026 年 2 月开课 持续更新)》《课程AI 大模型全阶课程 (2025 年 12 月开课 2026 年 6 月结课)》《课程AI 大模型工程师全阶课程 (2025 年 10 月开课 2026 年 4 月结课)》《课程2026 年最新大模型 Agent 开发系统课 (持续更新)》《课程LLM 多模态视觉大模型系统课》《课程大模型 AI 应用开发企业级项目实战课 (2026 年 1 月开课)》《课程大模型智能体线上速成班 V2.0》《课程JavaAI 大模型智能应用开发全阶课》《课程PythonAI 大模型实战视频教程》《书籍软件工程 3.0: 大模型驱动的研发新范式.pdf》《课程人工智能大模型系统课 (2026 年 1 月底完结版)》《课程AI 大模型零基础到商业实战全栈课第五期》《课程Vue3.5Electron 大模型跨平台 AI 桌面聊天应用实战 (2025)》《课程AI 大模型实战训练营 从入门到实战轻松上手》《课程2026 年 AI 大模型 RAG 与 Agent 智能体项目实战开发课》《课程大模型训练营配套补充资料》
返回列表