作为一线程序员高强度使用各种AI大模型和工具近1年,我深刻感受到了AI大模型的强大和便捷,但是一直在应用层不知道底层原理,很多概念理解的似是而非,没有体系化的知识体系,所以开始了这个自学人工智能之路。
1.我会结合视频教程、文档、大模型等学习资源,将自己学习人工智能的过程做个整理和记录。
2.后续会结合实际使用的案例和项目(有实际工作中的项目,也有自己兴趣使然的作品),逐步讲解一些经验和教训,希望能给大家带来一些帮助。
3.其中的一些错误和共鸣点欢迎大家指正和交流。

第五讲:大模型外挂 - RAG (检索增强生成)

文章导读:如果你觉得大模型有时候像个“一本正经胡说八道”的骗子,或者总是不知道最新的新闻,那么 RAG (Retrieval-Augmented Generation) 就是拯救它的良药。如果说 Prompt 是大模型的“内功心法”,那么 RAG 就是给大模型装备了“外挂知识库”。本文将带你深入理解:

  • 核心痛点:为什么大模型会有“幻觉”和“知识过时”?

  • 技术原理:RAG 是如何让大模型从“闭卷考试”变成“开卷考试”的?

  • 关键技术:向量数据库 (Vector DB) 和 Embedding 是什么鬼?

  • 进阶应用:从简单的文档问答到复杂的企业级知识库。

📊 统计信息:全文约 9000 字 | 预计阅读时长 30 分钟

第一部分:为什么你需要 RAG?

即使是 GPT-4 这样强大的模型,也有两个致命的弱点:

  1. **知识截止 (Knowledge Cutoff)**:

    • 模型的知识来自于训练数据。如果训练数据截止到 2023 年,它就完全不知道 2024 年发生了什么。

    • 形象比喻:就像一个博学多才的老教授,但他被关在深山老林里闭关修炼了两年,刚出关时,他完全不知道外面流行什么梗。

  2. **幻觉 (Hallucination)**:

    • 当模型不知道答案时,它倾向于通过概率预测“编造”一个看起来合理的答案。

    • 形象比喻:就像一个爱面子的学霸,考试遇到不会的题,为了不留空白,硬是编了一套看似通顺的歪理。

1.1 传统的解决方案 vs RAG

面对这两个问题,我们通常有两种解决思路:

  • **微调 (Fine-tuning)**:

    • 把新知识喂给模型,让它重新训练(或增量训练)。

    • 缺点:贵!慢!而且知识更新太快,天天微调谁受得了?

    • 比喻:为了让老教授知道昨天的新闻,把他的大脑做一次“手术”植入记忆。

  • **RAG (检索增强生成)**:

    • 在问模型之前,先去外部知识库(数据库、文档、网页)里搜一搜,把搜到的相关信息作为“参考资料”喂给模型。

    • 优点:便宜!快!数据实时更新,还能溯源。

    • 比喻给老教授配了一台能联网的电脑。遇到不懂的,先搜一下,再结合搜索结果回答你。


第二部分:RAG 的工作原理 - 从“闭卷”到“开卷”

RAG 的全称是 Retrieval-Augmented Generation,即 检索 + 增强 + 生成

2.1 核心流程图解

2.2 三步走战略

  1. **检索 (Retrieve)**:

    • 用户问:“飞哥最近在学什么?”

    • 系统先去你的私有笔记库里搜索,找到了:“飞哥最近在写《人工智能之路》系列文章。”

  2. **增强 (Augment)**:

    • 系统把搜索到的信息和用户的问题拼在一起,变成一个新的 Prompt:

    • Prompt: 你是一个智能助手。请根据以下参考资料回答用户问题。 [参考资料]: 飞哥最近在写《人工智能之路》系列文章,已经更新到了第五讲。 [用户问题]: 飞哥最近在学什么?

  3. **生成 (Generate)**:

    • 大模型看到这个 Prompt,就不需要瞎编了,直接根据参考资料回答:“飞哥最近在系统地学习人工智能,并正在撰写《人工智能之路》系列文章。”


第三部分:核心技术 - 向量与向量数据库

你可能会问:系统是怎么从海量文档里精准找到“飞哥最近在写什么”这句话的? 靠关键词匹配吗?

关键词匹配 (Keyword Matching) 已经过时了。RAG 的核心武器是 **向量搜索 (Vector Search)**。

3.1 什么是 Embedding (嵌入)?

Embedding 是将 文字 转化为 数字向量 (Vector) 的过程。 但这不仅仅是编码,而是将语义压缩进数字里

  • 形象比喻
    • 假设我们在二维坐标系里描述水果。

    • “苹果”和“梨”在坐标系里离得很近(都是水果,圆的)。

    • “苹果”和“手机”离得很远。

    • 但是!“苹果”和“乔布斯”在另一个维度上可能离得很近。

大模型通过 Embedding 模型,把一句话变成一个几百甚至几千维的向量(一串长长的数字列表)。意思相近的句子,在向量空间里的距离就越近

3.2 向量数据库 (Vector DB)

传统的数据库(MySQL, Oracle)擅长存表格,不擅长算向量距离。如果你用 MySQL 存向量,查询时需要把库里几亿条数据一条条拿出来算距离,速度慢到怀疑人生。

于是,向量数据库 应运而生。它的核心能力就是:利用算法(如 HNSW, IVF)在海量数据中毫秒级找出距离最近的 N 个向量

3.2.1 核心差异:关系型 vs 向量型

特性 关系型数据库 (MySQL/PostgreSQL) 向量数据库 (Milvus/Pinecone)
存储数据 结构化数据 (行/列) 非结构化数据的向量表示 (Arrays)
查询方式 精确匹配 (WHERE id=1) 相似度匹配 (Top-K 近邻搜索)
核心算法 B+ Tree 索引 ANN (近似最近邻) 索引
应用场景 订单、用户、库存管理 图片搜索、推荐系统、RAG 知识库

3.2.2 相似度计算:如何定义“近”?

  • **欧氏距离 (L2)**:两点之间的直线距离。越小越近。

  • 余弦相似度 (Cosine):两个向量夹角的余弦值。主要看方向是否一致,不看长度。文本搜索最常用。

  • **内积 (IP)**:投影长度。用于推荐系统中算评分。

3.2.3 主流工具选型

  • Milvus:国产之光,开源,性能强,适合大规模数据。

  • Pinecone:SaaS 服务,开箱即用,不用自己维护服务器,但数据在海外。

  • Chroma:轻量级,Python 友好,适合本地开发和测试。

  • **Elasticsearch (ES)**:老牌搜索一哥,现在也支持向量搜索了,适合混合搜索场景。

3.3 RAG 完整技术栈图解


第四部分:进阶 RAG - 让外挂更强

基础的 RAG 也就是“搜一段话给模型”,但在实际企业应用中,这还不够。

4.1 切片策略 (Chunking Strategy)

文档不能直接塞进数据库,需要切成小块。

  • 切太小:语义不完整,容易断章取义。

  • 切太大:包含太多无关信息,干扰模型,且浪费 Token。

  • 技巧:按段落切、按语义切,或者**重叠切片 (Sliding Window)**(前一块和后一块有 10% 的重叠,保证上下文连贯)。

4.2 混合搜索 (Hybrid Search)

向量搜索虽然懂语义,但有时候对专有名词(如产品型号 "X-2000")的匹配不如关键词搜索精准。

  • 解决方案向量搜索 + 关键词搜索 同时进行,然后加权融合结果。

4.3 重排序 (Rerank)

向量数据库为了快,召回的 Top-K 结果可能只是“粗略相关”。

  • Rerank 模型:专门再请一个“精细审核员”模型,把召回回来的 50 条结果,仔仔细细读一遍,重新打分,选出最最相关的 5 条给大模型。

  • 效果:虽然慢了一点点,但准确率大幅提升。

4.4 GraphRAG (知识图谱增强)

这是微软最近提出的新方向,也是 RAG 的进阶形态。要理解它,我们不仅要知道“它是什么”,更要深入了解“它为什么行”——即其背后的原理

4.4.1 知识图谱的底层原理:三元组 (Triples)

知识图谱的核心存储结构并非复杂的神经网络,而是最朴素的逻辑学结构:**SPO 三元组 (Subject-Predicate-Object)**。

  • **主体 (Subject)**:比如 "乔布斯"

  • **谓语 (Predicate)**:比如 "创立了"

  • **客体 (Object)**:比如 "苹果公司"

每一个知识点,都被拆解为这样的原子结构:("乔布斯", "创立了", "苹果公司")。成千上万个这样的三元组连接起来,就构成了图谱。

💡 思考:三元组是“双向链表”吗? 你的直觉非常敏锐!它们确实很像,但三元组是双向链表的 “超级进化版”

  • 双向链表:是线性的。节点 A 只能连节点 B(Next),B 连 C。关系只有一种(前后)。

  • 三元组(图):是网状的。节点 A 可以通过“创立”连 B,通过“父亲”连 C,通过“居住在”连 D。

  • 本质区别:链表是一条单行道,知识图谱是四通八达的立交桥网络。但如果你把图谱中的某一条路径单独拎出来(比如 乔布斯 -> 苹果 -> iPhone),它确实就是一个链表!

  • 原理:这种结构让计算机能够进行确定性的逻辑推理。比如已知 A -> BB -> C,计算机可以推导出 AC 存在间接联系。

4.4.2 为什么向量搜索会失效?(向量的局限性)

向量搜索(Vector Search)虽然强大,但它有两个致命弱点,这正是 GraphRAG 要解决的:

  1. 无法处理复杂逻辑链:向量只看“语义相近”。比如“乔布斯的爸爸是谁?”,向量可能会搜到“乔布斯传记”,但不一定能直接定位到“Paul Jobs”这个名字,除非文本里这两句话紧挨着。

  2. 无法进行全局总结:向量数据库只能返回 Top-K 个切片。如果你问“这篇文章主要讲了哪几个方面的冲突?”,向量搜索只能给你返回几段具体的冲突描写,而无法给你一个宏观的概括。GraphRAG 可以通过社区检测 (Community Detection) 算法,先找出图谱中密集的节点群(比如“冲突”相关的所有节点),然后对这些群进行摘要。

4.4.3 GraphRAG 的工作流原理

GraphRAG 是如何把非结构化的文本变成图谱,再用起来的呢?

  1. **提取 (Extraction)**:利用 LLM 强大的理解能力,从文档中自动抽取实体和关系。
    • Prompt:"请阅读以下文本,提取所有人物、公司及其关系,输出为 JSON 格式。"

  2. **构建 (Construction)**:将抽取的三元组存入 **图数据库 (Graph DB)**,如 Neo4j、NebulaGraph。

  3. **检索 (Retrieval)**:
    • 混合检索:同时进行关键词搜索、向量搜索和图谱遍历

    • **多跳推理 (Multi-hop Reasoning)**:从起点节点出发,沿着边跳跃寻找答案。比如问“比尔盖茨的竞争对手创立了什么公司?”,系统路径:比尔盖茨 --(竞争对手)--> 乔布斯 --(创立)--> 苹果公司

4.4.4 图解 GraphRAG

普通 RAG 很难把“乔布斯”和“比尔盖茨”联系起来,但 GraphRAG 可以顺着箭头找到他们的关系。


第五部分:实战场景 - 企业级知识库

光说不练假把式。RAG 在企业里最典型的应用就是 企业知识库 / 智能客服

5.1 场景描述

你是某公司的技术负责人,公司有几万份 PDF 的产品手册、维修指南、内部流程。新员工入职总是问重复的问题,老员工不仅要干活还要当客服,苦不堪言。

5.2 解决方案

搭建一套私有化的 RAG 系统:

  1. 数据层:把几万份 PDF 全部 OCR 识别,切片,Embedding 入库。

  2. 应用层
    • 员工在钉钉/飞书里提问:“打印机卡纸怎么修?”

    • RAG 后台去搜维修指南的第 32 页。

    • 大模型回答:“根据维修手册第 32 页,卡纸通常是因为滚轮老化。请尝试以下步骤:1. 打开侧盖... 2. 清理滚轮...” 并附上原文链接。

  3. 价值
    • 解放生产力:老员工不用回答弱智问题了。

    • 知识资产化:沉睡在硬盘里的 PDF 变成了随时可调用的智慧。

    • 安全可控:数据不出内网,大模型只负责语言组织,不负责存储机密。


第六部分:总结

RAG 是连接大模型与现实世界的桥梁。

  • 如果 Prompt 是你教大模型怎么说话(心法);

  • 那么 RAG 就是你给大模型喂什么书(外挂)。

在未来的 AI 应用架构中,LLM + RAG 将是标配。大模型负责逻辑推理和语言生成,RAG 负责提供精准、实时、私有的知识。掌握了 RAG,你就拥有了定制“行业专家”的能力。

下一讲,我们将探讨 AI Agent(智能体),看看当大模型不仅有脑子(LLM)、有知识(RAG),还有了手和脚(Tools)之后,会进化成什么样的新物种。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐