从关键词搜索基础到混合检索,教你构建生产级RAG系统,采用“先搜索基础后AI增强”的专业路径而非AI优先策略,完成后拥有自己的AI研究助手。
面向学习者的生产级 RAG 系统实践之旅
通过动手实现从头构建现代 AI 系统
掌握最受欢迎的 AI 工程技能:RAG(检索增强生成)

这是一个面向学习者的项目,你将构建一个完整的研究助手系统,能够自动获取学术论文、理解其内容,并使用先进的 RAG 技术回答你的研究问题。
arXiv 论文策展人将教你使用行业最佳实践构建生产级 RAG 系统。与那些直接跳到向量搜索的教程不同,我们遵循专业路径:首先掌握关键词搜索基础,然后通过向量增强实现混合检索。
🎯 专业差异:我们的 RAG 系统构建方式与成功公司一致——以扎实的搜索基础增强 AI,而非忽视搜索基础、以 AI 为先的方法。
完成本课程后,你将拥有自己的 AI 研究助手,以及为任何领域构建生产级 RAG 系统的深厚技术能力。
第 1 周:Docker、FastAPI、PostgreSQL、OpenSearch 和 Airflow 的完整基础设施
第 2 周:自动化数据管道,从 arXiv 获取和解析学术论文
第 3 周:生产级 BM25 关键词搜索,支持过滤和相关性评分
第 4 周:智能分块 + 混合搜索,将关键词与语义理解结合
第 5 周:完整 RAG 管道,支持本地 LLM、流式响应和 Gradio 界面
第 6 周:使用 Langfuse 追踪和 Redis 缓存的生产监控,实现性能优化
第 7 周:使用 LangGraph 的 Agentic RAG 和 Telegram Bot 移动端接入
🏗️ 系统架构演进
第 7 周:Agentic RAG 和 Telegram Bot 集成
展示 Telegram Bot 与 Agentic RAG 系统集成的完整第 7 周架构
LangGraph Agentic RAG 工作流
展示决策节点、文档评分和自适应检索的详细 LangGraph 工作流
第 7 周代码讲解 + 博客:使用 LangGraph 和 Telegram 的 Agentic RAG
第 7 周关键创新:
智能决策:AI 智能体评估并调整检索策略
文档评分:基于语义评估的自动相关性判断
查询重写:当结果不足时进行自适应查询优化
护栏:域外检测防止幻觉
移动端接入:Telegram Bot 实现任意设备上的对话式 AI
透明度:完整的推理步骤追踪,便于调试和建立信任
Docker Desktop(包含 Docker Compose)
UV 包管理器(安装指南)
8GB+ 内存和 20GB+ 可用磁盘空间
# 1. 克隆并设置
git clone <repository-url>
cd arxiv-paper-curator
# 2. 配置环境(重要!)
cp .env.example .env
# .env 文件包含 OpenSearch、arXiv API 和服务连接的所有必要配置。
# 默认配置开箱即用。
# 你需要添加 Jina embeddings 免费 API 密钥和 langfuse 密钥(查看博客)
# 3. 安装依赖
uv sync
# 4. 启动所有服务
docker compose up --build -d
# 5. 验证一切正常
curl http://localhost:8000/api/v1/health
📚 每周学习路径
📥 克隆特定周的发布版本:
# 克隆特定周的代码
git clone --branch <WEEK_TAG> https://github.com/jamwithai/arxiv-paper-curator
cd arxiv-paper-curator
uv sync
docker compose down -v
docker compose up --build -d
# 将 <WEEK_TAG> 替换为:week1.0、week2.0 等
📊 访问你的服务
📚 第 1 周:基础设施 foundation ✅
从这里开始!掌握为现代 RAG 系统提供动力的基础设施。
🎯 学习目标
使用 Docker Compose 完成基础设施设置
带自动文档和健康检查的 FastAPI 开发
PostgreSQL 数据库配置和管理
OpenSearch 混合搜索引擎设置
Ollama 本地 LLM 服务配置
服务编排和健康监控
配备代码质量工具的专业开发环境
🏗️ 架构概览

基础设施组件:
FastAPI:REST 端点,支持异步(端口 8000)
PostgreSQL 16:论文元数据存储(端口 5432)
OpenSearch 2.19:带仪表板的搜索引擎(端口 9200、5601)
Apache Airflow 3.0:工作流编排(端口 8080)
Ollama:本地 LLM 服务器(端口 11434)
# 启动第 1 周笔记本
uv run jupyter notebook notebooks/week1/week1_setup.ipynb
完成指南:按照第 1 周笔记本进行动手设置和验证步骤。
博客文章:为 RAG 系统提供动力的基础设施 - 详细讲解和生产级见解
📚 第 2 周:数据摄取管道 ✅
在第 1 周基础设施之上构建:学习自动获取、处理和存储学术论文。
🎯 学习目标
arXiv API 集成,包含限速和重试逻辑
使用 Docling 进行科学 PDF 解析
使用 Apache Airflow 实现自动化数据摄取管道
元数据提取和存储工作流
从 API 到数据库的完整论文处理流程
🏗️ 架构概览

数据管道组件:
MetadataFetcher:🎯 协调整个管道的主编排器
ArxivClient:带重试逻辑的限速论文获取
PDFParserService:Docling 驱动的科学文档处理
Airflow DAG:自动化每日论文摄取工作流
PostgreSQL 存储:结构化论文元数据和内容
📓 实现指南
# 启动第 2 周笔记本
uv run jupyter notebook notebooks/week2/week2_arxiv_integration.ipynb
完成指南:按照第 2 周笔记本进行动手实现和验证步骤。
博客文章:为 RAG 构建数据摄取管道 - arXiv API 集成和 PDF 处理
📚 第 3 周:关键词搜索优先——关键基础
在前 2 周的基础上构建:实现专业 RAG 系统所依赖的关键词搜索基础。
🎯 学习目标
为什么关键词搜索对 RAG 系统至关重要(基础优先方法)
OpenSearch 索引管理、映射和搜索优化
BM25 算法及有效关键词搜索背后的数学原理
用于构建复杂搜索查询(带过滤和增强)的查询 DSL
搜索分析,用于衡量相关性和性能
真实公司使用的生产模式
🏗️ 架构概览

搜索基础设施组件:
OpenSearch 服务:src/services/opensearch/ - 专业搜索服务实现
搜索 API:src/routers/search.py - 带 BM25 评分的搜索 API 端点
学习材料:notebooks/week3/ - 完整的 OpenSearch 集成指南
质量指标:精确率、召回率和相关性评分
# 启动第 3 周笔记本
uv run jupyter notebook notebooks/week3/week3_opensearch.ipynb
完成指南:按照第 3 周笔记本进行动手 OpenSearch 设置和 BM25 搜索实现。
博客文章:每个 RAG 系统都需要搜索基础 - 使用 OpenSearch 的完整 BM25 实现
📚 第 4 周:分块与混合搜索——语义层
在第 3 周的基础上构建:添加使搜索真正智能的语义层。
🎯 学习目标
基于章节的分块与智能文档分割
使用 Jina AI 集成的生产级嵌入及回退策略
使用 RRF 融合掌握混合搜索,结合关键词 + 语义检索
统一 API 设计,单一端点支持多种搜索模式

混合搜索基础设施组件:
Text Chunker:src/services/indexing/text_chunker.py - 支持重叠策略的分段感知分块
Embeddings Service:src/services/embeddings/ - 使用 Jina AI 的生产级 embedding 管道
Hybrid Search API:src/routers/hybrid_search.py - 支持所有模式的统一搜索 API
学习资料:notebooks/week4/ - 完整的混合搜索实现指南
# 启动 Week 4 notebook
uv run jupyter notebook notebooks/week4/week4_hybrid_search.ipynb
完成指南:按照 Week 4 notebook 完成动手实现和验证步骤。
博客文章:The Chunking Strategy That Makes Hybrid Search Work - 生产级分块与 RRF 融合实现
在 Week 4 混合搜索的基础上:添加 LLM 层,将搜索转化为智能对话。
使用 Ollama 进行本地 LLM 集成,实现完整数据隐私
性能优化,提示词减少 80%(速度提升 6 倍)
使用 Server-Sent Events 实现流式输出,实时响应
双 API 设计,标准端点和流式端点并行
交互式 Gradio 界面,支持高级参数控制

完整 RAG 基础设施组件:
RAG 端点:src/routers/ask.py - 双端点(/api/v1/ask + /api/v1/stream)
Ollama Service:src/services/ollama/ - 优化提示词的 LLM 客户端
System Prompt:src/services/ollama/prompts/rag_system.txt - 针对学术论文优化
Gradio Interface:src/gradio_app.py - 支持流式输出的交互式 Web UI
启动脚本:gradio_launcher.py - 简易启动脚本(运行在 7861 端口)
# 启动 Week 5 notebook
uv run jupyter notebook notebooks/week5/week5_complete_rag_system.ipynb
# 启动 Gradio 界面
uv run python gradio_launcher.py
# 打开 http://localhost:7861
完成指南:按照 Week 5 notebook 完成动手 LLM 集成和 RAG 管道实现。
博客文章:The Complete RAG System - 完整 RAG 系统,集成本地 LLM 与优化技术
在 Week 5 完整 RAG 系统的基础上:添加可观测性、性能优化和生产级监控。
Langfuse 集成,端到端 RAG 管道追踪
Redis 缓存策略,智能缓存键与 TTL 管理
性能监控,延迟和成本的实时仪表板
可观测性和优化的生产级模式
成本分析与 LLM 使用优化(缓存带来 150-400 倍加速)

生产级基础设施组件:
Langfuse Service:src/services/langfuse/ - 完整的 RAG 特定指标追踪集成
Cache Service:src/services/cache/ - Redis 客户端,支持精确匹配缓存和优雅降级
更新后的端点:src/routers/ask.py - 集成追踪和缓存中间件
Docker 配置:docker-compose.yml - 新增 Redis 服务和 Langfuse 本地实例
学习资料:notebooks/week6/ - 完整的监控与缓存实现指南
# 启动 Week 6 notebook
uv run jupyter notebook notebooks/week6/week6_cache_testing.ipynb
完成指南:按照 Week 6 notebook 完成动手 Langfuse 追踪和 Redis 缓存实现。
博客文章:Production-ready RAG: Monitoring & Caching - 生产级 RAG,集成监控与缓存
在 Week 6 生产级系统的基础上:添加智能推理、多步骤决策,以及 Telegram Bot 集成,实现移动优先的 AI 交互。
LangGraph 工作流,基于状态的多 Agent 编排与决策节点
护栏实现,查询验证与领域边界检测
文档评分,语义相关性评估
查询重写,自动查询优化与更好检索效果
自适应检索,多轮检索尝试与智能降级
Telegram Bot 集成,异步操作与错误处理
推理透明度,暴露 Agent 决策过程

Agentic RAG 基础设施组件:
Agent Nodes:src/services/agents/nodes/ - 护栏、检索、评分、重写和生成节点
工作流编排:src/services/agents/agentic_rag.py - LangGraph 工作流协调
Telegram Bot:src/services/telegram/ - 命令处理器和消息处理
Agentic 端点:src/routers/agentic_ask.py - Agentic RAG API 端点
学习资料:notebooks/week7/ - Week 7 学习资料与示例
# 启动 Week 7 notebook
uv run jupyter notebook notebooks/week7/week7_agentic_rag.ipynb
完成指南:按照 Week 7 notebook 完成动手 LangGraph Agentic RAG 和 Telegram Bot 实现。
博客文章:Agentic RAG with LangGraph and Telegram - 构建具有决策能力、自适应检索和移动端访问的智能 Agent
cp .env.example .env
# 根据你的环境编辑 .env
JINA_API_KEY - Week 4+ 必须(使用 embedding 的混合搜索)
TELEGRAM__BOT_TOKEN - Week 7 必须(Telegram Bot 集成)
LANGFUSE__PUBLIC_KEY 和 LANGFUSE__SECRET_KEY - Week 6 可选(监控)
完整配置:参见 .env.example 获取所有可用选项和详细文档。
开发工具: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/ # 工作流编排(DAGs)
├── tests/ # 测试套件
└── compose.yml # Docker 服务编排
API 文档:访问 http://localhost:8000/docs 查看交互式 API 浏览器
# 查看所有可用命令
make help
# 快速工作流
make start # 启动所有服务
make health # 检查所有服务健康状态
make test # 运行测试
make stop # 停止服务
# 如果你更习惯直接使用命令
docker compose up --build -d # 启动服务
docker compose ps # 查看状态
docker compose logs # 查看日志
uv run pytest # 运行测试
服务启动不了?等待 2-3 分钟,检查 docker compose logs
端口冲突?停止占用 8000、8080、5432、9200 端口的其他服务
内存问题?增加 Docker Desktop 内存分配
查看 Week 1 notebook 故障排除章节
查看服务日志:docker compose logs [service-name]
完全重置:docker compose down --volumes && docker compose up --build -d
本课程完全免费!你只需要为可选服务支付极少量费用:
本地开发:$0(所有内容在本地运行)
可选云 API:外部 LLM 服务约 $2-5(如选用)
从 Week 1 部署 notebook 开始,构建你的第一个生产级 RAG 系统!
献给想要掌握现代 AI 工程的学习者
由 Shirin Khosravi Jam 和 Shantanu Ladhwe 精心打造
MIT License - 详见 LICENSE 文件。