ai-tutor-rag-system
51个Jupyter Notebook手把手带你从零构建RAG系统,LangChain+LlamaIndex双框架实战,覆盖向量检索、分块策略、重排序与Agent化全链路
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
51个Jupyter Notebook手把手带你从零构建RAG系统,LangChain+LlamaIndex双框架实战,覆盖向量检索、分块策略、重排序与Agent化全链路
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你刚学完一篇关于 RAG(检索增强生成)的文章,满脑子概念,却不知道从何下手写代码。看到"向量数据库"四个字,知道它很重要,却不知道 ChromaDB 和 Pinecone 用起来有什么不同。别人跟你说"用 LangChain 搭 RAG",你照着敲了一遍,却不明白每一步为什么这样设计。这就是 Towards AI 团队创建这个课程仓库时的真实出发点——不是教你调 API 敷衍了事,而是带你从零理解 RAG 系统的每一个齿轮是怎么转动的。## 项目背景:一家 AI 教育媒体的"真实需求"
Towards AI 是一个拥有超过 30 万订阅者的 AI 教育媒体平台,同时运营 Towards AI Academy 在线学院,提供从 LLM 基础到 Agent 开发的系列课程。在 2023 年底,他们面临一个现实问题:课程内容越来越丰富,学生的问题越来越专业,传统的关键词搜索和 FAQ 已经无法满足需求。具体痛点有三个:学生对 AI 工程类问题(如"LangChain 的 LCEL 语法怎么写才对")的回答需要精准、可溯源;课程文档更新频繁,靠人工维护知识库不现实;平台拥有 30 万注册用户,需要一个可以同时服务大量学生的可扩展方案。
于是他们决定自己动手,从真实需求出发,构建一套服务于自身课程的 AI Tutor 系统。这个 GitHub 仓库就是课程的核心配套教材——不是直接给你一个能用的产品,而是手把手教你把那个产品从零做出来。 仓库由 Towards AI Academy 团队维护,配套课程名为"From Beginner to LLM Developer"(从初学者到 LLM 开发者),截至 2026 年已累计 464 次提交,238 颗 GitHub Stars,12 个 topics 标签覆盖了从 RAG 到 Agentic AI 的完整知识图谱。
这个仓库的核心资产是 notebooks/ 目录下精心编排的 51 个 Jupyter Notebook。这些笔记本不是随意堆砌的演示代码,而是一条循序渐进的学习路径,每个 Notebook 对应一个独立的技术模块,可以独立运行,也可以按顺序学习。
基础层:RAG 入门(Notebook 01-06)
入门路径从"什么是 LLM"、"什么是 RAG"这些基础概念讲起,然后快速进入实战。01-Basic_Tutor.ipynb 演示如何用 API 调用 LLM 构建最简单的问答机器人;02-Basic_RAG.ipynb 展示将文档向量化后存入向量数据库、查询时检索相关内容的完整流程;03-RAG_with_LlamaIndex.ipynb 引入 LlamaIndex 框架,将同样的 RAG 流程用更规范的结构重新实现一遍——这样设计的目的是让学习者同时掌握两种主流框架的思维方式。后续的 04-06 则逐步深入:向量数据库选型(ChromaDB vs. 其他)、Prompt 优化技巧、结果来源标注,以及 RAG 系统的评估指标(Precision@K、Recall@K)。
进阶层:RAG 核心工程问题(Notebook 07-13)
这部分是课程的精华,直接回应了生产级 RAG 系统中的真实挑战。07-Improve_Chunking.ipynb 专门讨论分块策略——固定大小分块、递归字符分块、语义分块各自的优缺点,以及如何根据文档结构选择最优方案。08-Finetune_Embedding.ipynb 演示如何针对特定领域(如医疗、法律)微调 Embedding 模型以提升检索精度,这个话题在多数公开课程中被一笔带过,这里却给了完整的微调流程和评估代码。10-11 章引入重排序(Re-ranking)和混合搜索(Hybrid Search),前者用 Cohere Rerank API 对初筛结果进行二次排序,后者同时结合稠密向量检索和稀疏 BM25 检索,显著提升召回率。12-13 章则讨论查询改写(Query Expansion/Compression)和路由(Router)机制——这是让 RAG 系统"聪明"起来的关键技术。
高级层:Agentic AI 与生产系统(Notebook 14-17 及高级专题)
从这里开始,课程跳出了纯 RAG 的范畴,进入 Agent 系统。14-Adding_Chat.ipynb 演示如何为 RAG 系统加上多轮对话能力,让 AI"记住"之前的上下文,这涉及对话历史管理和对话压缩策略。15-Use_OpenSource_Models.ipynb 探讨用 Ollama 等工具本地运行开源 LLM(如 Llama 3、Qwen)替代 OpenAI API,兼顾成本控制和隐私合规。Advanced_Retriever.ipynb 引入高级检索模式,包括知识图谱增强检索(GraphRAG)和句子窗口检索。17-Using_LLMs_to_rank_chunks_as_the_Judge.ipynb 是一个很有意思的实验:用 LLM 本身作为评估器来判断 RAG 输出的质量,相比人工评估更可扩展。
工具链与工程实践(分散在各 Notebook)
仓库还覆盖了大量生产级工具链内容:Firecrawl_Scraping.ipynb 演示如何用 Firecrawl 从任意网站抓取结构化内容并导入 RAG;LlamaParse.ipynb 展示如何用 LlamaParse 解析 PDF/Word 等非结构化文档;Quantization.ipynb 讲解模型量化技术(GPTQ/BitNet),帮助在消费级 GPU 上运行大模型;Observablity_And_Tracing.ipynb 则用 OpenTelemetry 工具做 RAG 系统的可观测性监控——这是很多课程忽略但生产环境必需的能力。
这个仓库的技术栈非常典型地代表了当前 LLM 应用开发的主流选择:LangChain + LlamaIndex 双框架并用,配合 OpenAI API 作为默认 LLM 后端,同时广泛引入 Cohere、HuggingFace、Activeloop Deep Lake 等第三方服务。
LangChain 是这个仓库中使用最频繁的编排框架。从基础的 Prompt 模板、Chain 串联、到 LCEL(LangChain Expression Language)语法,课程中都有详细演示。LangChain 的优势在于组件丰富,社区活跃,但缺点也很明显——抽象层级高、调试困难、版本迭代快导致 API 不稳定。课程并没有回避这些问题,在多个 Notebook 中对比了 LangChain 实现和 LlamaIndex 实现的差异,让学习者自己判断在不同场景下哪个更合适。
LlamaIndex 在高级 Notebooks 中出场更多,特别是在需要细粒度控制检索流程时。相比 LangChain,LlamaIndex 更专注于"索引+检索"这个核心场景,API 设计更直观,数据连接器(Document Loader)生态更丰富。仓库中 03-RAG_with_LlamaIndex.ipynb、Knowledge_Base_for_RAG.ipynb、LlamaParse.ipynb 等都深入展示了 LlamaIndex 的用法。
向量数据库方面,ChromaDB 是默认选择(轻量、本地可运行),同时在架构讨论中提到了 Pinecone(云端托管)和 Activeloop Deep Lake(支持多模态和 Deep Memory 增强检索)。Cohere 的 Rerank API 和 Embedding API 在多个章节中被使用,是当前最流行的商业 Embedding 方案之一。
Gradio 在 14-Adding_Chat.ipynb 中被用来快速构建 RAG 聊天界面。相比 Streamlit,Gradio 更适合 AI/ML 模型的快速 Demo 展示,API 更简洁,但自定义能力相对有限。课程选择 Gradio 而非 Streamlit,正是因为这个场景需要的是"快速验证 RAG 对话效果",而不是"构建完整的 Web 应用"。
从部署角度看,这个项目有几层不同的体验层次。
最外层:零门槛尝试
每个 Notebook 顶部都有"Open in Colab"按钮,点击即可在 Google Colab 的免费 GPU/TPU 实例上运行,不需要任何本地环境配置。requirements.txt 包含了超过 100 个依赖项,从基础库(pandas、numpy)到 AI 框架(transformers、llama-index、langchain)再到 Gradio 前端,一应俱全。本地安装只需 pip install -r requirements.txt,然后 jupyter notebook 启动即可。对于只想体验不想折腾环境的用户,这个仓库几乎是最友好的起点。
中间层:本地完整运行
如果想完整复现课程中的所有示例,需要准备:Python 3.9+ 环境、OpenAI API Key(或兼容的第三方 API)、至少 4GB 内存。ChromaDB 默认在本地文件存储,不需要额外的数据库服务,因此本地运行不会有数据库运维负担。Gradio 聊天界面通过 gradio app.py 或直接在 Notebook 内 %gr.from_components() 启动,访问 http://localhost:7860 即可体验。
深层:生产级改造
将课程示例改造为生产级应用,需要解决几个实际问题:OpenAI API 的成本控制和降级方案(本地部署开源模型)、向量数据库的扩展性问题(从 ChromaDB 迁移到 Qdrant/Pinecone)、多用户并发访问的会话隔离、RAG 系统输出的质量监控等。课程中关于 Deep Memory(Activeloop 的增强检索技术,通过历史交互数据训练检索器,使召回率提升约 22%)的讨论,暗示 Towards AI 在生产环境中使用的并非简单的 ChromaDB + OpenAI 组合,而是经过深度定制的系统。
这个仓库值得称赞,但它也有不可回避的问题。
1. 框架稳定性问题:LangChain 和 LlamaIndex 都处于快速迭代期,API 兼容性差。一个 Notebook 写于 2023 年底的代码,到了 2026 年可能已经无法直接运行(实际上仓库最后一次更新是 2026 年 5 月,活跃度尚可)。课程中多次出现"当前版本号"的注释,说明维护者自己也在与版本漂移做斗争。这不是课程的错,但学习者需要意识到:学习框架背后的设计思想,比死记具体 API 更有长期价值。
2. API 依赖的成本问题:课程默认使用 OpenAI API,几乎每个 Notebook 都需要 OPENAI_API_KEY。按当前 GPT-4o mini 的价格,每次课程运行的成本虽然不高,但如果用于大规模生产场景,每月费用可能快速攀升。课程中虽然有 15-Use_OpenSource_Models.ipynb 介绍本地部署方案,但深度不足,对于希望完全摆脱 API 依赖的用户帮助有限。
3. 评估体系相对薄弱:06-Evaluate_RAG.ipynb 覆盖了基本的 RAG 评估指标,但缺乏对端到端系统评估的讨论——比如如何评估"答案是否真的回答了用户问题",而不是"检索到的文档是否相关"。这需要更复杂的 LLM-as-Judge 框架,课程只在 17-Using_LLMs_to_rank_chunks_as_the_Judge.ipynb 触及皮毛。
4. 缺少端到端产品化示例:仓库本质上是教学代码,所有 Notebooks 都是独立模块,没有展示如何将这些模块组合成完整的、生产级的 RAG 应用。Towards AI 实际使用的 AI Tutor 系统(已开源为 towardsai/ai-tutor-app)才是真正的产品级参考,但那个仓库与本仓库是分离的,学习者需要自己完成从"课程示例"到"生产应用"的跨越。
这个仓库的意义远超"一份好的教程"。它实际上代表了一种 AI 教育的新范式:不教你怎么用 AI,而是教你怎么构建 AI 应用。 传统的 AI 课程侧重理论推导或 API 调参,而 Towards AI 的做法是给你真实的代码、真实的挑战、真实的迭代路径。
从行业角度看,RAG 已成为 LLM 应用的基础架构模式。这个仓库覆盖了 RAG 从入门到生产部署的完整知识链条,每个环节都有可运行的代码支撑——这种"边做边学"的方式,比任何理论课程都更能培养实战能力。仓库中关于 Chunking 策略、Embedding 微调、混合搜索、Re-ranking 等高级技巧的讨论,在中文互联网上的资料质量参差不齐,而这个仓库提供了系统化的参考。
此外,仓库的"配套课程+开源代码"模式正在被更多 AI 教育机构效仿。通过开源核心代码吸引潜在学员,同时通过付费课程提供更系统化的学习路径和认证——这是一种可持续的 AI 教育商业模式,也是 Towards AI 能在竞争激烈的 AI 教育市场中持续活跃的原因之一。

图1:Towards AI 组织头像 — 这个 238 Stars 的课程仓库来自一个拥有 30 万订阅者的 AI 教育媒体,他们用真实的生产需求驱动教学内容。

图2:Towards AI 官方 Logo — Towards AI Academy 提供从 LLM 基础到 Agent 开发的完整课程体系,AI Tutor RAG 系统是这个教育生态的核心技术支撑。