Production Agentic RAG Course
一套 7 周的生产级 Agentic RAG 实战课程,从零构建 arXiv 论文智能检索与问答系统
🎯 为什么需要它
大多数 RAG 教程停留在「能跑通」的层面——用 LangChain 调个 API、接个向量数据库、做个简单问答就完事了。但生产环境的 RAG 系统要复杂得多:需要混合检索、缓存优化、可观测性、自动化流水线……
这个项目的价值在于:它不是教你「怎么调 API」,而是教你怎么搭建一套可以上生产的 RAG 系统。
如果你想知道「RAG 从 Demo 到生产到底差在哪」,这个课程用 7 周时间、一个完整项目,把每个环节都拆开讲透了。
✅ 核心优势
- 生产级视角:不是玩具 Demo,涵盖了 Airflow 调度、Redis 缓存、Langfuse 可观测性等生产组件
- 渐进式架构:每周在前一周基础上叠加新能力,从基础设施 → 数据管线 → 检索 → RAG → Agent,完整链路
- 本地优先:使用 Ollama 本地部署 LLM,数据完全不出本机,适合对隐私敏感的场景
- 混合检索:BM25 + 向量检索的 RRF 融合,比纯向量检索效果更好
- 真实数据源:对接 arXiv API 抓取真实论文,不是虚构的玩具数据
- 配套 Notebook:每周都有 Jupyter Notebook 手把手教学,边学边练
🏗️ 课程架构(7 周路线图)
技术栈一览
| 组件 | 用途 | 状态 |
|---|---|---|
| FastAPI | REST API + 自动文档 | ✅ 就绪 |
| PostgreSQL 16 | 论文元数据存储 | ✅ 就绪 |
| OpenSearch 2.19 | 混合检索引擎(BM25 + 向量) | ✅ 就绪 |
| Apache Airflow 3.0 | 工作流编排 | ✅ 就绪 |
| Jina AI | Embedding 生成 | ✅ 就绪 |
| Ollama | 本地 LLM 推理 | ✅ 就绪 |
| Redis | 高性能缓存 | ✅ 就绪 |
| Langfuse | RAG 管线可观测性 | ✅ 就绪 |
开发工具:UV、Ruff、MyPy、Pytest、Docker Compose
项目结构
arxiv-paper-curator/
├── src/ # 主应用代码
│ ├── routers/ # API 端点(search, ask, papers)
│ ├── services/ # 业务逻辑(opensearch, ollama, agents, cache)
│ ├── models/ # 数据库模型(SQLAlchemy)
│ ├── schemas/ # Pydantic 校验
│ └── config.py # 环境配置
├── notebooks/ # 每周学习材料(week1-7)
├── airflow/ # Airflow DAG 定义
├── tests/ # 测试套件
└── compose.yml # Docker 编排
🚀 快速上手
前置条件
- Docker Desktop(含 Docker Compose)
- Python 3.12+
- UV 包管理器(安装指南)
- 8GB+ RAM、20GB+ 磁盘空间
5 步启动
# 1. 克隆项目
git clone https://github.com/jamwithai/production-agentic-rag-course.git
cd production-agentic-rag-course
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env,填入 Jina AI API Key 和 Langfuse Key
# 3. 安装依赖
uv sync
# 4. 启动所有服务
docker compose up --build -d
# 5. 验证服务
curl http://localhost:8000/api/v1/health
API 端点
| 端点 | 方法 | 说明 | 周次 |
|---|---|---|---|
/health | GET | 健康检查 | Week 1 |
/api/v1/papers | GET | 论文列表 | Week 2 |
/api/v1/search | POST | BM25 关键词搜索 | Week 3 |
/api/v1/hybrid-search/ | POST | 混合搜索(BM25 + 向量) | Week 4 |
/api/v1/ask | POST | RAG 问答 | Week 5 |
/api/v1/stream | POST | 流式 RAG 问答(SSE) | Week 5 |
交互式 API 文档:http://localhost:8000/docs
每周学习入口
# 启动对应周的 Notebook
uv run jupyter notebook notebooks/week1/week1_setup.ipynb
uv run jupyter notebook notebooks/week3/week3_opensearch.ipynb
uv run jupyter notebook notebooks/week4/week4_chunking_hybrid_search.ipynb
# ... 以此类推
📦 适用场景
- 想系统学习生产级 RAG 架构
- 需要构建学术论文/文档检索系统
- 团队需要统一的 RAG 技术认知
- 对数据隐私有要求(本地 LLM)
- 想了解从 Demo 到生产的完整链路
- 只需要快速跑通一个 RAG Demo
- 机器配置低于 8GB RAM
- 不想用 Docker(整个项目重度依赖)
- 只关心 LangChain 生态(本项目偏原生实现)
- 需要多语言支持(目前仅英文论文)
⚠️ 已知坑
Docker Compose 启动后需要等待 2-3 分钟让所有服务就绪,尤其是 OpenSearch 和 Airflow。不要急着调 API,先用 docker compose ps 确认状态。
项目占用多个端口:8000(FastAPI)、8080(Airflow)、5432(PostgreSQL)、9200(OpenSearch)、5601(OpenSearch Dashboards)、11434(Ollama)、7861(Gradio)。如果这些端口被占用,需要先停掉对应服务。
OpenSearch + PostgreSQL + Airflow + Ollama 同时运行非常吃内存。Docker Desktop 默认分配的 2GB 内存远远不够,建议至少分配 8GB。如果服务频繁 OOM,检查 Docker 内存设置。
Jina AI Embedding 需要免费 API Key(Week 4+),Langfuse 需要注册获取 Key(Week 6+)。.env.example 中有说明,但容易漏掉。建议在 Week 1 就把所有 Key 准备好。
如果环境搞坏了,用这个命令彻底重置:docker compose down --volumes && docker compose up --build -d。注意 --volumes 会删除所有数据。
🆚 竞品对比
| 维度 | 本项目 | LangChain 教程 | RAGFlow | Dify |
|---|---|---|---|---|
| 定位 | 学习课程 + 完整项目 | 框架文档 | RAG 引擎 | LLM 应用平台 |
| 教学深度 | ★★★★★ 每周拆解 | ★★★ 片段式 | ★★ 黑盒 | ★★ 低代码 |
| 生产就绪度 | ★★★★ 接近生产 | ★★ 需大量补充 | ★★★★ 可直接用 | ★★★★ 可直接用 |
| 灵活性 | ★★★★★ 完全可控 | ★★★★ 框架灵活 | ★★★ 受限于引擎 | ★★ 低代码限制 |
| 上手难度 | 中等(需 Docker) | 低 | 中等 | 低 |
| 本地部署 | ✅ Ollama | ✅ 可选 | ✅ | ✅ |
选择建议:想深入理解 RAG 原理选本项目;想快速搭应用选 Dify/RAGFlow;想灵活定制选 LangChain。
🌍 生态社区
| 指标 | 数据 |
|---|---|
| GitHub Stars | ⭐ 6,400+ |
| Forks | 🍴 1,500+ |
| Commits | 39 次提交 |
| License | MIT |
| Python 版本 | 3.12+ |
| 配套博客 | jamwithai.substack.com |
项目作者在 Substack 上有配套博客文章,每周内容都有详细的文字讲解,适合配合 Notebook 一起学习。
💡 引入评估
综合评分
值得引入吗?
如果你的目标是深入理解生产级 RAG 系统的全貌,这个课程是目前开源社区里最完整的实战教程之一。7 周的渐进式设计让你不会被一次性信息淹没,每周都有可运行的成果。
但它不是一个可以直接用的 RAG 产品——它是一个学习项目。学完之后你还需要根据自己的业务场景做大量定制工作。