AI入门—— 一文读懂什么是RAG
一文读懂什么是RAG如果你在用大模型做问答、知识库、客服、代码助手你一定会遇到同一个问题模型“很会说”但它并不总是“知道最新、最对、最贴合你业务”的内容。RAGRetrieval-Augmented Generation检索增强生成就是为这个问题而生的。这篇文章会用实战视角讲清楚RAG 的基本概念和核心工作机制RAG 在项目中的常见用法RAG 与 Skill、Prompt、MCP 的联系和区别如何用向量数据库、Dify、n8n 构建可落地的 RAG大模型在什么时机、按什么规则触发 RAG 调用先说结论RAG 是什么RAG 是“先检索外部知识再让模型生成答案”的技术范式。你可以把它理解成两段式流程Retrieval检索从知识库里找出和问题最相关的内容片段Generation生成把这些片段作为上下文喂给大模型生成答案这和“直接问模型”最大的区别是RAG 的答案不仅来自模型参数记忆还来自你可控、可更新的外部知识源。为什么 RAG 这么重要因为它正好补上了纯大模型的三大短板1) 最新知识不足大模型训练数据有时间截断。你昨天更新的产品文档、今天发布的政策公告模型参数里并不一定有。2) 业务私有知识缺失企业内部 SOP、合同条款、项目经验、运维手册通常不在公开互联网中。RAG 可以把这些私域内容变成模型可用上下文。3) 可追溯性弱纯生成容易“讲得像真的”却难以给出来源。RAG 可以把引用片段和来源 URL 一起返回提升可信度和审计性。RAG 的核心架构最小理解版一个典型 RAG 系统通常由 6 部分组成文档加载器Loader读取 PDF、Markdown、网页、数据库记录文本切分器Chunker把长文拆成适合检索的小片段向量化模型Embedding把文本转成向量向量数据库Vector Store存储向量并支持相似度检索检索器Retriever根据问题召回 top-k 相关片段生成器LLM基于“问题 检索上下文”生成最终回答常见链路是Query - Embedding - Similarity Search - Context Assembly - LLM AnswerRAG 的典型用法从 0 到 1用法 1企业内部知识问答最常见落地方式是把文档中心接成知识库例如产品文档实施手册售后 FAQ安全规范用户提问时先检索相关片段再让模型回答并附引用来源。用法 2客服和工单辅助在客服场景里RAG 可把“回答一致性”从“靠人记忆”升级为“靠知识检索”。这样新客服也能快速给出接近资深同事的答案质量。用法 3代码与运维助手把 README、架构文档、历史事故复盘、部署手册接入 RAG。当工程师问“某服务为什么这样配”“这个告警怎么处理”时能得到贴近团队上下文的回答。RAG 与 Prompt、Skill、MCP 的联系与区别这四个概念经常一起出现但关注层次不同。Prompt定义表达与行为风格Prompt 解决“模型怎么回答”输出语言与格式角色语气禁止事项例如不要编造它本身不提供知识检索能力。Skill定义任务流程方法Skill 解决“任务怎么做更稳”先检索还是先澄清命中阈值不够时是否拒答回答时是否必须附引用它是可复用 SOP不是底层连接协议。MCP定义工具连接协议MCP 解决“模型如何调用外部能力”。在 RAG 场景下MCP 可以连接向量检索工具文档读取工具重排序rerank工具权限和审计系统RAG定义“检索 生成”的能力范式RAG 关注的是知识增强本身。它可以在没有 MCP 的情况下实现也可以通过 MCP 让这套能力更标准化、更可治理。一张表看清四者差异维度PromptSkillMCPRAG核心作用约束模型表达固化任务流程连接外部工具用检索增强生成解决问题怎么说怎么做怎么接知识从哪来所在层次推理层编排层集成层能力层是否直接引入外部知识否间接间接是常见产物提示词模板SKILL/SOPServer/Tool API检索链路与知识库RAG 实战示例一向量数据库方案可直接上手下面给一个最小可运行思路使用LangChain Chroma搭一个本地 RAG 原型。第一步准备数据将你的知识文档放入docs/格式可以是.md.txt.pdf需对应 loader第二步构建索引离线阶段fromlangchain_community.document_loadersimportDirectoryLoader,TextLoaderfromlangchain_text_splittersimportRecursiveCharacterTextSplitterfromlangchain_openaiimportOpenAIEmbeddingsfromlangchain_community.vectorstoresimportChroma loaderDirectoryLoader(docs,glob**/*.md,loader_clsTextLoader)docsloader.load()splitterRecursiveCharacterTextSplitter(chunk_size800,chunk_overlap120)chunkssplitter.split_documents(docs)embOpenAIEmbeddings(modeltext-embedding-3-large)dbChroma.from_documents(chunks,emb,persist_directory./chroma_db)db.persist()第三步在线问答检索 生成fromlangchain_openaiimportChatOpenAI,OpenAIEmbeddingsfromlangchain_community.vectorstoresimportChromafromlangchain.promptsimportChatPromptTemplate dbChroma(persist_directory./chroma_db,embedding_functionOpenAIEmbeddings(modeltext-embedding-3-large))retrieverdb.as_retriever(search_kwargs{k:4})llmChatOpenAI(modelgpt-4o-mini,temperature0)promptChatPromptTemplate.from_template(你是企业知识助手。请仅基于上下文回答若上下文不足请明确说明。\n\n问题{question}\n\n上下文\n{context}\n\n请给出要点式回答并附上引用片段编号。)defask(question:str):hitsretriever.invoke(question)context\n\n.join([f[{i1}]{d.page_content}fori,dinenumerate(hits)])answerllm.invoke(prompt.format(questionquestion,contextcontext))returnanswer.content第四步上线前加三件事重排序Rerank提升 top-k 相关性引用回传答案附 source、文档名、段落位置阈值拒答相似度太低时不回答避免幻觉RAG 实战示例二借助 Dify 快速搭建Dify 的优势是低代码、可视化快。常见做法是“先验证业务价值再决定是否自研”。一套实操流程在 Dify 创建知识库导入企业文档配置切分策略chunk size / overlap选择 embedding 模型和召回参数top-k在工作流中加入“知识检索节点 LLM 节点”配置未命中策略追问、转人工、拒答打开日志评估命中率和回答质量适合 Dify 的场景业务要快速 PoC团队工程资源有限需要产品、运营一起调试 Prompt 与知识库RAG 实战示例三借助 n8n 编排自动化流程n8n 更像自动化编排平台适合把 RAG 接入业务流程。一个典型工作流Webhook - Query Normalize - Vector Search - LLM Answer - Slack/CRM 回写你可以在 n8n 里做什么把用户提问先做意图分类FAQ/工单/销售咨询仅对“知识问答类”触发 RAG对“交易类操作”走审批流不直接由模型执行把问答日志写回数据库做后续质量评估大模型在什么时机触发 RAG这是 RAG 成败最关键的工程问题之一。不是每个问题都要走检索触发策略应该可配置、可观测。常见触发时机建议组合使用1) 关键词/意图触发当问题包含“最新版本、公司政策、价格、SLA、内部流程”等词时强制触发 RAG。因为这些问题最依赖实时和私域知识。2) 置信度触发先让模型做一次“是否需要外部知识”判断如果模型对答案置信度低自动进入检索链路。3) 任务类型触发对 FAQ、客服、合规问答默认走 RAG对创意写作、头脑风暴可不走 RAG降低延迟和成本。4) 用户显式触发允许用户通过指令触发例如“请基于知识库回答”“请给出处”“只用公司文档回答”如何设计 RAG 触发策略实战版建议采用“三段式决策”Router 判断分类问题类型知识密集/通用对话/操作执行Gate 判门槛看是否满足检索阈值相似度、时效性、领域敏感度Fallback 策略未命中时追问或拒答而不是硬编可参考下面伪代码defshould_use_rag(query,intent,user_preference):ifuser_preferenceforce_rag:returnTrueifintentin{policy,pricing,internal_sop,faq}:returnTrueif最新inqueryor版本inqueryor公司inquery:returnTruereturnFalsedefanswer(query):intentclassify_intent(query)ifshould_use_rag(query,intent,user_preferenceauto):docsretrieve(query,top_k5)ifnotdocsormax_score(docs)0.72:return当前知识库未检索到足够可信的信息请补充上下文或转人工。returnllm_with_context(query,docs)returnllm_direct(query)RAG 常见坑与优化建议坑 1只换了向量库没做数据治理RAG 的瓶颈往往不在模型而在文档质量。脏数据、重复文档、过期内容会直接拉低答案可信度。坑 2切分策略不合理chunk 太大召回不准chunk 太小上下文断裂。建议按文档类型分策略比如 FAQ、技术文档、合同文本分别配置。坑 3只看“能回答”不看“答得对”需要建立评估集至少跟踪命中率retrieval hit rate引用准确率citation precision拒答准确率该拒时是否拒坑 4忽略成本与延迟RAG 是“检索 生成”双成本路径。要通过缓存、路由、分层索引来控制延迟与 token 消耗。RAG 的优势与劣势优势可以补足大模型的最新知识和私域知识回答更可追溯适合企业审计场景知识更新不需要重新训练大模型可按业务域做精细化治理劣势系统复杂度明显高于纯 Prompt 方案需要持续维护知识库与索引检索链路增加延迟和成本召回不准时会把错误上下文“放大”RAG Skill Prompt MCP 的推荐组合在真实项目里建议这样分层Prompt定义回答边界只基于证据、必须附来源Skill定义流程何时检索、何时拒答、何时追问MCP接入检索工具、权限策略、审计能力RAG提供外部知识增强能力这个组合能同时兼顾可用性、准确性、可治理性。总结RAG 的本质不是“让模型更聪明”而是“让答案更有依据”。当你需要最新信息、私域知识、可追溯输出时RAG 几乎是必选项。你可以记住这句Prompt 决定怎么说Skill 决定怎么做MCP 决定怎么接工具RAG 决定知识从哪来如果你正在做企业级 AI 应用建议从一个高价值场景开始先用 Dify/n8n 快速验证再逐步升级到向量库 自定义触发策略 全链路评估。这样你不仅能“做出一个能答的机器人”还能做出“答得准、可持续迭代”的生产级系统。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2558943.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!