
这里写自定义目录标题欢迎使用Markdown编辑器一、为什么需要 RAG:微调解决不了的问题二、RAG 的完整链路:从文档到答案三、分块策略:决定 RAG 质量的第一道关卡四、检索优化:从召回一堆到召回精准五、向量数据库选型:不止是存向量六、高级话题:GraphRAG 与多模态 RAG七、评测与持续优化:让 RAG 系统越用越准八、一个完整的工程架构参考新的改变功能快捷键合理的创建标题有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能丰富你的文章UML图表流程图FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好 这是你第一次使用# RAG 检索增强生成全解析从原理到企业级落地的完整技术方案大模型最经典的痛点之一是不知道他不知道什么——模型的知识停留在训练截止日期,对于企业内部文档、实时数据、垂直领域知识,它要么答不上来,要么一本正经地编造答案(幻觉)。检索增强生成(Retrieval Augmented Generation,RAG)正是为解决这一问题而生:在模型回答之前,先从外部知识库中检索相关内容,把检索结果作为上下文注入提示词,让模型带着资料回答。本文从 RAG 的底层原理讲起,逐步深入到企业级落地的架构设计、质量优化与工程陷阱。一、为什么需要 RAG:微调解决不了的问题在大模型出现之前,让模型掌握新知识的主流手段是微调。但微调有三个硬伤:一是成本高,高质量标注数据、GPU 算力、训练时间都是稀缺资源;二是更新慢,每次知识更新都要重新训练;三是容量有限,把海量业务知识塞进模型参数里,效果会迅速衰减。对比之下,RAG 的价值非常清晰:知识实时可更新。知识库里的文档更新了,检索结果立刻反映变化,不需要重新训练模型。对于业务规则、产品信息、法律法规这类高频变化的内容,RAG 是天然适配的方案。答案可溯源。RAG 的回答可以附带引用来源——“这句话出自文档 X 的第 Y 节”。这对企业场景至关重要:用户可以核验答案,合规审计也有了依据。成本可控。微调一次大模型的成本足以支撑整个 RAG 系统的长期运行。而且 RAG 不需要为每个垂直领域准备训练数据,冷启动速度快得多。降低幻觉。让模型基于检索到的资料作答,而不是凭空发挥,输出的事实准确率显著提升。业界对照实验显示,同样的模型接入完整的数据工程体系后,数据分析类任务的准确率可以从 20% 左右提升到 95% 以上。当然,RAG 不是万能的。它无法覆盖需要模型内化知识才能完成的任务,比如风格迁移、复杂推理。实践中,RAG 与微调、长上下文技术往往组合使用,各自解决不同层次的问题。二、RAG 的完整链路:从文档到答案一个标准的 RAG 系统包含两条链路:离线索引链路和在线检索链路。离线索引链路(数据准备阶段):文档采集:从企业内部系统(知识库、CRM、Wiki、共享盘)收集原始文档,涵盖 PDF、Word、Markdown、HTML等格式。文档解析:这是最容易出问题的一步。PDF 的表格、扫描件的 OCR、PPT 的版式,都可能让解析结果支离破碎。解析质量直接决定后续所有环节的上限,值得投入专门精力。清洗与标准化:去除页眉页脚、乱码、重复内容,统一编码格式。脏数据是 RAG 效果的头号杀手。分块(Chunking):把长文档切分成适合检索的片段。分块策略直接决定检索质量——切得太粗,检索噪声大;切得太细,语义不完整。向量化:用 Embedding 模型把文本块编码为向量。入库:向量和原文写入向量数据库,同时保留原文元数据(来源、章节、更新时间)。在线检索链路(问答阶段):问题理解:对用户问题进行预处理,必要时做改写(Query Rewriting),把模糊的问题转化为更利于检索的形式。向量检索:把问题编码为向量,在向量库中做相似度检索,召回 Top-K 个候选块。重排序(Rerank):用重排序模型对召回结果做精排,把真正相关的排在前面。这一步对质量提升显著,但常被初学者跳过。10.4.上下文组装:把重排后的文档块与用户问题、系统指令拼装成最终的 Prompt。生成:模型基于检索上下文生成答案,并附上引用来源。三、分块策略:决定 RAG 质量的第一道关卡分块是 RAG 中最玄学也最关键的环节。业界没有万能的分块参数,但有一套方法论:按语义边界分块优于按固定字数分块。固定字数切分(比如每 500 字一块)简单粗暴,但经常把一句话、一个表格拦腰截断,破坏语义完整性。更好的做法是按段落、标题、代码块、表格等结构边界切分。Markdown 文档有天然的标题层级,按标题切分往往效果很好。块的大小取决于下游任务。问答场景块可以小一些(300~500 token),保证检索精准;摘要场景块要大一些(1000~2000 token),保证语义完整。核心原则是一块应该是一个完整的最小语义单元。重叠(Overlap)技术值得使用。相邻块之间保留少量重叠(比如 10%~20%),可以避免语义恰好落在切分边界上的内容被丢失。表格与代码要特殊处理。把表格转为 Markdown 表格或键值对文本,代码块保留缩进,这类结构化内容的 Embedding 效果才稳定。四、检索优化:从召回一堆到召回精准很多团队的第一版 RAG 效果不佳,问题往往出在检索环节。常见的手段按成本从低到高排列:混合检索(Hybrid Search)。向量检索擅长语义匹配,但对精确关键词(产品型号、人名、专有名词)不敏感;BM25 等稀疏检索恰好相反。把两者结合——同时做向量检索和关键词检索,再融合结果——能覆盖更全面的匹配场景,这是性价比最高的优化手段。Query 改写。用户的原始问题往往是口语化、不完整的。先用一个小模型把问题改写为更规范、更利于检索的形式,比如帮我查下这个月的报表改写为2026年8月的销售统计报表。对于多跳问题(需要多个知识片段才能回答),还可以把问题拆解为多个子查询,分别检索再合并。重排序。向量检索的 Top-K 结果中,真正相关的可能只有一半。用一个交叉编码器(Cross-Encoder)重排序模型,把问题和文档块逐对打分,能显著提升最终送入模型的上文质量。Rerank 的引入通常能让答案准确率提升 10~20 个百分点。元数据过滤。向量数据库大多支持按元数据过滤(时间范围、部门、文档类型)。如果业务上可以确定答案来源的边界,先过滤再检索,精度和速度双赢。五、向量数据库选型:不止是存向量向量数据库是 RAG 的基础设施,选型时容易陷入只看性能榜单的误区。实际决策应该围绕四个维度:检索能力。是否支持混合检索(向量 全文)、元数据过滤、以及基础的 SQL 类查询。企业场景下,往往需要结合结构化条件(比如只看今年、只看技术文档)检索,纯向量检索远远不够。生态与可运维性。是否易于部署、备份、监控,是否有成熟的客户端 SDK。很多团队最终选择在 PostgreSQL 上装 pgvector 或使用 Elasticsearch,就是因为不想为了向量检索引入一套全新的基础设施。成本。向量检索的显存/内存占用不可忽视。千万级向量的全内存方案成本高昂,需要评估磁盘索引(如 HNSW 的磁盘模式)是否满足延迟要求。扩展性。数据量增长后的水平扩展能力、索引重建的便利性,都要在选型时考虑。六、高级话题:GraphRAG 与多模态 RAG基础 RAG 在解决单点事实查询时表现良好,但在处理跨文档的关系推理(比如哪些产品线共享同一个供应商“今年 Q2 与 Q3 的销量趋势如何”)时力不从心。原因在于向量检索是碎片级匹配,难以表达实体之间的关系。GraphRAG 的解法是把知识图谱引入 RAG:在索引阶段,从文档中抽取实体(公司、产品、人物、事件)和关系,构建知识图谱;检索阶段,除了向量召回,还在图谱上做多跳遍历,把相关的实体关系一并注入上下文。这让模型具备了关联推理的能力,尤其适合企业知识库、行业研报等强关系型场景。多模态 RAG 则解决文档里不仅有文字的问题。企业文档大量包含图表、流程图、截图,传统方案直接丢弃图片信息,造成严重的知识丢失。多模态 RAG 的做法是把图片交给多模态模型(如 Qwen-VL、GPT-4V)生成结构化描述,连同文字一起入库;检索时图片描述与文字块一起被召回。2026 年,多模态 Embedding 与视觉语言模型已经成熟到可以支撑生产级应用。七、评测与持续优化:让 RAG 系统越用越准RAG 系统的优化没有终点,前提是有评测体系。推荐从三个维度构建评测:检索质量。用查询-期望召回文档对评估检索环节,指标用 RecallK。检索错了,后面生成再强也白搭。生成质量。用查询-标准答案对评估最终回答,可以从相关性、忠实度(是否忠于检索资料)、完整性三个角度打分。忠实度是最关键的指标——答案可以不完美,但绝不能编造检索资料里没有的内容。端到端体验。结合用户反馈(点赞点踩)、线上日志(超时率、重试率)评估整体表现。优化路径遵循先检索后生成的优先级:如果答案不准,先看是不是检索没召回相关内容,再考虑重排序、Query 改写;如果召回了但答案不好,再优化 Prompt 或上下文组装方式。切忌一上来就换模型——很多时候问题根本不在模型。八、一个完整的工程架构参考最后给出一个可直接参考的企业级 RAG 架构,各模块按职责解耦:接入层:统一 API 网关,负责鉴权、限流、请求路由编排层:负责 Query 改写、检索调度、上下文组装、答案生成,用 LangGraph 或自研编排器实现检索层:向量数据库 全文检索引擎 重排序服务索引层:文档解析流水线、分块服务、Embedding 服务、图构建服务知识源:企业内部文档系统、数据库、API 数据源观测层:检索质量监控、生成质量评估、失败样本分析落地时遵循先小后大原则:先用一个最小可用的版本(单文档源、基础向量检索)跑通业务闭环,拿到真实反馈后再逐步叠加混合检索、重排序、GraphRAG 等高级能力。RAG 是养出来的系统,数据、评测、迭代三者的循环,才是它真正价值的来源。Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持除了标准的Markdown编辑器功能我们增加了如下几点新功能帮助你用它写博客全新的界面设计将会带来全新的写作体验在创作中心设置你喜爱的代码高亮样式Markdown将代码片显示选择的高亮样式进行展示增加了图片拖拽功能你可以将本地的图片直接拖拽到编辑区域直接展示全新的KaTeX数学公式语法增加了支持甘特图的mermaid语法1功能增加了多屏幕编辑Markdown文章功能增加了焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置等功能功能按钮位于编辑区域与预览区域中间增加了检查列表功能。功能快捷键撤销Ctrl/CommandZ重做Ctrl/CommandY加粗Ctrl/CommandB斜体Ctrl/CommandI标题Ctrl/CommandShiftH无序列表Ctrl/CommandShiftU有序列表Ctrl/CommandShiftO检查列表Ctrl/CommandShiftC插入代码Ctrl/CommandShiftK插入链接Ctrl/CommandShiftL插入图片Ctrl/CommandShiftG查找Ctrl/CommandF替换Ctrl/CommandG合理的创建标题有助于目录的生成直接输入1次#并按下space后将生成1级标题。输入2次#并按下space后将生成2级标题。以此类推我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。如何改变文本的样式强调文本强调文本加粗文本加粗文本标记文本删除文本引用文本H2O is是液体。210运算结果是 1024.插入链接与图片链接: link.图片:带尺寸的图片:居中的图片:居中并且带尺寸的图片:当然我们为了让用户更加便捷我们增加了图片拖拽功能。如何插入一段漂亮的代码片去博客设置页面选择一款你喜欢的代码片高亮样式下面展示同样高亮的代码片.// An highlighted blockvarfoobar;生成一个适合你的列表项目项目项目项目1项目2项目3计划任务完成任务创建一个表格一个简单的表格是这么创建的项目Value电脑$1600手机$12导管$1设定内容居中、居左、居右使用:---------:居中使用:----------居左使用----------:居右第一列第二列第三列第一列文本居中第二列文本居右第三列文本居左SmartyPantsSmartyPants 是一个文本转换工具主要功能是将普通的 ASCII 标点符号自动转换为更美观的印刷体标点符号。例如原始符号转换后说明引号“引号”直引号变弯引号单引号‘单引号’直单引号变弯单引号--–两个连字符变短破折号---—三个连字符变长破折号...…三个点变省略号创建一个自定义列表MarkdownText-to-HTMLconversion toolAuthorsJohnLuke如何创建一个注脚一个具有注脚的文本。2注释也是必不可少的Markdown将文本转换为HTML。KaTeX数学公式您可以使用渲染LaTeX数学表达式 KaTeX:Gamma公式展示Γ ( n ) ( n − 1 ) ! ∀ n ∈ N \Gamma(n) (n-1)!\quad\forall n\in\mathbb NΓ(n)(n−1)!∀n∈N是通过欧拉积分Γ ( z ) ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)∫0∞tz−1e−tdt.你可以找到更多关于的信息LaTeX数学表达式here.新的甘特图功能丰富你的文章2014-01-072014-01-092014-01-112014-01-132014-01-152014-01-172014-01-192014-01-21已完成进行中计划一计划二现有任务Adding GANTT diagram functionality to mermaid关于甘特图语法参考 这儿,UML图表可以使用UML图表进行渲染例如下面产生的一个序列图王五李四张三王五李四张三李四想了很长时间, 文字太长了不适合放在一行.你好李四, 最近怎么样?你最近怎么样王五我很好谢谢!我很好谢谢!打量着王五...很好... 王五, 你怎么样?关于UML图表语法参考 这儿,流程图链接长方形圆圆角长方形菱形关于Mermaid语法参考 这儿,FLowchart流程图我们依旧会支持flowchart.js的流程图语法Created with Raphaël 2.3.0开始我的操作确认结束yesno关于Flowchart流程图语法参考 这儿.导出与导入导出如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到文章导出生成一个.md文件或者.html文件进行本地保存。导入如果你想加载一篇你写过的.md文件在上方工具栏可以选择导入功能进行对应扩展名的文件导入继续你的创作。mermaid语法说明 ↩︎注脚的解释 ↩︎