0. 写在开头

开头先分享最近的一点感触,虽然有时候我们会横眉冷对一些夸大宣传或者是利用信息差的产品,但是还是得尊重产品本身的技术和应用领域,比如:为什么它能夸大宣传?信息差在哪里?满足了哪些用户需求?真正的核心价值是什么?核心价值是使用怎么实现的?寻找了这些问题的答案之后,可能,就一层层的剥开了这些产品的“包装”和“外衣”,也就能真正的把包在内核的产品技术使用在生产环境之中了。

回到主题,跟我一起从头开始学AI这个系列差不多有一年没有更新了,这一年来AI的更新和变化巨大。当初没有把一些内容实践完的现实,现在看来也没那么糟,有时候停下来等一等也是一个很好的决定。

差不多在两个多月前,收藏了一个 Github 的仓库,准备差不多到时候系统的学习和体验。两个多月后,终于开始实践。其中另一个重要原因是,如何建立知识库的平台已经实践了一年多,陆陆续续的增减功能之后,基本已经完成了核心功能(欢迎有兴趣的朋友来找我探讨如何建立一个建立知识库的平台)。有了知识库之后,基于知识库的功能开发就离不开 RAG 了,为了能更好的开发功能,系统的学习体验 RAG 也是势在必行。

所以,这部分 RAG 的学习笔记,应该也会是一个系列。
在这里插入图片描述

仓库地址+资源已整理,需要的小伙伴可在下方领取!!

1. 仓库概览

改仓库 (由 Fareed Khan 创建) 收集和实现了各种已知的 RAG (Retrieval Augmented Generation - 检索增强生成) 技术。

仓库内容:

  • 演示多种 RAG 技术: 通过一系列 Jupyter Notebook,仓库展示了从简单到复杂的不同 RAG 实现方法。
  • 提供实用代码示例: 每个 Notebook 都包含可运行的 Python 代码,帮助你理解每种技术的核心概念和实现细节。
  • 促进 RAG 理解和应用: 帮助开发者和研究人员学习、比较和选择适合其特定用例的 RAG 策略。
    img

2. 什么是 RAG?(检索增强生成)

传统的 LLM 在回答问题或生成文本时,依赖于其在训练数据中学到的知识。这可能导致以下问题:

  • 知识陈旧: LLM 的知识截止于其训练数据的最后日期。
  • 幻觉: LLM 可能会编造看似合理但不正确的信息。
  • 缺乏特定领域知识: 对于未在其训练数据中充分覆盖的专业领域,LLM 可能表现不佳。

RAG 通过以下步骤来解决这些问题:

  1. \1. 检索 (Retrieval): 当用户提出问题或请求时,RAG 系统首先从一个外部知识库(如文档集合、数据库、知识图谱)中检索与查询最相关的信息片段。
  2. \2. 增强 (Augmentation): 将检索到的信息片段作为上下文 (context) 添加到用户的原始查询中。
  3. \3. 生成 (Generation): 将增强后的提示(原始查询 + 检索到的上下文)输入给 LLM,让 LLM 基于这些信息生成最终的回答。

这种方法使得 LLM 能够利用最新的、特定的外部知识,从而提高回答的准确性和相关性。

3. 从入门到精通:RAG 技术学习路径

阶段一:RAG 基础

目标: 理解 RAG 的核心工作流程。这是所有高级技术的基础。

  • 学习内容:
  • 数据加载 (Loading): 如何加载文档(例如 PDF, TXT)。
  • 文本切分 (Splitting/Chunking): 将长文档切分成小块,以便于嵌入和检索。
  • 嵌入 (Embedding): 将文本块转换为向量表示,捕捉其语义信息。常用的模型有 Sentence Transformers, OpenAI Embeddings 等。
  • 向量存储 (Vector Storage): 将嵌入向量存储在向量数据库(如 FAISS, Chroma, Pinecone)中,以便进行高效的相似性搜索。
  • 检索 (Retrieval): 根据用户查询的嵌入向量,从向量数据库中找出最相似(即最相关)的文本块。
  • 生成 (Generation): 将检索到的文本块作为上下文,与用户查询一起构建提示,并交给 LLM 生成回答。

阶段二:优化检索 - 文本切分策略

目标: 学习如何更有效地切分文档以提高检索质量。

  • 语义切分

    • 学习内容: 与固定大小切分不同,语义切分尝试根据文本的语义结构(如句子、段落或主题)来切分文档,使得每个文本块包含更完整的上下文。
    • 核心概念: 提高切分块的语义完整性,避免重要信息被割裂。
  • 块大小选择器

    • 学习内容: 探讨不同块大小对 RAG 性能的影响,以及如何根据数据和任务特点选择合适的块大小。太小的块可能丢失上下文,太大的块可能引入噪音。
    • 核心概念: 块大小是一个重要的超参数,需要权衡。
  • 命题切分

    • 学习内容: 将文档分解为更细粒度的“命题”(即表达单一事实或观点的断言)。这有助于更精确地匹配查询中的具体信息点。LLM 通常用于从文本中提取命题。
    • 核心概念: 以事实为单位进行检索,提高检索精度。

阶段三:增强上下文和查询

目标: 学习如何通过改进上下文信息和用户查询来提升 RAG 效果。

  • 上下文丰富 RAG

    • 学习内容: 在检索到相关的文本块后,如何通过添加其周围的文本(例如,前后的句子或段落)来丰富上下文,为 LLM 提供更全面的信息。
    • 核心概念: 检索到的块可能只是答案的一部分,补充上下文有助于理解。
  • 上下文块头 RAG

    • 学习内容: 利用文档的结构信息(如标题、章节名)来为文本块添加元数据或“头部信息”。这有助于 LLM 更好地理解块的来源和主题。
    • 核心概念: 结构化信息可以指导 LLM 的理解。
  • 文档增强 RAG

    • 学习内容: 在索引之前,使用 LLM 对原始文档进行增强,例如生成摘要、提取关键词、生成潜在问题等,并将这些增强信息与原始文本块一起索引。
    • 核心概念: 预处理文档以提高检索信号。
  • 查询转换

    • 学习内容: 用户查询可能不总是最优的检索形式。此技术涉及使用 LLM 对用户查询进行转换,例如:

      • 查询重写 (Query Rewriting): 改进查询的清晰度和具体性。
      • 子查询生成 (Sub-query Generation): 将复杂查询分解为多个子查询,分别检索后再合并结果。
      • 假设性文档嵌入 (Hypothetical Document Embeddings - HyDE):
    • 核心概念: 优化查询以匹配知识库中的文档。

  • 假设性文档嵌入 (HyDE) RAG

    • 学习内容: 首先让 LLM 根据用户查询生成一个“假设性”的答案或文档。然后,将这个假设性文档嵌入,并用其嵌入向量在向量数据库中进行检索。其思想是,一个好的答案的嵌入向量应该与包含该答案的真实文档的嵌入向量相似。
    • 核心概念: 通过生成一个理想答案的“原型”来指导检索。

阶段四:优化和提炼检索结果

目标: 学习如何对初步检索到的结果进行排序和筛选,以提高最终提供给 LLM 的上下文质量。

  • 重排器 (Re-ranker)

    • 学习内容: 初步检索(通常基于向量相似性)可能返回大量文档,其中一些可能并不那么相关。重排器使用更复杂的模型(如交叉编码器 Cross-Encoders)对初步检索到的文档列表进行重新排序,将最相关的文档排在前面。
    • 核心概念: 两阶段检索,先快后精,提高最终上下文的质量。
  • 上下文压缩

    • 学习内容: 即使是相关的文档块,也可能包含一些与当前查询无关的信息。上下文压缩技术尝试从检索到的文档块中仅提取与查询最相关的部分,或者过滤掉不相关的部分,从而减少噪音并缩短上下文长度。
    • 核心概念: 精简上下文,只保留最精华的部分。

阶段五:高级 RAG 架构和技术

目标: 探索更复杂、更智能的 RAG 系统设计。

  • 反馈循环 RAG

    • 学习内容: 如何将用户反馈(例如,对答案的评分、修正)或自动评估信号整合到 RAG 系统中,以持续改进检索和生成组件的性能。
    • 核心概念: 让 RAG 系统能够从经验中学习和进化。
  • 自适应 RAG

    • 学习内容: 设计能够根据查询的类型、难度或知识库的特点动态调整其检索策略或生成参数的 RAG 系统。例如,对于简单查询可能使用简单检索,对于复杂查询则激活更高级的模块(如查询分解、多跳检索)。
    • 核心概念: 智能化地选择合适的 RAG 策略。
  • 自省式 RAG (Self-RAG)

    • 学习内容: 一种让 LLM 自行决定何时需要检索、检索什么内容以及如何使用检索到的信息来生成和反思答案的框架。它通过特殊的“反思令牌 (reflection tokens)”来控制生成过程,并评估检索内容的实用性。
    • 核心概念: 赋予 LLM 更大的自主权来控制 RAG 流程。
  • 多模态 RAG

    • 学习内容: 将 RAG 的思想扩展到处理多种数据模态(如文本、图像、表格)。这可能涉及使用多模态嵌入模型,以及能够处理和融合来自不同来源的多模态信息的检索和生成组件。
    • 核心概念: 超越纯文本,处理更丰富的数据类型。
  • 融合 RAG (例如,Reciprocal Rank Fusion - RRF)

    • 学习内容: 当使用多种检索方法(例如,基于稀疏向量的 BM25 和基于密集向量的相似性搜索)或从多个知识源检索时,如何有效地融合它们的排序结果,以产生一个综合的、更优的排序列表。RRF 是一种常用的融合算法。
    • 核心概念: 集各家之长,提高检索的鲁棒性和覆盖面。
  • 知识图谱 RAG

    • 学习内容: 利用知识图谱 (Knowledge Graphs) 作为 RAG 的外部知识源。知识图谱以结构化的方式存储实体和关系,可以进行更精确和多跳的推理检索。
    • 核心概念: 结合结构化知识进行更深层次的理解和推理。
  • 层级 RAG

    • 学习内容: 利用文档或知识库中的层级结构(如章节-小节-段落,或类别-子类别)来指导检索过程。例如,先在高层级定位相关区域,再在低层级进行精细检索。
    • 核心概念: 利用结构信息缩小搜索范围,提高效率和准确性。
  • 纠正性检索增强生成 (Corrective RAG - CRAG)

    • 学习内容: 一种旨在提高 RAG 鲁棒性的方法。它包含一个轻量级的检索评估器,用于评估检索到的文档的总体质量。如果评估结果不佳,系统会触发不同的知识检索策略(如网页搜索)或使用检索到的知识进行自我纠正,从而改善生成结果。
    • 核心概念: 对检索结果进行评估和动态纠正。
  • 基于强化学习的 RAG

    • 学习内容: 使用强化学习 (Reinforcement Learning - RL) 来优化 RAG 系统的某些组件,例如检索器 (retriever) 或生成器 (generator)。RL 代理可以通过与环境交互并接收奖励信号来学习最优策略。
    • 核心概念: 通过试错学习来端到端地优化 RAG 系统。
  • 结合知识图谱处理大数据的 RAG

    • 学习内容: 专门探讨在拥有海量数据和复杂知识图谱的场景下,如何设计和实现高效、可扩展的 RAG 系统。
    • 核心概念: RAG 在大规模数据和知识环境下的应用和挑战。

阶段六:评估与选择

目标: 学习如何评估不同的 RAG 策略并为特定应用选择最佳方案。

  • 最佳 RAG 发现器

    • 学习内容: 评估 RAG 系统性能的指标(如答案相关性、准确性、忠实度、上下文利用率等)和评估框架(如 RAGAS, ARES)。它也可能提供一个比较不同 RAG 技术组合效果的实验流程。
    • 核心概念: 理解如何量化 RAG 系统的表现,并根据评估结果进行迭代优化。

4. 学习tips

  • 动手实践: 理论学习很重要,但更重要的是亲自动手运行这些 Notebook 中的代码。尝试修改参数、替换数据、观察结果变化。
  • 阅读相关论文: 对于 Notebook 中提到的高级技术(如 Self-RAG, CRAG, HyDE),查找并阅读相关的研究论文,可以帮助你更深入地理解其背后的原理。
  • 从小处着手: 从简单开始,确保完全理解基础 RAG 的每个步骤,然后再逐步学习更复杂的技术。
  • 关注评估: 学习如何评估你的 RAG 系统。没有评估,就无法知道哪种技术组合是最好的。
  • 保持好奇: RAG 领域发展迅速,不断有新的技术和方法涌现。保持学习的热情,关注最新的研究进展。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐