988 lines
68 KiB
Markdown
988 lines
68 KiB
Markdown
# 1
|
||
|
||
你是资深的AI开发工程师。
|
||
我是大学里人工智能系的主任,我准备做一个“RAG”实战演练PPT,作为大学里面给计算机相关本科生的一次或多次讲座。
|
||
这个课程应该偏应用和实战,少一些理论,作为学生能上手的指导。
|
||
我准备的提纲如下,分为四部分:
|
||
1. **什么是RAG**
|
||
介绍接触大模型的5种路径,从直接用、到RAG、再到Lora、Fine Tuning和训练。
|
||
介绍RAG的本质——提示词。
|
||
介绍提示词的一些基本原则、方针。
|
||
介绍RAG的一般性过程概念:Chunk、Embedding、向量数据库、实现RAG流程
|
||
2. **如何搭建RAG**
|
||
利用Dify快速搭建RAG。过程中介绍RAG的一些重要概念、比如Chunk大小、Tokens,ReRank等等。
|
||
介绍Dify的优缺点,想要自行控制,还得写程序,可以利用已有的一些框架,如RAGFlow、LangChain等等。
|
||
3. **从Chunk**
|
||
介绍具体如何划分Chunk,在不同的场景Chunk如何划分,基于大小、还是语义,还是多种结合。
|
||
介绍为了好的Chunk,如何做元数据,引出树形结构、图式结构。
|
||
4. **到召回率**
|
||
介绍作为一个好的工程,需要可以严格测试召回率,这个是迭代的基础。
|
||
介绍如何搭建一个测试召回率的框架。
|
||
介绍从意图识别、到Chunk、到Rerank,再到召回率的完整工程工作流和框架。
|
||
|
||
对于我的这个提纲,你有什么建议和补充?
|
||
|
||
主任,您好!
|
||
|
||
非常荣幸能以AI开发工程师的身份,为您的RAG实战演练课程提供建议。您的这个提纲结构非常棒,逻辑清晰,从宏观到微观,从入门到进阶,非常符合一个实战课程的设计思路。特别是最后一部分“到召回率”,直接切中了RAG从“能用”到“好用”的关键,这是很多入门教程里缺失的,足见您的专业和远见。
|
||
|
||
基于您的提纲,我将从一个**资深工程师的视角**,提供一些可以**增强实战性、前瞻性和工程价值**的补充和细化建议。
|
||
|
||
---
|
||
|
||
### 整体建议
|
||
|
||
您的课程已经很偏向应用和实战,我的建议旨在进一步加强这一点:
|
||
|
||
1. **贯穿一个核心案例**:建议从头到尾使用一个统一、具体的案例。比如“为XX大学官网做一个智能问答机器人”或“为某本经典AI教材(如“花书”)做一个学习助手”。这样,从Chunk划分、元数据设计到召కి率测试,所有环节都能围绕这个案例展开,学生的体感会更连贯、更真实。
|
||
2. **强调“权衡”(Trade-off)思想**:在工程实践中,不存在完美的“银弹”。在介绍每个技术点时,都可以引导学生思考其背后的权衡。例如,Chunk越大上下文越全,但噪声也可能越多;ReRank效果好,但增加了延迟和成本。培养学生的工程思维至关重要。
|
||
3. **提供代码蓝图(Code Blueprint)**:既然是实战课,可以为每个关键环节提供一个“最小可用代码示例”的蓝图。不一定需要学生当场写,但可以展示出来,并提供课后源码,让他们知道“原来实现这个功能只需要这几十行代码”,极大地降低心理门槛。
|
||
|
||
---
|
||
|
||
### 对各部分的具体建议和补充
|
||
|
||
#### **第一部分:什么是RAG**
|
||
|
||
您的提纲已经很好了,我建议增加两个视角,让学生一开始就建立更全面的认知。
|
||
|
||
* **补充1:为什么要用RAG?—— RAG与微调(Fine-tuning)的核心取舍**
|
||
* 可以在您介绍5种路径时,专门用一张图或一个表格来清晰对比RAG和微调。这是工程师在项目中首先要做的技术选型。
|
||
* **对比维度**:
|
||
* **知识更新**:RAG(易,只需更新数据库)、微调(难,需重新训练)
|
||
* **事实可追溯性/可解释性**:RAG(强,可引用原文)、微调(弱,黑盒)
|
||
* **幻觉问题**:RAG(显著缓解)、微调(依然存在)
|
||
* **成本**:RAG(开发和推理成本)、微调(高昂的训练成本)
|
||
* **特定技能/风格学习**:RAG(不擅长)、微调(擅长)
|
||
* **结论**:RAG是“开卷考试”,微调是“深度内化”。对于知识密集型、需要高时效性和准确性的问答场景,RAG是首选。
|
||
|
||
* **补充2:RAG的核心循环图(The Core Loop of RAG)**
|
||
* 在介绍完概念后,立即展示一张清晰、生动的**核心工作流图**。这张图将在整个课程中反复出现。
|
||
* **图示**:用户问题 → **[1. 查询处理]** → 向量化 → **[2. 向量检索]** → 获取相关文档块 → **[3. 上下文增强]** → 组合成Prompt → **[4. LLM生成答案]** → 最终答案。
|
||
* 这能帮助学生建立一个清晰的心理模型(Mental Model)。
|
||
|
||
#### **第二部分:如何搭建RAG**
|
||
|
||
Dify是非常好的起点,能让学生快速获得成就感。在此基础上,可以做一些延伸,引导他们走向更专业的开发。
|
||
|
||
* **补充1:引入RAG领域的“瑞士军刀”—— LlamaIndex**
|
||
* 在介绍完LangChain之后,强烈建议花5-10分钟介绍**LlamaIndex**。
|
||
* **定位**:LangChain是一个通用的LLM应用开发框架,而LlamaIndex是**为RAG而生**的框架,对数据索引、检索和评估的优化更加专注和深入。
|
||
* **举例**:展示用LlamaIndex实现一个基础RAG应用的极简代码(通常比LangChain更简洁),让学生感知到它的便捷性。
|
||
|
||
* **补充2:一个极简的“本地RAG”代码实战**
|
||
* 为了让学生彻底摆脱对平台的依赖,可以设计一个“50行Python代码实现你的第一个RAG”的环节。
|
||
* **技术栈建议**:
|
||
* **Embedding模型**:使用开源的`sentence-transformers`库加载一个本地模型(如 `moka-ai/m3e-base`,对中文友好)。
|
||
* **向量数据库**:使用本地的`FAISS`或`ChromaDB`,无需服务器。
|
||
* **LLM**:调用任意一个开放的、有免费额度的LLM API(如Kimi, DeepSeek, ZhipuAI等)。
|
||
* 这个环节能极大地增强学生的自信心,让他们明白RAG的底层逻辑并不神秘。
|
||
|
||
#### **第三部分:从Chunk**
|
||
|
||
这是RAG的核心技术点之一,您的提纲很专业。可以进一步丰富策略和案例。
|
||
|
||
* **补充1:可视化不同的Chunk策略**
|
||
* 用一段真实的文本(比如新闻、论文摘要),**可视化**展示不同策略的切分结果。
|
||
* **固定大小**:简单粗暴,可能切断语义。
|
||
* **递归字符**:按不同分隔符(`\n\n`, `\n`, ` `)递归切分,更智能。
|
||
* **语义/基于Token**:使用`spaCy`或`NLTK`按句子切分,或者用`Tiktoken`按Token数量切分。
|
||
* **强调“Chunk Overlap”(块重叠)**:这是一个简单但极其有效的技巧,可以避免在块边界丢失上下文。可以图示说明。
|
||
|
||
* **补充2:元数据(Metadata)的威力——实现“混合搜索”**
|
||
* 您提到了元数据,可以进一步强调它的实战价值:**元数据是实现“前置过滤(Pre-filtering)”和“混合搜索”的关键**。
|
||
* **实战案例**:假设你在为大学官网做问答。你的文档有PDF(招生简章)、HTML(新闻)、JSON(课程列表)。
|
||
* **元数据可以包括**:`{ "source": "招生简章2024.pdf", "page": 10, "publish_date": "2024-05-01", "category": "本科招生" }`
|
||
* **用户提问**:“今年本科招生的最新政策是什么?”
|
||
* **RAG流程**:
|
||
1. **意图识别**:识别出关键词“本科招生”、“最新”。
|
||
2. **元数据过滤**:在向量搜索**之前**,先筛选出`category == "本科招生"`的文档,并按`publish_date`降序排列。
|
||
3. **向量搜索**:只在筛选出的小范围内进行向量搜索。
|
||
* 这个过程不仅**极大提高了召回的精准度**,还**降低了搜索范围,提升了效率**。
|
||
|
||
#### **第四部分:到召回率**
|
||
|
||
这部分是课程的点睛之笔,是区分“玩具”和“产品”的关键。
|
||
|
||
* **补充1:定义更全面的评估指标(不止召回率)**
|
||
* 在工程实践中,我们关注一个指标矩阵。建议引入**RAG评估的四大黄金指标**:
|
||
1. **Context Precision (上下文精确率)**:检索到的上下文,有多少是与问题真正相关的?(衡量检索质量)
|
||
2. **Context Recall (上下文召回率)**:相关的上下文,有多少被成功检索出来了?(衡量检索全面性)
|
||
3. **Faithfulness (答案忠实度)**:生成的答案,是否完全基于给定的上下文,没有捏造?(衡量幻觉)
|
||
4. **Answer Relevancy (答案相关性)**:生成的答案,是否切中了用户的问题?(衡量最终效果)
|
||
|
||
* **补充2:介绍自动化评估框架——RAGAs & LLM-as-a-Judge**
|
||
* 如何高效评估上述指标?手动标注太慢。可以介绍当前流行的自动化评估方法:
|
||
* **RAGAs框架**:这是一个专门用于评估RAG管道的开源框架,可以用LLM来自动计算上述大部分指标。可以展示一个简单的RAGAs使用案例。
|
||
* **LLM-as-a-Judge(以模型为裁判)**:核心思想是用一个强大的LLM(如GPT-4)来评判RAG系统的输出。比如,给GPT-4同时输入“问题”、“检索到的上下文”和“生成的答案”,然后问它:“这个答案是否忠实于上下文?”。
|
||
|
||
* **补充3:一个完整的迭代优化闭环(Closing the Loop)**
|
||
* 将您的“完整工程工作流”具象化为一个**迭代闭环图**。
|
||
* **图示**:
|
||
1. **搭建基线系统(Baseline)**:用最简单的方法先跑通。
|
||
2. **构建评估集(Evaluation Set)**:人工或半自动生成一批高质量的“问题-标准答案”对。
|
||
3. **执行评估**:用自动化框架跑一遍评估集,得到基线分数。
|
||
4. **分析瓶颈**:是召回率低(Context Recall)?还是精确率差(Context Precision)?还是答案有幻觉(Faithfulness)?
|
||
5. **针对性优化**:
|
||
* 召回率低 → 优化Chunk策略、尝试多路召回(如BM25+向量)。
|
||
* 精确率差 → 引入ReRank、优化元数据过滤。
|
||
* 幻觉 → 优化Prompt模板,让LLM更严格地依据上下文回答。
|
||
6. **重复步骤3-5**,直到指标满足要求。
|
||
* 这个闭环是所有AI工程师日常工作的真实写照。
|
||
|
||
---
|
||
|
||
### 新增一个部分的建议:**第五部分:从实战到生产**
|
||
|
||
如果时间和篇幅允许,可以增加一个简短的展望部分,告诉学生一个RAG项目在真实工业环境中还需要考虑什么,这将极大开阔他们的视野。
|
||
|
||
* **成本与延迟监控 (Cost & Latency)**:如何计算一次RAG查询的成本(Embedding, Vector DB, LLM API)?如何监控和优化查询的端到端延迟?
|
||
* **可观测性 (Observability)**:如何记录每一次查询、召回的文档、最终答案,以便于排查问题?
|
||
* **安全性与隐私 (Security & Privacy)**:如果处理的是内部敏感文档,如何做权限控制?如何防止Prompt注入攻击?
|
||
* **用户反馈循环 (Human-in-the-Loop)**:在产品中加入“顶/踩”按钮,收集用户反馈,持续优化知识库和模型。
|
||
|
||
---
|
||
|
||
主任,您的提纲已经非常出色,我的建议只是锦上添花。相信经过您的精心准备,这绝对会是一场让学生们收获满满、激发浓厚兴趣的精彩讲座。如果后续有任何需要讨论的细节,我随时待命。预祝课程圆满成功!
|
||
|
||
---
|
||
|
||
# 2
|
||
|
||
**采纳你的整体建议:**
|
||
|
||
1. **贯穿一个核心案例**:本身我就计划打造一个“强哥的徒弟”智能体,这个智能体将会使用我以往的文章作为知识库,整个案例都围绕这个知识库为核心,也会补充一点点其他场景的。
|
||
2. **强调“权衡”(Trade-off)思想**:是的,对于工程来讲,没有最好只有适合,这个我很赞同。
|
||
3. **提供代码蓝图(Code Blueprint)**:在PPT中只会有代码片段,但是会随着PPT提供工程代码和提示词。
|
||
|
||
你的补充意见也很有帮助。
|
||
|
||
**要求:**
|
||
1. 现在结合的你的补充意见,帮我梳理整体的PPT提纲文字稿。
|
||
2. 在输出之前,计划一下这个PPT多少页合适。
|
||
3. 然后开始输出每一页的具体提纲及内容,若不能一次输出完毕,请提示我输入继续,以便继续输出。
|
||
|
||
好的,主任。非常乐意为您效力。
|
||
|
||
我们来一起规划并撰写这份含金量十足的PPT提纲。
|
||
|
||
---
|
||
|
||
### **第一步:PPT页数规划**
|
||
|
||
一个成功的技术讲座,节奏至关重要。对于本科生来说,内容既要“解渴”,又不能“淹死人”。
|
||
|
||
* **单次讲座(2-3小时)**:建议总页数在 **40-50页** 左右。这个页数可以保证每个知识点有足够的时间展开,并且有互动和演示的余地。
|
||
* **系列讲座(2次,每次1.5小时)**:可以拆分为“基础篇”(1-2部分)和“进阶篇”(3-4部分),每部分约25页。这样学生有时间消化和实践。
|
||
|
||
我们将按照**45页**左右的容量来规划,这样既能覆盖所有核心内容,也为您的临场发挥和案例演示留下了充足空间。
|
||
|
||
---
|
||
|
||
### **第二步:整体PPT提纲文字稿**
|
||
|
||
以下是为您精心梳理的PPT提纲,每一页都包含了**内容核心**和**视觉呈现/备注**,旨在让PPT不仅信息量大,而且生动、易于理解。
|
||
|
||
---
|
||
|
||
#### **开场部分 (4页)**
|
||
|
||
**幻灯片 1: 封面页**
|
||
* **标题**: 《RAG实战演练:从零到一构建你的专属AI知识库》
|
||
* **副标题**: 主讲人:[您的姓名],人工智能系主任
|
||
* **视觉呈现/备注**: 背景用一张富有科技感的AI或神经网络图片。如果可能,放上“强哥的徒弟”的Logo或形象。
|
||
|
||
**幻灯片 2: 讲座目标与核心案例介绍**
|
||
* **内容核心**:
|
||
* 今天我们将做什么?—— 亲手揭秘并搭建一个强大的问答机器人。
|
||
* 我们的目标:不仅知道RAG是什么,更能动手搭建、评估和优化它。
|
||
* **核心案例**: 隆重介绍“强哥的徒弟”智能体。它的“大脑”就是我过往撰写的文章。我们将一步步教会它如何思考和回答。
|
||
* **视觉呈现/备注**: 左侧是目标列表,右侧是您的文章截图或列表,中间一个箭头指向一个可爱的机器人形象(“强哥的徒弟”)。
|
||
|
||
**幻灯片 3: 你将收获什么?(议程)**
|
||
* **内容核心**:
|
||
1. **宏观视野**: 理解RAG在AI大模型技术栈中的精准定位。
|
||
2. **快速上手**: 利用Dify等工具,10分钟搭建你的第一个RAG应用。
|
||
3. **深入核心**: 掌握RAG的灵魂——Chunk切分与元数据构建。
|
||
4. **工程思维**: 学会用数据评估和迭代你的RAG系统,从“能用”到“好用”。
|
||
5. **进阶展望**: 了解工业级RAG应用的挑战与方向。
|
||
* **视觉呈现/备注**: 使用一个阶梯或登山路径的图示,每一步对应一个议程点,从山脚到山顶。
|
||
|
||
**幻灯片 4: 一切从问题开始**
|
||
* **内容核心**:
|
||
* 大家用过ChatGPT,但它知道我们学校的校史吗?知道我上周写的关于AI Agent的文章吗?—— 不知道。
|
||
* 这就是大模型的“知识截止日期”和“私有知识盲区”问题。
|
||
* **引出思考**: 如何让大模型像一个“开卷考试”的学生,拿着我们的资料来回答问题?—— 这,就是RAG的起点。
|
||
* **视觉呈现/备注**: 一张图,左边是ChatGPT的Logo,右边是你们学校的校徽和您的文章截图,中间一个大大的问号。
|
||
|
||
---
|
||
|
||
### **第一部分: 什么是RAG (约10页)**
|
||
|
||
**幻灯片 5: 接触大模型的五种路径 (光谱图)**
|
||
* **内容核心**: 从“用户”到“炼丹师”的演进路径。
|
||
* **直接使用**: ChatGPT, Kimi (成本最低)
|
||
* **RAG**: 外挂知识库 (性价比最高)
|
||
* **Lora/PEFT**: 轻量化微调 (特定风格/任务)
|
||
* **Fine-Tuning**: 全量微调 (领域适配)
|
||
* **Pre-training**: 从零训练 (巨头游戏,成本最高)
|
||
* **视觉呈现/备注**: 用一个从左到右的光谱图或金字塔图,清晰展示技术深度、成本和灵活性的变化。突出RAG是“甜点位(Sweet Spot)”。
|
||
|
||
**幻灯片 6: RAG vs 微调:一个关键的技术选型**
|
||
* **内容核心**:
|
||
* **RAG = 开卷考试**: 知识在书本里(数据库),现场查阅。
|
||
* **微调 = 刻苦背书**: 知识融入大脑里(模型权重),凭记忆回答。
|
||
* **关键权衡 (Trade-off)**:
|
||
* 知识更新: RAG (易) vs 微调 (难)
|
||
* 事实溯源: RAG (可) vs 微调 (难)
|
||
* 幻觉问题: RAG (缓解) vs 微调 (存在)
|
||
* 成本投入: RAG (低) vs 微调 (高)
|
||
* **视觉呈现/备注**: 使用一个清晰的表格进行对比。用生动的图标(书本 vs 大脑)来辅助说明。
|
||
|
||
**幻灯片 7: RAG的本质 —— 更高级的提示词工程**
|
||
* **内容核心**:
|
||
* 普通Prompt: `你的问题`
|
||
* RAG的Prompt: `[相关资料1] [相关资料2] ... [你的问题]`
|
||
* **公式**: RAG = 检索 (Retrieval) + 带有上下文的生成 (Augmented Generation)
|
||
* 它的本质,就是用程序自动地、精准地为你的问题找到最相关的“上下文”,然后打包发给大模型。
|
||
* **视觉呈现/备注**: 用一个公式化的图示,展示一个简单的Prompt和一个被“增强”了的RAG Prompt的对比。
|
||
|
||
**幻灯片 8: 提示词基本原则 (CRITIC方针)**
|
||
* **内容核心**: 写好Prompt,是让RAG出好结果的基础。
|
||
* **C** (Context): 提供背景信息。
|
||
* **R** (Role): 指定角色。
|
||
* **I** (Instruction): 给出指令。
|
||
* **T** (Tone): 设定语气。
|
||
* **I** (Input): 明确输入。
|
||
* **C** (Constraint): 施加约束。(例如:请严格根据以上资料回答,如果资料没有,就说“不知道”)
|
||
* **视觉呈现/备注**: 用六个方格卡片,每个卡片介绍一个字母和其含义。
|
||
|
||
**幻灯片 9: RAG的核心工作流 (The Core Loop)**
|
||
* **内容核心**: 这张图我们将反复看到!
|
||
1. **Query**: 用户提问“强哥对AI工程师的职业发展有什么建议?”
|
||
2. **Retrieve**: 从“强哥的文章”知识库中,找到最相关的几篇文章片段。
|
||
3. **Augment**: 将找到的片段和原始问题,组合成一个新的Prompt。
|
||
4. **Generate**: LLM根据增强后的Prompt,生成最终答案,并可能附上引用来源。
|
||
* **视觉呈现/备注**: **这是本课程最重要的图之一**。用一个清晰的、带有编号的循环流程图展示。每个阶段都用“强哥的徒弟”的例子来标注。
|
||
|
||
**幻灯片 10-13: 核心概念拆解**
|
||
* **幻灯片 10: Chunk (数据块)**
|
||
* **是什么**: 将长文档切分成的、语义完整的小片段。
|
||
* **为什么**: LLM有上下文长度限制;精准定位知识。
|
||
* **类比**: 把一本书拆成一个个段落或知识点卡片。
|
||
* **视觉**: 一篇长文被切割成多个小块的示意图。
|
||
* **幻灯片 11: Embedding (向量嵌入)**
|
||
* **是什么**: 用一个数学向量(一串数字)来表示一个Chunk的语义。
|
||
* **为什么**: 让计算机能“理解”和“计算”文本的相似度。
|
||
* **类比**: 给每个知识点卡片一个独一无二的“语义GPS坐标”。
|
||
* **视觉**: “文本” -> [Embedding模型] -> `[0.1, 0.9, 0.3, ...]` 的流程图。
|
||
* **幻灯片 12: 向量数据库 (Vector Database)**
|
||
* **是什么**: 专门用于存储和高效检索Embedding向量的数据库。
|
||
* **为什么**: 能在亿万个“GPS坐标”中,瞬间找到离你最近的那几个。
|
||
* **类比**: 一个按“语义”而非“拼音”排序的超级图书馆。
|
||
* **视觉**: 一个三维空间中布满数据点,用户查询点进入后,迅速找到最近邻的几个点的动态图。
|
||
* **幻灯片 13: 总结与串联**
|
||
* **内容**: 我们如何准备“开卷考试”的“书本”?
|
||
* **流程**: 原始文档 -> **[切Chunk]** -> **[做Embedding]** -> **[存入向量数据库]**。这个过程叫“索引(Indexing)”,通常是离线完成的。
|
||
* **视觉**: 重复幻灯片9的核心工作流图,但重点高亮“检索”部分,并展示其内部的索引过程。
|
||
|
||
**幻灯片 14: 第一部分小结**
|
||
* **内容核心**:
|
||
* RAG是平衡成本与效果的优秀大模型应用范式。
|
||
* 其核心是“检索+生成”,本质是自动化的提示词工程。
|
||
* 我们已经理解了Chunk, Embedding, 向量数据库这些构建RAG的“乐高积木”。
|
||
* **视觉呈现/备注**: 用三个关键图标总结本章内容。
|
||
|
||
---
|
||
主任,以上是开场和第一部分的详细提纲。内容已经比较多了,为了保证输出质量和您的阅读体验,我先输出到这里。
|
||
|
||
**如果您觉得这个方向和细节程度符合您的要求,请输入“继续”,我将为您生成第二部分“如何搭建RAG”的详细提纲。**
|
||
|
||
---
|
||
|
||
# 3
|
||
|
||
这个方向和细节没有问题,请按照这个继续。
|
||
|
||
好的,主任。我们继续。
|
||
|
||
---
|
||
|
||
### **第二部分: 如何搭建RAG (约8页)**
|
||
|
||
**幻灯片 15: 从理论到实践:我们的工具箱**
|
||
* **内容核心**:
|
||
* 搭建RAG不一定要从零开始。社区已经为我们准备好了强大的工具。
|
||
* **快速原型层 (Low-code/No-code)**: Dify, Coze。特点:可视化、开箱即用、快速验证想法。
|
||
* **应用框架层 (Framework)**: LangChain, LlamaIndex。特点:代码驱动、高度灵活、生产级开发的首选。
|
||
* **本节课路径**: 先用Dify体验“一键RAG”,感受全流程;再了解框架,为更专业的开发铺路。
|
||
* **视觉呈现/备注**: 用一个金字塔图,底层是基础模型,中间是框架层,顶层是原型层。并附上各个工具的Logo。
|
||
|
||
**幻灯片 16: 实战演练(一): 使用Dify快速搭建“强哥的徒弟”**
|
||
* **内容核心**:
|
||
* **现场演示**: 引导学生打开Dify网站。
|
||
* **步骤1**: 创建应用,选择“问答机器人”模式。
|
||
* **步骤2**: 新建知识库,上传“强哥”的几篇代表性文章(PDF或TXT)。
|
||
* **步骤3**: 观察Dify的自动处理:分段、清洗、嵌入。
|
||
* **步骤4**: 关联知识库,开始提问!“强哥对AI产品经理的要求是什么?”
|
||
* **视觉呈现/备注**: 这一页是演示的引导页。简洁明了,列出1-2-3-4步。在讲解时,切换到浏览器进行Live Demo。
|
||
|
||
**幻灯片 17: Dify演示中的关键概念解析**
|
||
* **内容核心**: 结合Dify界面,讲解RAG的核心参数。
|
||
* **索引设置**:
|
||
* **分段方式 (Chunking Strategy)**: Dify提供了自动判断或固定长度等选项。这就是我们之前讲的Chunk。
|
||
* **分段大小 (Chunk Size)** & **分段重叠 (Chunk Overlap)**: 这是最重要的两个参数。现场调整一下,看看效果有何不同。(**权衡点**: Chunk太大,噪声多;太小,语义不完整)。
|
||
* **检索设置**:
|
||
* **Top-K**: 召回多少个最相关的Chunks?(**权衡点**: K越大,上下文越全,但成本和延迟也越高)。
|
||
* **Score Threshold**: 召回的Chunk相关性得分必须高于此阈值。用于过滤不相关的结果。
|
||
* **提示词 (Prompt Template)**: Dify已经内置了模板,展示这个模板,让学生看到`{context}`和`{query}`是如何被嵌入的。
|
||
* **视觉呈现/备注**: Dify界面的截图,用红色框和箭头标注出上述关键参数的位置,并附上简短解释。
|
||
|
||
**幻灯片 18: ReRank (重排): 让召回更精准**
|
||
* **内容核心**:
|
||
* **问题**: 向量检索(相似度搜索)召回的Top-K个结果,可能存在“形式相似但语义不符”的情况。
|
||
* **解决方案**: 引入一个“精排”模型(ReRanker)。
|
||
* **工作流程**: 向量检索(粗排)召回20个候选 -> ReRank模型对这20个进行更精细的打分和排序 -> 选出最精准的Top-3个给LLM。
|
||
* **类比**: 搜索引擎先用关键词快速找100篇文章,你再花点时间一篇篇看标题,找出最想读的3篇。
|
||
* **视觉呈现/备注**: 一个清晰的流程图: `Query` -> `Vector Search (Top-20)` -> `ReRanker Model` -> `Final Context (Top-3)` -> `LLM`。
|
||
|
||
**幻灯片 19: Dify的优缺点与“下一步”**
|
||
* **内容核心**:
|
||
* **优点**:
|
||
* 极速搭建,所见所得。
|
||
* 非技术人员友好。
|
||
* 内置了完整的工程链路。
|
||
* **缺点**:
|
||
* **控制力有限**: Chunk策略、Embedding模型、ReRanker模型等选择有限。
|
||
* **黑盒**: 很多内部优化细节无法干预。
|
||
* **扩展性**: 难以集成复杂的自定义逻辑(如混合搜索、图RAG)。
|
||
* **结论**: Dify是绝佳的“原型验证”工具。但要打造高性能、可定制的生产级应用,我们需要深入代码。
|
||
* **视觉呈现/备注**: 一个左右分栏的表格,清晰列出优缺点。
|
||
|
||
**幻灯片 20: 走向专业开发: RAG框架概览**
|
||
* **内容核心**:
|
||
* **LangChain**: RAG领域的“瑞士军刀”。功能全面,社区庞大,链式(Chains)思想强大。适合构建复杂的、包含多步骤的LLM应用。
|
||
* **LlamaIndex**: 为RAG而生。在数据索引、检索和评估方面更专注、更深入。尤其擅长处理复杂文档结构(如表格、图表)。
|
||
* **RAGFlow**: 新兴的、对非结构化数据解析特别友好的开源RAG引擎。
|
||
* **我们的建议**: 初学者可以从LlamaIndex开始,它的抽象层次更高,代码更简洁,专注于把RAG这一件事做到极致。
|
||
* **视觉呈现/备注**: 三个框架的Logo和一句话定位。可以展示一段用LlamaIndex实现基础RAG的极简代码(少于20行),让学生感受其简洁性。
|
||
|
||
**幻灯片 21: 代码蓝图:用LlamaIndex实现一个最小RAG**
|
||
* **内容核心**: 展示一段Python代码片段,实现Dify的核心流程。
|
||
```python
|
||
# 1. 加载文档
|
||
documents = SimpleDirectoryReader("./data").load_data() # data里是“强哥的文章”
|
||
# 2. 构建索引 (自动完成Chunk, Embedding, 存储)
|
||
index = VectorStoreIndex.from_documents(documents)
|
||
# 3. 创建查询引擎
|
||
query_engine = index.as_query_engine()
|
||
# 4. 查询!
|
||
response = query_engine.query("强哥对AI工程师的职业发展有什么建议?")
|
||
print(response)
|
||
```
|
||
* **视觉呈现/备注**: 一个清晰的代码块,配上注释。强调这几行代码就完成了一个RAG系统的核心逻辑,极大地降低学生的心理门槛。
|
||
|
||
**幻灯片 22: 第二部分小结**
|
||
* **内容核心**:
|
||
* 我们亲手用Dify搭建了一个RAG应用,并理解了Chunk大小、Top-K、ReRank等核心参数的意义。
|
||
* 我们认识到Low-code工具的便捷与局限。
|
||
* 我们了解了LangChain和LlamaIndex等专业框架,并看到了用代码实现RAG是如此直接。
|
||
* **视觉呈现/备注**: 用三个关键图标总结本章内容:Dify Logo、控制面板图标、代码图标。
|
||
|
||
---
|
||
|
||
### **第三部分: 从Chunk (深入RAG的灵魂) (约9页)**
|
||
|
||
**幻灯片 23: 一切优化的起点: 垃圾进,垃圾出**
|
||
* **内容核心**:
|
||
* RAG系统的天花板,由知识库的质量决定。
|
||
* 如果LLM拿到的上下文(Chunks)是破碎、错误、充满噪声的,那么再强的LLM也无法生成好的答案。
|
||
* **核心思想**: Chunking的质量,直接决定了检索(Retrieval)的上限。
|
||
* **视觉呈现/备注**: 一张图,左边是混乱、破碎的文档块进入一个漏斗,右边出来的是一个困惑的LLM和一个错误的答案。
|
||
|
||
**幻灯片 24: Chunking策略大比拼(一): 基础策略**
|
||
* **内容核心**:
|
||
* **固定大小 (Fixed Size)**: 最简单,但容易切断句子,破坏语义。
|
||
* **递归字符 (Recursive Character)**: 按`\n\n`, `\n`, ` `等分隔符递归切分,更智能,是LangChain等框架的默认推荐。
|
||
* **按Token数量 (Token-based)**: 使用`Tiktoken`等工具,确保每个Chunk不超过模型的Token限制,成本控制更精准。
|
||
* **视觉呈现/备注**: 用同一段文本(例如,“强哥”文章里的一段),**可视化**展示三种不同策略的切分结果。用不同颜色标记出被切断的句子,直观展示优劣。
|
||
|
||
**幻灯片 25: Chunking策略大比拼(二): 进阶策略**
|
||
* **内容核心**:
|
||
* **语义切分 (Semantic Chunking)**:
|
||
* **思路**: 不按长度,按“语义的突变”来切分。计算句子之间的Embedding相似度,当相似度低于某个阈值时,认为是一个新的语义块的开始。
|
||
* **优点**: 保证了每个Chunk内部的语义高度一致。
|
||
* **基于文档结构 (Layout-aware)**:
|
||
* **场景**: 处理PDF、PPT、Markdown等富文本格式。
|
||
* **思路**: 不仅看文本,还看标题、列表、表格等结构。一个标题和它下面的段落应该属于一个Chunk。一个表格应该被完整地解析和索引。
|
||
* **视觉呈现/备注**: 展示一张PDF截图(有标题、段落、图片),旁边是理想的Chunking结果(标题和段落被分在一起)。
|
||
|
||
**幻灯片 26: 案例分析: “强哥的徒弟”应该如何切分?**
|
||
* **内容核心**:
|
||
* “强哥的文章”大多是Markdown格式,有明确的`# H1`, `## H2`标题。
|
||
* **最佳策略**: 使用Layout-aware + 递归字符的混合策略。
|
||
1. 优先按Markdown的标题结构进行大的切分。
|
||
2. 如果某个标题下的内容过长,再使用递归字符策略进行二次切分。
|
||
* 这样既保证了宏观结构的完整性,又避免了单个Chunk过大的问题。
|
||
* **视觉呈现/备注**: 左边是Markdown原文,右边是切分后的Chunk列表,每个Chunk都带着它的父标题信息。
|
||
|
||
**幻灯片 27: 元数据(Metadata)的威力: 让Chunk会“说话”**
|
||
* **内容核心**:
|
||
* Chunk不仅应该有内容,还应该有“身份证”。这个身份证就是元数据。
|
||
* **为“强哥的文章”Chunk添加元数据**:
|
||
```json
|
||
{
|
||
"content": "AI工程师需要具备工程能力、算法能力...",
|
||
"metadata": {
|
||
"source": "强哥谈AI工程师的成长.md",
|
||
"publish_date": "2023-10-20",
|
||
"category": "职业发展",
|
||
"title": "核心能力要求",
|
||
"url": "http://qiang.com/xxx"
|
||
}
|
||
}
|
||
```
|
||
* **视觉呈现/备注**: 一个代码框,清晰展示一个带有丰富元数据的Chunk结构。
|
||
|
||
**幻灯片 28: 元数据的实战应用: 混合搜索 (Hybrid Search)**
|
||
* **内容核心**:
|
||
* **问题**: “介绍一下强哥最近关于职业发展的文章”
|
||
* **纯向量搜索的困境**: “最近”这个时间概念很难被向量化。
|
||
* **混合搜索流程**:
|
||
1. **元数据过滤 (Pre-filtering)**: 先在数据库中筛选出 `category == "职业发展"` 的所有Chunks。
|
||
2. **排序 (Sorting)**: 将筛选出的结果按 `publish_date` 降序排列。
|
||
3. **向量搜索 (Vector Search)**: 在这个小得多的、高度相关的子集里,再进行向量搜索,找到语义最匹配的内容。
|
||
* **结论**: 元数据 + 向量搜索 = 精确制导!
|
||
* **视觉呈现/备注**: 一个漏斗图,大量Chunks从上方进入,经过“元数据过滤”漏斗后,只剩下少量候选,再进入“向量搜索”环节。
|
||
|
||
**幻灯片 29-30: 更高级的索引结构**
|
||
* **幻灯片 29: 树形结构 (Tree Index)**
|
||
* **思路**: 创建一个“摘要树”。叶子节点是原始Chunk,父节点是子节点们的摘要。
|
||
* **查询过程**: 从根节点开始,比较查询与摘要的相似度,逐层向下导航,直到找到最相关的叶子节点(原始Chunk)。
|
||
* **优点**: 适合需要从全局到局部进行探索的查询。
|
||
* **视觉**: 一个清晰的树形结构图。
|
||
* **幻灯片 30: 图谱结构 (Graph Index)**
|
||
* **思路**: 将Chunks视为节点,Chunk之间的关系(如引用、 последовательность)作为边,构建一个知识图谱。
|
||
* **查询过程**: RAG可以同时利用语义相似性(向量)和图关系(连接)进行检索。
|
||
* **优点**: 能发现更深层次、更复杂的关系,回答“A和B有什么关系”这类问题。
|
||
* **视觉**: 一个节点和连线组成的网络图。
|
||
|
||
**幻灯片 31: 第三部分小结**
|
||
* **内容核心**:
|
||
* Chunk的质量是RAG系统的基石。
|
||
* 我们学习了从基础到进阶的多种Chunking策略,并知道如何为特定场景选择合适的策略。
|
||
* 我们掌握了利用元数据实现混合搜索这一强大技术。
|
||
* 我们了解了树和图等更高级的索引结构,为解决复杂问题提供了思路。
|
||
* **视觉呈现/备注**: 四个图标总结:切割图标、元数据标签图标、树形图图标、网络图图标。
|
||
|
||
---
|
||
主任,第三部分已完成。这部分技术深度较高,通过丰富的可视化和案例,可以帮助学生更好地理解。
|
||
|
||
**如果满意,请指示“继续”,我将为您撰写最后压轴的第四部分“到召回率”和新增的第五部分“从实战到生产”。**
|
||
|
||
---
|
||
|
||
# 4
|
||
|
||
继续。
|
||
|
||
好的,主任。我们进入最后,也是最能体现工程价值的部分。
|
||
|
||
---
|
||
|
||
### **第四部分: 到召回率 (从能用到好用) (约9页)**
|
||
|
||
**幻灯片 32: 从“感觉不错”到“数据说话”**
|
||
* **内容核心**:
|
||
* 我们搭建的“强哥的徒弟”现在能回答问题了,但它回答得好吗?我们如何知道一次优化(比如调整Chunk大小)是变好了还是变坏了?
|
||
* **工程师的座右铭**: If you can't measure it, you can't improve it. (如果你无法衡量它,你就无法改进它。)
|
||
* 我们需要一套严格的评估框架,来量化RAG系统的表现。
|
||
* **视觉呈现/备注**: 一张图,左边是一个人凭感觉说“好像变好了”,右边是一张带有具体指标和数据的仪表盘。中间一个箭头,写着“工程化的飞跃”。
|
||
|
||
**幻灯片 33: 构建你的“考卷”:评估数据集**
|
||
* **内容核心**:
|
||
* 要考试,先要有考卷。评估数据集就是RAG系统的“高考模拟题”。
|
||
* **组成**: 一系列高质量的 (问题, 理想答案, 引用来源) 对。
|
||
* **问题 (Question)**: "强哥认为AI工程师最重要的能力是什么?"
|
||
* **理想答案 (Ground Truth Answer)**: "他认为最重要的是工程落地能力、持续学习能力和沟通协作能力。"
|
||
* **引用来源 (Ground Truth Contexts)**: 指向“强哥的文章”中具体包含这些信息的段落ID或内容。
|
||
* **如何构建**: 初期可以手动撰写20-50个典型问题。也可以用LLM辅助生成(例如,让GPT-4阅读一篇文章,然后提出5个相关问题)。
|
||
* **视觉呈现/备注**: 一个表格,清晰展示 (Question, Ground Truth Answer, Ground Truth Contexts) 的列。
|
||
|
||
**幻灯片 34: RAG评估的四大黄金指标**
|
||
* **内容核心**: 我们不仅关心最终答案,更关心过程的对错。
|
||
1. **Faithfulness (答案忠实度)**: 答案是否完全基于给定的上下文?(衡量幻觉)
|
||
2. **Answer Relevancy (答案相关性)**: 答案是否精准地回答了用户的问题?(衡量效果)
|
||
3. **Context Precision (上下文精确率)**: 检索到的上下文中,有多少是真正相关的?(衡量噪声)
|
||
4. **Context Recall (上下文召回率)**: 所有相关的上下文中,有多少被我们成功召回了?(衡量遗漏)
|
||
* **视觉呈现/备注**: 四个卡片式设计,每个卡片介绍一个指标、其含义和一个简单例子。这页非常重要,需要清晰明了。
|
||
|
||
**幻灯片 35: 谁来打分?自动化评估框架**
|
||
* **内容核心**:
|
||
* 手动评估费时费力。我们可以请一个更强大的“老师”来自动打分。
|
||
* **方法1: LLM-as-a-Judge (以模型为裁判)**
|
||
* **原理**: 给GPT-4等强模型同时提供 `问题`、`检索到的上下文`、`生成的答案`,然后让它根据标准进行打分(例如,0-10分制)。
|
||
* **示例Prompt**: “下面是一个问题和RAG系统生成的答案,以及它参考的上下文。请评估这个答案的忠实度,如果答案完全基于上下文,请输出1,否则输出0。”
|
||
* **方法2: 开源评估框架 (RAGAs)**
|
||
* **介绍**: RAGAs是一个专门用于评估RAG管道的Python库,它已经内置了计算四大黄金指标的逻辑。
|
||
* **优点**: 标准化、可复现、社区支持。
|
||
* **视觉呈现/备注**: 一个流程图,展示`RAG Output` -> `Evaluation Prompt` -> `GPT-4 (Judge)` -> `Score`。旁边附上RAGAs的Logo和GitHub链接。
|
||
|
||
**幻灯片 36: 代码蓝图:用RAGAs进行一次评估**
|
||
* **内容核心**: 展示一段用RAGAs进行评估的Python代码片段。
|
||
```python
|
||
from ragas import evaluate
|
||
from ragas.metrics import faithfulness, answer_relevancy, context_recall, context_precision
|
||
from datasets import Dataset
|
||
|
||
# 准备评估数据集 (通常从文件中加载)
|
||
dataset = Dataset.from_dict({
|
||
"question": ["你的问题1", "你的问题2"],
|
||
"answer": ["RAG系统生成的答案1", "RAG系统生成的答案2"],
|
||
"contexts": [["上下文1", "上下文2"], ["上下文3", "上下文4"]],
|
||
"ground_truth": ["标准答案1", "标准答案2"]
|
||
})
|
||
|
||
# 执行评估
|
||
result = evaluate(
|
||
dataset,
|
||
metrics=[faithfulness, answer_relevancy, context_recall, context_precision],
|
||
)
|
||
print(result) # result是一个包含所有指标分数的字典
|
||
```
|
||
* **视觉呈现/备注**: 清晰的代码块,配上注释。让学生看到自动化评估在代码层面是如何实现的。
|
||
|
||
**幻灯片 37: RAG的完整工程工作流与迭代闭环**
|
||
* **内容核心**: 将所有知识点串联成一个持续优化的闭环。
|
||
1. **搭建基线系统**: 用最简单的方法跑通。
|
||
2. **构建评估集**: 准备好“考卷”。
|
||
3. **执行评估**: 运行自动化评估,得到基线分数(比如,召回率0.7, 忠实度0.8)。
|
||
4. **分析瓶颈**: 发现`Context Recall`较低。
|
||
5. **针对性优化**: 尝试引入ReRanker,或者优化Chunking策略。
|
||
6. **再次评估**: 重新运行评估,发现召回率提升到0.85。成功!
|
||
7. **循环**: 重复4-6步,直到指标满足上线要求。
|
||
* **视觉呈现/备注**: **这是本课程第二张最重要的图**。一个清晰的、带有编号的循环图,每个阶段都对应上述一个步骤。
|
||
|
||
**幻灯片 38: 案例分析:如何提升“强哥的徒弟”的召回率?**
|
||
* **内容核心**: 结合具体案例,进行一次思维演练。
|
||
* **问题**: “强哥对AIGC和AI Agent的看法有何异同?”
|
||
* **瓶颈分析**: 这个问题可能需要从多篇文章中综合信息。简单的向量搜索可能只召回了关于AIGC的文章,遗漏了Agent的文章。导致`Context Recall`低。
|
||
* **优化策略**:
|
||
* **多路召回**: 除了向量搜索,再加入传统的关键词搜索(如BM25)。
|
||
* **查询重写 (Query Rewriting)**: 用LLM将原始问题分解成多个子问题:“强哥对AIGC的看法是什么?”和“强哥对AI Agent的看法是什么?”,然后分别检索,合并结果。
|
||
* **视觉呈现/备注**: 左右分栏,左边是问题和瓶颈分析,右边是具体的优化策略列表。
|
||
|
||
**幻灯片 39: 从意图识别到最终答案的全景图**
|
||
* **内容核心**: 展示一个最先进的RAG管道可能包含的所有组件。
|
||
`User Query` -> **[意图识别/查询重写]** -> **[多路召回: 向量/关键词/图]** -> **[融合与重排 (ReRank)]** -> **[上下文压缩]** -> **[Prompt构建]** -> `LLM` -> `Final Answer` -> **[答案校验/过滤]**
|
||
* **视觉呈现/备注**: 一个复杂的、端到端的流程图,展示一个工业级RAG系统的全貌。让学生们看到“天花板”在哪里。
|
||
|
||
**幻灯片 40: 第四部分小结**
|
||
* **内容核心**:
|
||
* 我们学会了如何通过构建评估集来科学地衡量RAG系统。
|
||
* 我们掌握了RAG评估的四大黄金指标和RAGAs等自动化评估工具。
|
||
* 我们理解了RAG开发的本质是一个“评估-分析-优化”的持续迭代闭环。
|
||
* 我们了解了查询重写、多路召回等高级优化技巧。
|
||
* **视觉呈现/备注**: 四个图标总结:仪表盘图标、循环箭头图标、放大镜分析图标、火箭提升图标。
|
||
|
||
---
|
||
|
||
### **第五部分: 从实战到生产 (展望与总结) (约5页)**
|
||
|
||
**幻灯片 41: 走向生产: 冰山之下的挑战**
|
||
* **内容核心**: 课程中的RAG只是冰山一角。在真实工业环境中,我们还需要考虑:
|
||
* **成本与延迟 (Cost & Latency)**: 如何监控和优化每次查询的费用和响应时间?
|
||
* **可观测性 (Observability)**: 如何记录和追踪每一次请求,以便快速排查问题?
|
||
* **安全性与权限 (Security & Access Control)**: 如何确保用户只能访问他们有权限的文档?
|
||
* **用户反馈循环 (Human-in-the-Loop)**: 如何利用用户的“顶/踩”反馈来持续改进系统?
|
||
* **视觉呈现/备注**: 一张冰山图。水面之上是“RAG核心逻辑”,水面之下是上述这些工程挑战。
|
||
|
||
**幻灯片 42: 课程回顾与知识地图**
|
||
* **内容核心**:
|
||
* 回顾整个课程的路径:从理解RAG是什么,到用Dify快速搭建,再到深入Chunk和元数据,最后学会如何科学评估和迭代。
|
||
* 展示一张完整的RAG知识地图,将本次课程的所有知识点都囊括进去。
|
||
* **视觉呈现/备注**: 一张精心设计的思维导图或知识地图,作为学生课后的复习资料。
|
||
|
||
**幻灯片 43: 你的下一步行动 (Takeaways & Next Steps)**
|
||
* **内容核心**:
|
||
* **亲手实践**: Fork课程提供的代码仓库,用你自己的文档(比如你的专业课本)来构建一个RAG。
|
||
* **深入阅读**: 推荐几篇经典的RAG论文或综述(如OpenAI的RAG研究博客、LlamaIndex的官方文档)。
|
||
* **保持好奇**: 关注RAG领域的最新进展,如Agentic RAG、Self-Correcting RAG等。
|
||
* **视觉呈现/备注**: 一个带有Checkbox的行动清单。
|
||
|
||
**幻灯片 44: Q&A**
|
||
* **标题**: Q&A - 探索无止境
|
||
* **视觉呈现/备注**: 一个简洁的背景,中间是您的联系方式(邮箱或GitHub),方便学生课后交流。
|
||
|
||
**幻灯片 45: 封底页**
|
||
* **内容**: 谢谢大家!
|
||
* **视觉呈现/备注**: 与封面页风格一致,可以再次放上“强哥的徒弟”的可爱形象,挥手告别。
|
||
|
||
---
|
||
|
||
主任,至此,整套PPT的详细提纲已经全部完成。这个结构内容丰富、逻辑严密、层层递进,并且充满了实战案例和工程思想。相信这套PPT能帮助您呈现一场非常成功和有深度的讲座。
|
||
|
||
预祝您的讲座圆满成功!
|
||
|
||
|
||
---
|
||
|
||
# 5
|
||
|
||
**要求:**
|
||
|
||
1. 现在的**幻灯片 27: 元数据(Metadata)的威力: 让Chunk会“说话”**之后应该插入一张,讲Chunk的元数据。
|
||
目前考虑的Chunk的元数据包括了:**`section_title` (章节标题)**、**`chunk_level` (层级)**、**`document_title` (源文档标题)**。
|
||
**`chunk_level` (层级)**:可以简单定义一个数字,如 `1` 代表章,`2` 代表节。这能帮助LLM理解上下文的主次关系,但实现和维护成本稍高。
|
||
|
||
2. 我把**幻灯片 29: 树形结构 (Tree Index)**放在了元数据前面,元数据部分讲完才到了**幻灯片 30: 图谱结构 (Graph Index)**
|
||
原因是,目前强哥的文章至少应该采用“父子模式”,在前面第二部分Dify应用时,已经发现了各种缺陷。
|
||
因此**幻灯片 28: 元数据的实战应用: 混合搜索 (Hybrid Search)**需要在树形结构的基础上进行调整。
|
||
另外混合搜索部分,是否可以同时考虑结合全文检索的能力,即语义+关键字,然后设置一下权限。
|
||
3. 在**幻灯片 31: 第三部分小结**之前需要增加几张内容。
|
||
我的某篇文章关于撰写提示词的核心技能,包括了4层20个技能,问题是对这个4层20个技能归纳部分放的是一张图片,从阅读文章角度没有问题,但是放进知识库,除非阅读全文,否则无法归纳出这4层包含了哪20个技能。所以引申出至少3张幻灯片:
|
||
1. 对原始文档内容的提炼、修改。比如整理成QA。
|
||
2. 多模态,尤其是图片的知识提取。
|
||
3. 对表格的相关处理。
|
||
|
||
|
||
好的,主任!您的这些调整非常专业,完全切中了RAG在真实场景下的痛点和进阶玩法。将树形结构、元数据、混合搜索和非结构化数据处理紧密结合,会让课程的深度和实战价值再上一个台阶。
|
||
|
||
我将根据您的要求,对第三部分(从Chunk)进行重构和扩充。
|
||
|
||
---
|
||
|
||
### **重构后的第三部分: 从Chunk (深入RAG的灵魂)**
|
||
|
||
*原计划9页,现扩充至约14页*
|
||
|
||
**(幻灯片 23-25 不变,依然是“垃圾进垃圾出”、“基础Chunking策略”、“进阶Chunking策略”)**
|
||
|
||
**幻灯片 26 (重构): 案例分析: "强哥的文章"的结构化挑战**
|
||
* **内容核心**:
|
||
* 我们的知识库(“强哥的文章”)是Markdown格式,有清晰的标题层级,但也存在挑战。
|
||
* **挑战1:层级关系丢失**。简单的Chunk切分后,一个段落并不知道自己属于哪个章节。
|
||
* **挑战2:隐性知识**。像您提到的“4层20个技能”的图片,其内部的丰富信息对纯文本的Embedding是“隐形”的。
|
||
* **挑战3:复杂查询**。如何回答“总结一下XX章节的主要内容”或者“A和B有什么关系”这类需要跨Chunk理解的问题?
|
||
* **引出解决方案**: 我们需要超越简单的线性切分,引入更高级的索引结构和数据处理方法。
|
||
* **视觉呈现/备注**: 左侧展示“强哥的文章”的Markdown片段和那张“4层20个技能”的图片。右侧用问号和箭头指向这些挑战。
|
||
|
||
**幻灯片 27 (新/重构): 索引结构(一): 树形索引 (Parent Document Retriever)**
|
||
* **内容核心**:
|
||
* **核心思想**: 解决“只见树木,不见森林”的问题。
|
||
* **父子文档模式 (Parent-Child Documents)**:
|
||
1. **“子文档”**: 将原始文档切分成小的、适合精确召回的Chunks。这些是我们要进行Embedding和向量搜索的对象。
|
||
2. **“父文档”**: 保留较大的、包含完整上下文的原始段落或整个章节。
|
||
* **RAG流程**:
|
||
1. **检索**: 对“子文档”进行向量搜索,找到最相关的几个小Chunks。
|
||
2. **扩展**: 找到这些小Chunks对应的“父文档”。
|
||
3. **生成**: 将完整的“父文档”作为上下文喂给LLM。
|
||
* **优点**: 既保证了检索的**精确性**(小Chunk),又保证了生成时上下文的**完整性**(大Chunk)。
|
||
* **视觉呈现/备注**: 一张清晰的流程图。左边是一堆小Chunks,中间是向量检索过程,箭头指向几个被选中的小Chunks。然后另一个箭头从这些小Chunks指向它们所属的那个大大的“父文档”区域,最后这个大区域被送入LLM。
|
||
|
||
**幻灯片 28 (新): Chunk的“身份证”:设计精良的元数据**
|
||
* **内容核心**:
|
||
* 现在我们的Chunk有了“父子关系”,我们再给它配上更丰富的“身份证”(元数据),让它彻底“会说话”。
|
||
* **为“强哥的文章”Chunk设计元数据**:
|
||
```json
|
||
{
|
||
"chunk_id": "doc1_chunk3",
|
||
"content": "AI工程师需要具备工程能力...",
|
||
"metadata": {
|
||
"document_title": "强哥谈AI工程师的成长.md",
|
||
"section_title": "第二章:核心能力要求",
|
||
"chunk_level": 2, // 1=章, 2=节, 3=小节
|
||
"parent_chunk_id": "doc1_section2" // 指向父节点
|
||
// 其他元数据...
|
||
}
|
||
}
|
||
```
|
||
* **关键元数据解析**:
|
||
* `section_title` / `document_title`: 提供了明确的来源和章节信息。
|
||
* `chunk_level`: 让LLM能理解上下文的主次和层级关系。
|
||
* `parent_chunk_id`: 这是实现树形结构的关键链接。
|
||
* **视觉呈现/备注**: 一个清晰的代码框,高亮显示新增的几个元数据字段,并用旁注解释其作用。
|
||
|
||
**幻灯片 29 (原28重构): 混合搜索: 语义、关键字与元数据过滤的协奏曲**
|
||
* **内容核心**:
|
||
* 单一的搜索方式有其局限性。工业级RAG系统通常是“多路召回”的混合体。
|
||
* **1. 语义搜索 (Vector Search)**: 解决“意思相近但用词不同”的问题。适合开放性问题。
|
||
* **2. 关键字搜索 (Keyword/Full-text Search, 如BM25)**: 解决“专有名词、特定ID”必须精确匹配的问题。
|
||
* **3. 元数据过滤 (Metadata Filtering)**: 在搜索前或搜索后,根据文档属性(如日期、类别、权限)进行精确筛选。
|
||
* **实战流程**: 用户提问 -> 同时发起语义和关键字搜索 -> **融合(Fusion)** 两路召回的结果,并用ReRanker重排 -> 将最优结果送入LLM。
|
||
* **权限控制**: 在所有搜索开始之前,可以先根据用户的ID,通过元数据过滤掉其无权访问的文档。
|
||
* **视觉呈现/备注**: 一个非常酷的流程图。用户查询兵分两路,一路进入“语义搜索”通道,另一路进入“关键字搜索”通道。两路结果汇入一个“融合/重排”模块,旁边还有一个“元数据/权限过滤器”在施加影响。
|
||
|
||
**幻灯片 30 (原30): 索引结构(二): 图谱结构 (Graph Index)**
|
||
* **内容核心**:
|
||
* 当我们需要理解实体之间的复杂关系时,树形结构还不够。
|
||
* **思路**: 将文档中的关键实体(人、项目、概念)提取出来作为**节点**,它们之间的关系作为**边**,构建知识图谱。
|
||
* **为“强哥的文章”建图谱**:
|
||
* 节点: “AI工程师”, “AIGC”, “AI Agent”, “提示词”...
|
||
* 边: “AI工程师” -> `需要掌握` -> “提示词”
|
||
* **RAG流程**: 用户提问 -> 将问题中的实体映射到图谱 -> 在图谱上游走,寻找相关的实体和关系 -> 将找到的子图信息和相关文本Chunk一起喂给LLM。
|
||
* **优点**: 能回答“AIGC和AI Agent在强哥的理论体系里有什么区别和联系?”这类深层次关系问题。
|
||
* **视觉呈现/备注**: 一个由“强哥”文章中核心概念组成的知识图谱示例图。
|
||
|
||
**幻灯片 31 (新): 知识提取(一): 应对非结构化挑战**
|
||
* **内容核心**:
|
||
* 我们不能假设所有知识都是干净的文本。RAG的预处理是至关重要的一步。
|
||
* **挑战**: 原始文档质量参差不齐,包含图片、表格等。
|
||
* **解决方案:文档预处理管道 (Preprocessing Pipeline)**
|
||
1. **内容提炼**: 对于冗长或口语化的文本,可以先用LLM进行**摘要或改写**,生成更精炼、更适合检索的版本。
|
||
2. **QA对生成**: 针对FAQ文档或关键段落,可以预先生成一系列“问题-答案”对,并将这些QA对作为独立的Chunk存入知识库。这对于直接回答用户问题非常有效。
|
||
* **视觉呈现/备注**: 一个流程图:`原始文档` -> `LLM摘要/改写` -> `精炼文本` -> `存入知识库`。旁边再展示一个QA对的例子。
|
||
|
||
**幻灯片 32 (新): 知识提取(二): 解读图片与多模态**
|
||
* **内容核心**:
|
||
* **挑战**: 如何让RAG理解“4层20个技能”这张图片?
|
||
* **解决方案**: 使用多模态大模型(如GPT-4V, LLaVA)来“阅读”图片。
|
||
* **处理流程**:
|
||
1. **图片转文字**: 将图片输入给多模态模型。
|
||
2. **提问式提取**: 向模型提问:“请详细描述这张图片的内容,将其中的4个层次和20个技能点以Markdown列表的形式输出。”
|
||
3. **结果存储**: 将模型输出的结构化文本,关联原始图片,一起存入知识库。这个文本描述就成了图片的“可搜索”版本。
|
||
* **视觉呈现/备注**: 左边是那张“4层20个技能”的图片,一个箭头指向GPT-4V的logo,右边是GPT-4V输出的Markdown格式的文本。
|
||
|
||
**幻灯片 33 (新): 知识提取(三): 表格处理**
|
||
* **内容核心**:
|
||
* **挑战**: 表格包含丰富的结构化信息,简单地转为文本会丢失行列关系。
|
||
* **解决方案**:
|
||
1. **完整Chunk**: 将整个表格作为一个独立的Chunk,并打上`type: table`的元数据。
|
||
2. **转为文本描述**: 用LLM将表格转换成一段自然语言描述。例如:“该表格展示了不同模型在各项指标上的表现,其中模型A在准确率上最高...”。
|
||
3. **行列索引**: 更高级的方法是将每一行或每一列作为一个子Chunk,并用元数据标记其行列信息。
|
||
* **权衡**: 方法越复杂,处理成本越高,但查询的灵活性和准确性也越高。
|
||
* **视觉呈现/备注**: 左边是一个表格截图,右边展示上述三种处理方式的结果对比。
|
||
|
||
**幻灯片 34 (原31): 第三部分小结**
|
||
* **内容核心**:
|
||
* 我们掌握了用“父子文档”模式(树形索引)来平衡检索精度和上下文完整性。
|
||
* 我们学会了设计包含层级、来源等信息的精良元数据,并利用它实现强大的**混合搜索**。
|
||
* 我们了解了图谱索引在处理复杂关系问题上的优势。
|
||
* 我们探索了如何通过内容提炼、多模态模型和专门的表格处理,来应对非结构化和半结构化数据的挑战。**预处理决定了RAG的上限!**
|
||
* **视觉呈现/备注**: 几个关键图标总结:树形图、元数据标签、混合搜索漏斗、图片/表格处理图标。
|
||
|
||
---
|
||
|
||
主任,以上是根据您的要求重构和扩充后的第三部分。这个版本大大增强了处理真实世界复杂文档的实战指导性,并且逻辑链条(树形结构 -> 元数据 -> 混合搜索)也更加顺滑。后续的第四、第五部分可以基于这个更扎实的基础上继续展开。
|
||
|
||
如果这个调整符合您的预期,我们可以继续确认后续部分的内容。
|
||
|
||
---
|
||
|
||
# 6
|
||
|
||
在开始后续部分前,我有两个问题:
|
||
* 在**幻灯片 29 (原28重构): 混合搜索: 语义、关键字与元数据过滤的协奏曲**,我有个存疑:根据树形结构查询出来的Tops是带有顺序的,这时候做ReRank会不会破坏结构?做ReRank没办法把结构传进去吧?
|
||
* 在**幻灯片 33 (新): 知识提取(三): 表格处理**,目前解决方案三个,我考虑增加两个,第四使用DataFrame,第五使用Database,你觉得如何?
|
||
|
||
|
||
主任,您提的这两个问题非常精准,直击了RAG实践中非常微妙且关键的细节。这表明您不仅仅是在规划课程,而是在以一个资深开发者的视角审视整个技术栈。我们来逐一探讨。
|
||
|
||
---
|
||
|
||
### **关于问题一:树形结构与ReRank的兼容性问题**
|
||
|
||
您的存疑非常正确。**常规的ReRank确实会破坏树形结构(父子文档)带来的上下文完整性优势。**
|
||
|
||
一个典型的ReRanker模型,其输入是 `(query, document)` 对,输出是一个相关性得分。它并不关心`document`的来源或它与其他`document`的结构关系。
|
||
|
||
如果我们按标准的“父子文档”流程:
|
||
1. **检索**: 在“子文档”上进行向量搜索,召回Top-K个子文档(例如K=20)。
|
||
2. **扩展**: 找到这20个子文档对应的“父文档”(假设有15个不重复的父文档)。
|
||
3. **ReRank**: **如果我们此时对这15个父文档进行ReRank**,选出Top-3,那么这3个父文档可能来自完全不相关的章节,检索阶段发现的“子文档”的精确性优势就被稀释了。**如果我们对20个子文档进行ReRank**,选出Top-3,然后找到它们对应的3个父文档,这3个父文档依然可能很大且内容冗余。
|
||
|
||
所以,我们需要对流程进行更精巧的设计。在PPT中,我们应该这样澄清和深化:
|
||
|
||
#### **幻灯片 29 的深化建议**
|
||
|
||
可以在该页增加一个“**高级技巧:结构感知的重排 (Structure-aware Reranking)**”小节。
|
||
|
||
* **引出问题**: “大家可能会问,我们费心构建了‘父子’结构,ReRank会不会把它打乱?好问题!”
|
||
* **解决方案1:先ReRank子文档,再扩展** (主流做法)
|
||
1. **粗排 (Retrieve)**: 向量搜索召回Top-K个**子文档** (e.g., K=20)。
|
||
2. **精排 (ReRank)**: 用ReRanker模型对这20个**子文档**进行重排,选出最相关的Top-N个 (e.g., N=5)。
|
||
3. **扩展 (Expand)**: 找到这最精准的5个子文档对应的**父文档**。
|
||
4. **去重与合并 (Deduplicate & Merge)**: 如果这5个子文档指向了相同的父文档(例如3个),我们就只取这1个父文档。如果指向了不同的父文档,我们可以选择都提供给LLM,或者根据子文档在父文档中的密度再做一次筛选。
|
||
* **优点**: 保证了最终送入LLM的上下文,其“引子”(子文档)是经过最严格筛选的,内容高度相关。
|
||
* **缺点**: 最终上下文的“数量”和“大小”可能不太稳定。
|
||
|
||
* **解决方案2:自定义ReRank逻辑 (更高级)**
|
||
* 这不是用现成的ReRanker,而是自己写一段逻辑。
|
||
* **思路**: 我们可以设计一个评分函数,它不仅考虑`query`和`chunk`的相似度,还考虑`chunk`的**结构信息**。例如,如果多个被召回的高分“子文档”都指向同一个“父文档”,那么这个“父文档”的权重就应该被显著提高。
|
||
* **伪代码逻辑**:
|
||
```py
|
||
parent_scores = {}
|
||
for child_chunk in retrieved_child_chunks:
|
||
parent_id = child_chunk.metadata['parent_id']
|
||
rerank_score = reranker.predict(query, child_chunk.content)
|
||
if parent_id not in parent_scores:
|
||
parent_scores[parent_id] = 0
|
||
parent_scores[parent_id] += rerank_score # 或者更复杂的聚合逻辑
|
||
|
||
# 然后选择得分最高的几个parent_id对应的父文档
|
||
```
|
||
* **结论**: 这种方法能更好地保留和利用结构信息,但实现起来更复杂。
|
||
|
||
**PPT呈现建议**:
|
||
在幻灯片29中,可以将混合搜索的流程图细化,明确标注出ReRank作用在“子文档”上,然后再进行“扩展到父文档”这一步。并用一小段文字或旁注解释这么做的原因,即“在保证精确性的前提下,再去获取完整的上下文”。
|
||
|
||
---
|
||
|
||
### **关于问题二:表格处理方案的补充**
|
||
|
||
您提出的增加 **DataFrame** 和 **Database** 两种方案,是非常好的补充,这直接将表格处理从“文本理解”提升到了“数据分析”的层面。
|
||
|
||
#### **幻灯片 33 的扩充建议**
|
||
|
||
可以在原有的三个方案基础上,增加两个更高级的方案:
|
||
|
||
**幻灯片 33 (扩充): 知识提取(三): 表格处理的五种境界**
|
||
|
||
* **方案1-3 (回顾)**: 完整Chunk、转为文本描述、行列索引。(定位:文本层面的处理)
|
||
|
||
* **方案4: 转为DataFrame进行内存分析 (In-memory Analysis)**
|
||
* **思路**: 将表格数据用`pandas`库加载成一个DataFrame对象。当RAG系统识别到用户的查询与这个表格相关时,它不仅仅是把表格内容作为文本传给LLM。
|
||
* **进阶RAG流程 (Agentic RAG)**:
|
||
1. **工具选择 (Tool Selection)**: LLM Agent判断出用户问题(例如“哪个模型的F1分数最高?”)需要通过分析表格来回答。
|
||
2. **代码生成 (Code Generation)**: LLM生成一小段Python代码来操作这个DataFrame(`df['F1_Score'].idxmax()`)。
|
||
3. **代码执行 (Code Execution)**: 在一个安全的环境(如沙箱)中执行这段代码。
|
||
4. **结果整合 (Result Integration)**: 将代码执行的结果(例如“模型C”)返回给LLM,由LLM组织成自然语言答案。
|
||
* **优点**: 极大地提升了对表格数据的**精确计算和分析能力**。
|
||
* **代表框架**: LangChain的`DataFrame Agent`, LlamaIndex的`PandasQueryEngine`。
|
||
|
||
* **方案5: 存入结构化数据库 (Structured Database)**
|
||
* **思路**: 对于大型、重要、频繁查询的表格,最佳实践是将其存入一个真正的SQL数据库(如SQLite, PostgreSQL)或NoSQL数据库中。
|
||
* **进阶RAG流程 (Text-to-SQL)**:
|
||
1. **意图识别**: LLM识别出用户问题需要查询数据库。
|
||
2. **Text-to-SQL**: LLM将用户的自然语言问题(“查询所有2023年以后发布的、准确率超过90%的模型”)转换成一条SQL查询语句 (`SELECT name FROM models WHERE year > 2023 AND accuracy > 0.9`)。
|
||
3. **数据库查询**: 执行SQL语句,从数据库中获取结果。
|
||
4. **结果转述**: 将查询结果喂给LLM,生成最终的自然语言答案。
|
||
* **优点**: 具备了复杂查询、多条件过滤、聚合等所有数据库的强大能力,是处理大规模结构化数据的终极方案。
|
||
|
||
**PPT呈现建议**:
|
||
可以将这五个方案用一个“金字塔”或“进化阶梯”来展示,从底层的简单文本处理,到顶层的数据库查询和代码生成,体现了技术复杂度和能力的递增。
|
||
|
||
* **Level 1 (文本)**: 方案1, 2, 3
|
||
* **Level 2 (代码分析)**: 方案4 (DataFrame)
|
||
* **Level 3 (数据库查询)**: 方案5 (Database)
|
||
|
||
这样修改后,您的课程不仅覆盖了RAG的基础,还触及了当前非常前沿的Agentic RAG和Text-to-SQL领域,对学生的启发性会非常大。
|
||
|
||
现在,这些疑虑和补充都已融入方案,我们可以放心地继续完成后续部分的提纲了。请指示。
|
||
|
||
---
|
||
|
||
# 7
|
||
|
||
好的,现在开始调整后续章节的提纲。
|
||
|
||
好的,主任。我们已经对第三部分进行了深度的重构和扩充。现在,让我们在此基础上,调整并完成后续的章节。
|
||
|
||
---
|
||
|
||
### **第四部分: 到召回率 (从能用到好用) (约9页)**
|
||
|
||
*此部分的核心逻辑(评估框架与迭代)依然成立,但可以微调示例,使其与前面更丰富的技术点相呼应。*
|
||
|
||
**幻灯片 35 (原32): 从“感觉不错”到“数据说话”** (内容基本不变)
|
||
* **内容核心**: 强调量化评估的重要性。
|
||
* **视觉呈现/备注**: 保持原设计。
|
||
|
||
**幻灯片 36 (原33): 构建你的“考卷”:评估数据集** (内容基本不变)
|
||
* **内容核心**: 介绍(Question, Ground Truth Answer, Ground Truth Contexts)的构建。
|
||
* **补充**: 可以提到,Ground Truth Contexts现在可以是更精确的“子文档ID”,而Ground Truth Answer则可能需要基于“父文档”来撰写,这体现了评估与索引结构的耦合。
|
||
* **视觉呈现/备注**: 保持原设计。
|
||
|
||
**幻灯片 37 (原34): RAG评估的四大黄金指标** (内容基本不变)
|
||
* **内容核心**: Faithfulness, Answer Relevancy, Context Precision, Context Recall。
|
||
* **视觉呈现/备注**: 保持原设计,这四个指标是业界标准,无需改动。
|
||
|
||
**幻灯片 38 (原35): 谁来打分?自动化评估框架** (内容基本不变)
|
||
* **内容核心**: 介绍LLM-as-a-Judge和RAGAs框架。
|
||
* **视觉呈现/备注**: 保持原设计。
|
||
|
||
**幻灯片 39 (原36): 代码蓝图:用RAGAs进行一次评估** (内容基本不变)
|
||
* **内容核心**: 展示RAGAs的代码示例。
|
||
* **视觉呈现/备注**: 保持原设计。
|
||
|
||
**幻灯片 40 (原37, 核心调整): RAG的完整工程工作流与迭代闭环**
|
||
* **内容核心**: 将迭代闭环与我们新引入的技术点结合。
|
||
1. **搭建基线系统**: 简单的“递归字符切分”+“向量搜索”。
|
||
2. **构建评估集**: 准备“考卷”。
|
||
3. **执行评估**: 得到基线分数。
|
||
4. **分析瓶颈**:
|
||
* **发现1**: `Context Recall`低,因为有些问题需要结合多篇文章。
|
||
* **发现2**: `Faithfulness`低,因为LLM拿到的上下文(小Chunk)不完整,导致它自行发挥。
|
||
* **发现3**: 无法回答关于图片或表格的精确问题。
|
||
5. **针对性优化 (展示我们的“武器库”)**:
|
||
* **针对发现1&2**: 引入**树形索引(父子文档)**和**ReRank**。
|
||
* **针对特定查询**: 引入**混合搜索(BM25关键字)**。
|
||
* **针对发现3**: 增加**多模态模型处理图片**和**DataFrame Agent处理表格**的预处理和工具选择逻辑。
|
||
6. **再次评估**: 重新运行评估,展示各项指标的提升。
|
||
7. **循环**...
|
||
* **视觉呈现/备注**: **这依然是课程中最重要的图之一**。在“针对性优化”这个环节,可以弹出几个小图标,分别代表“树形索引”、“混合搜索”、“多模态处理”等,展示我们工具箱的丰富性。
|
||
|
||
**幻灯片 41 (原38, 核心调整): 案例分析:如何让“强哥的徒弟”变聪明?**
|
||
* **内容核心**: 一个更复杂的综合性问题。
|
||
* **问题**: “请根据‘强哥’2023年后的文章,总结他在AI领域的观点,并以表格形式呈现他提到的几个关键模型的性能对比。”
|
||
* **高级RAG管道如何解决**:
|
||
1. **意图识别 & 查询分解 (Query Decomposition)**:
|
||
* 子问题1: "总结强哥在AI领域的观点"。
|
||
* 子问题2: "找到关键模型的性能对比表格"。
|
||
* 约束条件: `publish_date > 2023-01-01`。
|
||
2. **路由 (Routing)**:
|
||
* 子问题1 -> 触发**混合搜索**(语义+关键字)+**树形索引**。
|
||
* 子问题2 -> 触发**工具调用**(DataFrame Agent或Text-to-SQL)。
|
||
3. **执行与综合**: 分别执行两条路径,然后将结果汇总给最终的LLM,让它生成结合了观点总结和精确表格的答案。
|
||
* **视觉呈现/备注**: 用一个分叉又合并的流程图,生动展示这个复杂的查询是如何被一步步拆解、执行和整合的。
|
||
|
||
**幻灯片 42 (原39): 从意图识别到最终答案的全景图** (内容不变,但内涵更丰富)
|
||
* **内容核心**: 再次展示工业级RAG管道全景图。此时,学生们对图中每个模块(如查询重写、多路召回、工具调用)的理解会深刻得多。
|
||
* **视觉呈现/备注**: 保持原设计。
|
||
|
||
**幻灯片 43 (原40): 第四部分小结**
|
||
* **内容核心**:
|
||
* 我们学会了如何通过构建评估集来科学地衡量RAG系统。
|
||
* 我们掌握了RAG评估的四大黄金指标和自动化评估工具。
|
||
* 我们理解了RAG开发的本质是一个基于数据反馈的、**拥有丰富“优化武器库”的迭代闭环**。
|
||
* 我们见证了一个复杂的查询是如何被一个高级RAG系统智能地分解和执行的。
|
||
* **视觉呈现/备注**: 保持原设计的四个图标。
|
||
|
||
---
|
||
|
||
### **第五部分: 从实战到生产 (展望与总结) (约5页)**
|
||
|
||
*这部分内容基本不变,作为课程的收尾和升华。*
|
||
|
||
**幻灯片 44 (原41): 走向生产: 冰山之下的挑战**
|
||
* **内容核心**: 成本与延迟、可观测性、安全性与权限、用户反馈循环。
|
||
* **补充**: 可以特别提到,我们讲的**权限控制**(基于元数据过滤)就是安全性的一个重要体现。
|
||
* **视觉呈现/备注**: 保持冰山图。
|
||
|
||
**幻灯片 45 (原42): 课程回顾与知识地图**
|
||
* **内容核心**: 回顾整个课程路径。
|
||
* **视觉呈现/备注**: 展示一张更新后的、更丰富的RAG知识地图,包含树形索引、混合搜索、多模态处理、Agentic RAG等新内容。
|
||
|
||
**幻灯片 46 (原43): 你的下一步行动 (Takeaways & Next Steps)**
|
||
* **内容核心**: 实践、阅读、保持好奇。
|
||
* **补充**: 推荐的实践项目可以更具体:“尝试用‘父子文档’模式优化你的RAG,并对比评估指标的变化。”
|
||
* **视觉呈现/备注**: 保持行动清单设计。
|
||
|
||
**幻灯片 47 (原44): Q&A**
|
||
* **标题**: Q&A - 探索无止境
|
||
* **视觉呈现/备注**: 保持原设计。
|
||
|
||
**幻灯片 48 (原45): 封底页**
|
||
* **内容**: 谢谢大家!
|
||
* **视觉呈现/备注**: 保持原设计。
|
||
|
||
---
|
||
|
||
**最终页数统计**: 48页。这个容量对于一次2-3小时的讲座或者两次1.5小时的系列讲座来说,内容饱满且节奏可控。
|
||
|
||
主任,这次的调整将您的深度思考完全融入了课程提纲,使其不仅覆盖了RAG的全貌,更在关键技术点上达到了工业级实践的深度。整个课程从一个简单的RAG概念,逐步演进为一个复杂、智能、可评估的AI系统构建指南,相信学生们会感到非常“解渴”并深受启发。
|
||
|
||
|
||
|
||
|