RAG知识库构建:大模型调用的实用指南,秒懂!

张开发
2026/4/8 6:15:17 15 分钟阅读

分享文章

RAG知识库构建:大模型调用的实用指南,秒懂!
RAG知识库构建的实用指南不算啥指南只是一些自己认为不熟练的内容做一个新的整理。RAG 与大模型的调用关系完整请求流程很多同学会困惑一个用户请求进来什么时候调用 RAG什么时候直接问大模型这其实是个流程设计问题我梳理一下标准的调用链路典型的请求处理流程什么时候会触发 RAG[!tip]一句话总结当问题答案需要「你的私有知识库信息」时才需要调用 RAG。如果问题能用大模型的通用知识回答就不用调用。具体来说以下场景一定会触发 RAG场景例子是否触发RAG企业内部政策合规问题“我们公司年假规定是几天”✅ 必须触发产品文档/手册查询“这款手机的保修政策是什么”✅ 必须触发合同条款查询“这份合同里关于违约金怎么规定的”✅ 必须触发基于私有数据的分析“帮我分析下上个月销售数据中top3商品有什么特点”✅ 必须触发通用知识问题“Python怎么定义一个类”❌ 直接问大模型创意生成“帮我写一封节日祝福邮件”❌ 直接问大模型推理计算“123…100等于多少”❌ 直接问大模型RAG 在整个架构中的位置从分层架构角度看RAG 其实是大模型的一个上下文增强插件用户问题 → RAG 负责找知识从你的私有知识库中召回和问题相关的片段RAG 找到的知识 用户问题 → 一起喂给大模型大模型负责懂语言、组织回答大模型基于检索到的知识生成答案 → 返回用户[!info] 核心关系 RAG 不替代大模型而是增强大模型。RAG 负责解决知识陈旧、知识私有、来源可追溯这几个问题大模型仍然负责自然语言理解和生成。两种常见的调用模式1. 先检索再生成最常用用户问退货时运费谁承担↓去RAG知识库检索 → 找到七天无理由退货买家承担运费质量问题商家承担↓把问题 检索结果拼起来已知信息{{检索结果}}请根据上面的信息回答用户问题{{用户问题}}↓调用大模型生成回答2. 渐进式检索进阶如果问题复杂大模型先分析问题分解成几个子问题然后多次调用 RAG逐步检索最后综合答案。适合回答那种需要多文档交叉验证的复杂问题。一句话记住通用知识大模型直接搞定需要你的私有数据先走 RAG 检索一把。工程实现上怎么判断要不要触发 RAG刚才说的是逻辑判断在代码开发层面业界有几种成熟的判断方法**方法一分类器判断最常用**用一个小模型直接做二分类问题分类成「需要知识库」还是「不需要知识库」。模型怎么知道判断标准就是你靠 Prompt 教给它的# Prompt 模板让大模型自己判断 → 你把判断规则写在prompt里模型自然会按规则输出classification_prompt f用户问题: {user_question}请判断这个问题是否需要查询企业内部知识库才能回答- 如果需要**私有知识、内部文档、产品信息、公司政策**才能回答 → 输出 NEED_RAG- 如果是**通用知识、创意生成、推理计算**大模型本身训练数据里已经有了 → 输出 NO_RAG只输出 NEED_RAG 或 NO_RAG不要输出其他内容。# 调用小模型比如 GPT-3.5-turbo 就够了判断 → 模型会按照你给的规则输出result call_llm(classification_prompt)# 模型输出就是 NEED_RAG 或者 NO_RAG你的代码根据这个字符串判断if result NEED_RAG: trigger_rag_retrieval(user_question) # 模型说需要触发 RAGelse: directly_answer(user_question) # 模型说不需要直接回答举个例子用户问我们公司年假有几天→ 模型一看这是公司内部政策大模型不可能知道 → 输出NEED_RAG用户问Python怎么写循环→ 模型一看这是通用编程知识 → 输出NO_RAG优点实现简单准确率不错缺点1) 多调用一次大模型增加延迟2)分类提示词冗余每轮重复传输50-100 tokens3)多轮对话时上下文爆炸10轮对话就浪费500 tokens加速达到窗口限制。方法二向量相似度匹配把用户问题向量化去知识库比对比对如果能找到相似度超过阈值的 chunk就触发 RAG找不到就直接回答。# 1. 用户问题向量化question_embedding embed_model.embed(user_question)# 2. 去向量库找最相似的 top1top_result vector_db.search(question_embedding, top_k1)max_similarity top_result[0].similarity# 3. 阈值判断if max_similarity threshold: # 比如阈值设 0.7 trigger_rag_retrieval(user_question) # 找到相关知识触发 RAGelse: directly_answer(user_question) # 找不到说明不需要优点不需要多调用一次大模型速度快。⚠️这个方法真正的陷阱它用「检索环节的副产品」来决定是否触发RAGRAG检索本身有召回率和排序质量问题比如应该召回top10但实际只召回top3而这个方法只看top1相似度就做二元决策 →双重放大了检索问题例用户问退货运费规则本该召回10条相关条款但因检索不准只召回3条且top1相似度0.65低于0.7阈值你的系统会误判为不需要RAG→ 直接让大模型瞎猜 → 回答错误本质区别网上说的向量检索召回率低是RAG系统内部问题而这里的问题是前端判断逻辑放大了内部问题解决方案✅阈值调低比如0.5但会误判更多✅用top5平均分替代top1✅加一层元数据过滤比如如果问题含’退货’关键词强制触发) ✅采用混合搜索先用关键词如BM25或元数据过滤进行粗筛再在筛选出的小范围内做向量搜索能显著提升相关性。方法三关键词/规则匹配最简单粗暴预设一批关键词如果问题命中就触发 RAG。# 比如知识库是关于公司人事政策的trigger_keywords [年假, 社保, 公积金, 加班, 请假, 工资, 合同]if any(keyword in user_question for keyword in trigger_keywords): trigger_rag() # 命中关键词触发else: directly_answer()优点成本为0速度极快缺点灵活性差覆盖不全。适合场景非常固定的系统。方法四不管什么问题都触发 RAG懒人大法很多生产系统直接选择不管用户问什么都先检索一遍知识库然后把检索结果拼进去。如果没找到相关内容大模型发现检索结果没用自然会用自己的知识回答。# 所有请求都走一遍 RAGretrieved_chunks rag_retrieval(user_question)prompt build_prompt(user_question, retrieved_chunks)answer call_llm(prompt)优点代码最简单不会漏缺点不管要不要都检索浪费一点 token 和时间但现在向量检索都很快其实也花不了几个钱。这是目前很多产品的实际做法。[!tip] 我的推荐场景固定 → 方法三规则足够用追求性能 → 方法二向量相似度追求准确 → 方法一大模型分类不想瞎折腾 → 方法四全都检索最简单可靠RAG为啥是企业AI的“必选项”它能解决大模型的四大痛点不用重新训练更新知识库就能同步新内容答案基于检索到的文档能追溯来源减少“胡编”知识库可本地部署数据不出企业隐私有保障不用微调大模型成本比训练低太多。对企业来说这简直是“用得起、靠得住”的AI解决方案。RAG构建的“关键四步”文档治理你想让AI会回答什么得先给它“喂对”内容。很多企业的文档格式乱成一锅粥Word、PDF、网页、数据库混在一起还有大段装饰性文字、重复的FAQ。这里的窍门是“结构化优先”比如数据库里的商品SPU、知识表字段清晰上下文明确优先喂给AI弱结构化的文档比如用户手册得先清洗——用正则工具去掉没用的装饰统一格式把“七天无理由退货”和“7日退货”这类近义句归一化。别嫌麻烦这步做不好后面再努力也白搭。[备注] 到底什么是“结构化优先”这个原则的核心是优先处理那些格式清晰、自带“说明书”的数据。可以对比一下结构化数据可以想象成一张规整的Excel表格或JSON文件。数据有明确的“字段”Key和“内容”Value比如{问题: 退货运费谁承担, 答案: 质量问题商家承担...}。AI能100%理解每个部分的含义处理起来没有歧义质量非常高。非结构化数据指大段的Word/PDF/纯文本文档。信息都混在自然语言里比如文章中提到“它的价格是99元”程序需要复杂处理才能推断出价格和产品的对应关系更容易出错。“结构化优先”并非要求把所有东西都转成JSON而是建议在构建知识库时先从你手头最规整、最干净的数据如数据库、API、规整的CSV/JSON文件开始。这些是能最快提升问答准确率的“低垂的果实”。处理完这些后再投入精力去清洗和导入格式混乱的文档。切块策略把文档切成“语义完整的小块”是门技术活。块太大信息冗余检索慢块太小语义缺失AI理解不了。比如电商的FAQ文档“Q发票什么时候能开A发货后3个工作日内发电子发票”必须把QA合并成一个chunk要是分开AI准答不上。长文档超过512token的话就用“滑动窗口重叠”——比如从第100字切到612字下一块从512字开始保证语义连贯。值得注意的是对于包含表格、代码或图文混排的复杂文档简单的文本切块效果有限。这时可以考虑更高级的策略如基于版面分析的切块例如使用unstructured.io这类库能解析PDF/HTML的结构或语义切块Semantic Chunking即利用语言模型来识别文本中的语义断点确保切分的每个块都是一个完整的语义单元。嵌入与向量库这是RAG的“知识翻译机”和“ storage”。嵌入模型负责把文本变成“能被模型理解的向量”中文场景优先选bge-large-zh或bge-m3效果稳要服务海外就用OpenAI的多语言模型。别贪高维度维度越高向量库越占空间查询越慢。向量库选对了能省大心千条以下用FAISS够用要上生产环境Milvus或Qdrant更稳想做混合检索比如向量关键词用OpenSearch加Dense Retrieval插件AWS都在用这一套。检索策略这是RAG效果的“分水岭”。你用的不是大模型是“召回的上下文”所以得把对的chunk召回来还得排对序。比如电商用户问“退货运费怎么算”向量召回了3条内容商品页描述、客服话术、退货规则。这时候要给客服话术加更高的权重metadata标记因为客服话术更贴近用户问题要是相似度都高就用重排模型Reranker进行二次精排。重排Re-ranking是提升检索质量的关键一步。它通常使用Cross-encoder模型该模型会同时处理用户问题和被召回的文档块输出一个更精确的相关性分数。这比向量检索使用Bi-encoder更慢但准确得多非常适合在向量检索召回比如top 20之后送入大模型之前做一次高质量的筛选排序。[备注] 模型类型辨析双塔模型 (Bi-encoder) vs 交叉编码器 (Cross-encoder)没错重排Re-ranking确实是需要再调用一次模型。这里需要区分两种模型双塔模型 (Bi-encoder)如bge-large-zh。它有两个独立的“塔”分别将问题和文档独立编码成向量然后计算向量间的相似度。这种方式速度快适合从海量数据中快速“海选”召回出可能相关的文档。但因为问题和文档没有直接交互对语义的理解不够精细。交叉编码器 (Cross-encoder)这是用于重排的模型。它会将问题和文档“拼接”起来一同输入模型进行计算。这使得模型能同时看到两者的完整上下文进行更深层次的交互和判断从而给出更精准的相关性排序。它准确率高但速度慢因此适合对“海选”出的一小批结果进行“精选”重排。简单说两者是互补关系双塔模型负责召回效率交叉编码器负责重排效果。真实场景里我们试过给Dify调检索策略——把“官方文档第三方内容”“最新内容旧内容”设为权重回答准确率直接提了30%。[备注] 如何理解“给Dify调检索策略”这句话这句话是“检索策略”部分一个非常画龙点睛的例子。它指的是在像Dify这样的LLM应用开发平台中通过设定权重让检索系统变得更“智能”。规则一“官方文档 第三方内容”含义告诉系统“官方发布的内容比第三方博客更可信”。实现为文档添加来源元数据如source: official并在检索时为来自官方来源的文档增加权重加分使其排名更靠前。规则二“最新内容 旧内容”含义告诉系统“时间越近的信息越有价值”。实现为文档添加发布日期元数据并让系统优先考虑日期更新的文档。总结通过这种方式系统不再是简单地看“文字像不像”而是综合考虑了信息的“来源权威性”和“时效性”。这确保了提供给大模型的“原材料”质量更高从而大幅提升了最终答案的准确率。[备注] 金牌助理的比喻如果感觉上面的概念有点抽象我们可以用一个比喻来理解。想象一下大模型LLM是一位非常聪明但“健忘”的老板他懂天下事但完全不记得自己公司的内部资料。你就是老板的得力助手。当客户提问时老板会让你去资料库找相关规定。你的“检索策略”好坏决定了你是普通助手还是金牌助手。普通助手的做法没有策略在资料库里搜索关键词然后把找到的10份文件包括法务条款、网页说明、陈旧邮件等一股脑全抱给老板。老板看完会头大给出的答案不一定准。这就像最基础的向量检索只负责“找相关的”但不管哪个“最好”。金牌助手的做法有策略分清主次文档加权你早就知道客服内部的《FAQ》是回答客户问题的“标准答案”并提前给它贴了“高优先级”标签。找文件时你看到这个标签就直接把这份FAQ放在了最上面。优中选优重排 Re-ranking对于剩下几份看起来也相关的文件你会拿着客户的具体问题自己先快速、仔细地对比一遍看看哪个文件能最完美地回答问题。最后你只把最匹配的那一两份核心材料递给老板。总结好的检索策略就是让你从一个只会“搜索”的普通助手升级成一个懂得“筛选”和“排序”的金牌助手。这样大模型拿到的永远是“含金量”最高的材料最终生成的答案自然就更准确、更可靠。RAG 效果的评估与迭代构建了RAG系统后如何衡量“建得好不好”并持续优化呢这就需要一套科学的评估体系。一个完整的RAG评估应关注以下几个核心指标召回率Context Recall衡量检索系统是否成功召回了所有相关信息。即“找得全不全”。精确率Context Precision衡量召回的知识中有多少是与问题真正相关的。即“找得准不准”。答案相关性Answer Relevance衡量大模型生成的答案是否切中用户问题。忠实度Faithfulness衡量答案是否完全基于所提供的上下文知识没有“胡编乱造”。在实践中通常需要构建一个评测集黄金数据集包含一系列标准问答对和相关的知识源。通过自动化地运行评测集我们就能量化地追踪系统在优化例如更换嵌入模型、调整检索策略前后的表现变化从而实现数据驱动的迭代优化。像Ragas、ARES这样的开源框架都提供了实现上述评估的工具。再说说企业的真实应用场景智能客服可以把RAG集成到系统里知识库放产品手册、FAQ秒级响应还准确知识管理系统里把合同、政策文档喂给RAG找条款比翻文档快10倍数据分析助手更实用——把数据库表结构、字段说明放进知识库用户问“上个月销量top3的商品”AI能直接生成SQL查询不用懂代码。最后给大家提几个“避坑提醒”第一文档质量是基础——用标准格式PDF、Markdown结构清晰扫描件一定要OCR处理第二别贪“大模型”——中文场景用bge就够高参模型效果好但成本高除非是专业领域第三安全要盯紧——知识库本地部署加权限控制别让敏感数据泄露第四定期优化——根据用户反馈调整切块策略、检索权重比如用户总问“退货运费”就把客服话术的权重再调高些。RAG 系统相关开源框架与技术栈总结1. LLM 应用开发平台这类平台集成了RAG的完整流程让你能以低代码或通过简单配置的方式快速构建和部署AI应用。Dify简介文章中提到的实例一个上手简单、功能强大的LLM应用开发平台内置了完整的RAG引擎包括数据处理、检索、重排和评估等功能。GitHub:https://github.com/langgenius/dify2. 向量数据库 (Vector Database)用于存储文档向量化后的Embedding并提供高效的相似度检索。FAISS (Facebook AI Similarity Search)简介文章中推荐用于千条数据量以下的场景。它是一个高性能的向量相似度搜索库而不是一个完整的数据库服务。GitHub:https://github.com/facebookresearch/faissMilvus简介文章推荐的生产级向量数据库功能全面专为大规模向量检索设计。GitHub:https://github.com/milvus-io/milvusQdrant简介与Milvus类似是另一款流行的生产级向量数据库以其性能和易用性著称。GitHub:https://github.com/qdrant/qdrantOpenSearch简介一个开源的分布式搜索和分析引擎源自Elasticsearch。通过安装Dense Retrieval等插件可以实现关键词向量的混合检索。GitHub:https://github.com/opensearch-project/OpenSearch3. 嵌入与重排模型 (Embedding Reranker Models)这些模型负责将文本“翻译”成向量或对召回结果进行精排。它们通常托管在Hugging Face上。BGE (BAAI General Embedding) Models简介文章首推的中文场景嵌入模型如bge-large-zh-v1.5。由北京智源人工智能研究院BAAI开发效果稳健。Hugging Face:https://huggingface.co/BAAI/bge-large-zh-v1.5BGE Reranker Models简介与BGE嵌入模型配套的重排模型Cross-encoder。在你需要对召回结果进行二次精排时使用。Hugging Face:https://huggingface.co/BAAI/bge-reranker-large4. 文档处理与切块 (Document Processing Chunking)Unstructured.io简介文章中提到的用于“基于版面分析切块”的库。它能智能解析PDF、HTML、Word等复杂文档提取文本和表格等结构化内容。GitHub:https://github.com/Unstructured-IO/unstructured5. RAG 评估框架 (Evaluation Frameworks)用于科学地衡量RAG系统的性能实现数据驱动的优化。Ragas简介文章中提到的评估框架之一提供了一套完整的指标如忠实度、答案相关性等来评估RAG流水线的各个环节。GitHub:https://github.com/explodinggradients/ragasARES简介文章提到的另一个评估框架由斯坦福大学开发旨在通过模拟人工评估来自动化地评测RAG系统的准确性。GitHub:https://github.com/stanford-futuredata/ARES其实RAG没那么复杂关键是”贴着业务需求搭”——别追求”高大上”的技术能解决问题的才是好方案。01什么是AI大模型应用开发工程师如果说AI大模型是蕴藏着巨大能量的“后台超级能力”那么AI大模型应用开发工程师就是将这种能量转化为实用工具的执行者。AI大模型应用开发工程师是基于AI大模型设计开发落地业务的应用工程师。这个职业的核心价值在于打破技术与用户之间的壁垒把普通人难以理解的算法逻辑、模型参数转化为人人都能轻松操作的产品形态。无论是日常写作时用到的AI文案生成器、修图软件里的智能美化功能还是办公场景中的自动记账工具、会议记录用的语音转文字APP这些看似简单的应用背后都是应用开发工程师在默默搭建技术与需求之间的桥梁。他们不追求创造全新的大模型而是专注于让已有的大模型“听懂”业务需求“学会”解决具体问题最终形成可落地、可使用的产品。CSDN粉丝独家福利给大家整理了一份AI大模型全套学习资料这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】02AI大模型应用开发工程师的核心职责需求分析与拆解是工作的起点也是确保开发不偏离方向的关键。应用开发工程师需要直接对接业务方深入理解其核心诉求——不仅要明确“要做什么”更要厘清“为什么要做”以及“做到什么程度算合格”。在此基础上他们会将模糊的业务需求拆解为具体的技术任务明确每个环节的执行标准并评估技术实现的可行性同时定义清晰的核心指标为后续开发、测试提供依据。这一步就像建筑前的图纸设计若出现偏差后续所有工作都可能白费。技术选型与适配是衔接需求与开发的核心环节。工程师需要根据业务场景的特点选择合适的基础大模型、开发框架和工具——不同的业务对模型的响应速度、精度、成本要求不同选型的合理性直接影响最终产品的表现。同时他们还要对行业相关数据进行预处理通过提示词工程优化模型输出或在必要时进行轻量化微调让基础模型更好地适配具体业务。此外设计合理的上下文管理规则确保模型理解连贯需求建立敏感信息过滤机制保障数据安全也是这一环节的重要内容。应用开发与对接则是将方案转化为产品的实操阶段。工程师会利用选定的开发框架构建应用的核心功能同时联动各类外部系统——比如将AI模型与企业现有的客户管理系统、数据存储系统打通确保数据流转顺畅。在这一过程中他们还需要配合设计团队打磨前端交互界面让技术功能以简洁易懂的方式呈现给用户实现从技术方案到产品形态的转化。测试与优化是保障产品质量的关键步骤。工程师会开展全面的功能测试找出并修复开发过程中出现的漏洞同时针对模型的响应速度、稳定性等性能指标进行优化。安全合规性也是测试的重点需要确保应用符合数据保护、隐私安全等相关规定。此外他们还会收集用户反馈通过调整模型参数、优化提示词等方式持续提升产品体验让应用更贴合用户实际使用需求。部署运维与迭代则贯穿产品的整个生命周期。工程师会通过云服务器或私有服务器将应用部署上线并实时监控运行状态及时处理突发故障确保应用稳定运行。随着业务需求的变化他们还需要对应用功能进行迭代更新同时编写完善的开发文档和使用手册为后续的维护和交接提供支持。03薪资情况与职业价值市场对这一职业的高度认可直接体现在薪资待遇上。据猎聘最新在招岗位数据显示AI大模型应用开发工程师的月薪最高可达60k。在AI技术加速落地的当下这种“技术业务”的复合型能力尤为稀缺让该职业成为当下极具吸引力的就业选择。AI大模型应用开发工程师是AI技术落地的关键桥梁。他们用专业能力将抽象的技术转化为具体的产品让大模型的价值真正渗透到各行各业。随着AI场景化应用的不断深化这一职业的重要性将更加凸显也必将吸引更多人才投身其中推动AI技术更好地服务于社会发展。CSDN粉丝独家福利给大家整理了一份AI大模型全套学习资料这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】

更多文章