检索增强生成(RAG)系统学习与实现项目,涵盖从基础到高级的 RAG 技术栈。
本项目系统地介绍了如何使用LangChain构建生产级 RAG 系统,包含:
- 📄 文档处理:多种格式文档加载与解析
- 🔪 文本分割:智能分块策略
- 🎯 向量检索:主流向量数据库对比与实现
- 🤖 LLM 集成:OpenAI、DeepSeek 等模型支持
- 🔁 Reranker:检索结果重排序优化
- 📊 评估体系:RAG 系统效果评估
- 🧠 Agent 系统:多 Agent 协作框架
运行 rag_chat.ipynb 快速搭建一个基于 OpenAI 的 RAG 系统:
# 加载文档 -> 分割 -> 嵌入 -> 检索 -> 生成参考 rag_deepseekR1.ipynb 了解如何使用 DeepSeek 模型构建 RAG。
RAG_langchain/
├── agent/ # Agent 框架实现
│ ├── multi_agent/ # 多 Agent 协作系统
│ └── tool_call/ # 工具调用实现
├── vectorDB/ # 向量数据库相关
│ ├── metadatafilter.ipynb
│ └── flat_search.ipynb
├── learn/ # 核心学习模块
│ ├── doc_loader/ # 文档加载器
│ ├── text_splitter/ # 文本分割策略
│ ├── embedding_model/ # 嵌入模型
│ ├── reranker/ # 重排序模型
│ ├── evaluation/ # 评估方法
│ ├── advanced_method/ # 高级检索方法
│ └── Long-Context-RAG/ # 长上下文 RAG
├── chunsize/ # 分块大小优化
├── graph_rag/ # Graph RAG 实现
├── RLM/ # RLM 相关
├── data/ # 示例数据
└── *.ipynb # 主要实现 notebook
- 基础加载:learn/doc_loader/PDF_loader.ipynb
- PyPDFLoader、UnstructuredPDFLoader 等基础加载器
- 进阶解析:learn/doc_loader/pdf_parse.ipynb
- 处理复杂 PDF 格式(表格、多列布局等)
- 基础分割:learn/text_splitter/textspliter_ex.ipynb
- CharacterTextSplitter、RecursiveCharacterTextSplitter
- 可视化分割:理解分割效果
- 模型选择:learn/embedding_model/
- 如何选择合适的 Embedding 模型?
- OpenAI 可变维度 Embedding
- 多模态检索:learn/embedding_model/Gemini_Embedding_2_Multimodal_Retrieval.ipynb
- 使用 Gemini Embedding 2 实现 Multimodal Retrieval
- 测试对比:embedding_test/
- 测试对比:embedding_test/
- 基础检索:vectorDB/
- 元数据过滤:metadatafilter.ipynb
- 向量库对比:Chroma vs FAISS vs Milvus
- Reranker 模型:learn/reranker/
- 什么是 Reranker?
- 如何在 RAG 中使用 Reranker?
- 评估指标:learn/evaluation/
- 准确率、召回率、响应质量等指标
- RAGAS等评估框架
- 快速体验:运行 rag_chat.ipynb 了解 RAG 基本流程
- 文档处理:学习 doc_loader 掌握文档加载
- 文本分割:学习 text_splitter 理解分块策略
- 嵌入模型:学习 embedding_model 选择合适的模型
- 向量检索:深入研究 vectorDB/ 不同向量库的特点
- 检索优化:学习 reranker 提升检索精度
- 系统评估:学习 evaluation 建立评估体系
- 高级方法:探索 advanced_method
- RLM:RLM/ 强化学习优化
- 工具调用:agent/tool_call/
- 基于 Qwen 的 Function Calling
- 多 Agent 协作:agent/multi_agent/
- AutoGen、LangGraph 等框架
- 分块优化:chunsize/ 最佳分块大小探索
- 元数据过滤:vectorDB/metadatafilter.ipynb
- 混合检索:稠密检索 + 稀疏检索
如果你觉得这个项目对你有帮助,请给个 Star 支持一下!