huangjia2019/rag-in-action
End-to-end RAG system design, evaluation, and optimization. 极客时间RAG训练营,RAG 10大组件全面拆解,4个实操项目吃透 RAG 全流程。RAG的落地,往往是面向业务做RAG,而不是反过来面向RAG做业务。这就是为什么我们需要针对不同场景、不同问题做针对性的调整、优化和定制化。魔鬼全在细节中,我们深入进去探究。
项目概览
这是一个代码仓库,配套一门在线实战课程(极客时间上的《RAG系统研发实战》)。它教你从零构建一个基于DeepSeek的RAG系统——即检索增强生成系统。简单说,RAG是一种让AI大模型能参考外部知识库来回答问题的技术,本仓库提供了完整实现代码和教学模块。
核心内容:模块化设计
仓库被划分成11个模块,每个模块对应RAG流水线中的一个步骤,按顺序学习即可:
| 模块 | 功能 | 主要技术(粗略) |
|---|---|---|
00-简单RAG |
最基础的RAG示例 | LangChain/LlamaIndex |
01-数据导入 |
加载和处理文档 | pandas, PyPDF2 |
02-文本切块 |
把长文切成小块 | LangChain Splitters |
03-向量嵌入 |
把文本转成向量 | HuggingFace, BGE |
04-向量存储 |
存储和检索向量 | Milvus, Chroma |
05-检索前处理 |
优化检索问题的质量 | Query Expansion |
06-索引优化 |
构建更好的索引 | 层次索引、关键词索引 |
07-检索后处理 |
重排和过滤检索结果 | 重排序模型等 |
08-响应生成 |
根据检索结果生成回答 | LLM集成(如DeepSeek) |
09-系统评估 |
评估系统效果 | RAGAS, TruLens |
10-高级RAG |
更复杂的RAG变体 | Graph RAG, Multi-Agent |
每个模块都有独立示例和说明文档,建议按编号顺序逐步实践。
运行环境和依赖
- 硬件:
- GPU版:NVIDIA GPU(建议≥8GB显存),CUDA 11.8+,cuDNN 8+。
- CPU版:推荐16GB+内存,4核以上处理器。
- 操作系统:Ubuntu 22.04、macOS(Intel / Apple Silicon)、Windows(建议用WSL2+Ubuntu)。
- Python:3.10或更高。
- 框架:支持LangChain和LlamaIndex两个主流框架,提供了对应的
requirements文件,按GPU/CPU分别安装。
环境配置示例
以LangChain + GPU(Ubuntu)为例:
# 创建虚拟环境(建议使用)
python -m venv venv-rag-langchain
source venv-rag-langchain/bin/activate
# 或使用conda
conda create -n venv-rag-langchain python=3.10.12
conda activate venv-rag-langchain
# 安装依赖
pip install -r 91-环境-Environment/requirements_langchain_20250413_Ubuntu-with-GPU.txt
README中给出了所有组合(CPU/GPU × LangChain/LlamaIndex × 不同OS)的完整安装命令。
特殊依赖
- PDF处理:需额外安装
requirements_camelot,以及系统级依赖(Ubuntu需ghostscript和python3-tk;macOS需brew install ghostscript tcl-tk;Windows需手动装Ghostscript)。 - 标注工具:用
requirements_marker安装。
使用步骤
- 选择与你的环境匹配的
requirements文件,创建虚拟环境并安装依赖。 - 从
00-简单RAG开始,按模块顺序学习。 - 每个模块有独立示例脚本和说明。
注意事项
- GPU版要确保CUDA驱动正确。
- 不同系统可能需要额外系统库。
- 强烈建议使用虚拟环境,避免依赖冲突。
- 部分模块可能需要额外下载模型或配置API密钥。
常见问题(README中指出)
- CUDA错误:检查NVIDIA驱动和CUDA版本。
- 内存不足:减小批处理或改用CPU版。
- 依赖冲突:严格按requirements文件装,用虚拟环境隔离。
开源与许可证
项目采用MIT许可证,欢迎提交Issue或Pull Request。
以上内容完全基于README原文,未添加任何未提及的信息。
Related
- Project
- Project
- Project
- Project