Home
Softono

RAG LEARN

Open source MIT Jupyter Notebook
26
Stars
2
Forks
0
Issues
2
Watchers
3 months
Last Commit

 About RAG LEARN

A structured learning repo for retrieval-augmented generation, from foundations to production patterns.

Platforms

Web Self-hosted

Languages

Jupyter Notebook

Need Help Installing RAG LEARN?

We provide expert installation service for this software. Our team will install, configure, and secure RAG LEARN on your server. plans start at just $30.

RAG-LEARN

A structured learning repo for retrieval-augmented generation, from practical foundations to enterprise-scale retrieval systems.

GitHub · AgentsGalaxy

This repository is designed as a learning map, not a single demo. It covers data cleaning, retrieval, answer generation, GraphRAG, vector database architecture, and multimodal directions for people who want a more systematic RAG path.

Why this repo exists

  • collect RAG concepts, pitfalls, and runnable examples in one place
  • give learners a progression from basics to production-oriented topics
  • keep enterprise retrieval concerns close to hands-on notebooks and notes

中文说明

RAG的道与术 🚀

从零开始学习检索增强生成(Retrieval-Augmented Generation)技术,掌握企业级知识库搭建的完整方法论

Python LangChain License

📖 项目简介

在AI大模型时代,我们经常需要让AI处理企业内部文档、专有数据等非公开信息。但由于这些内容不在模型的训练范围内,就会出现知识盲区。RAG技术很好地解决了这个问题 - 它能让AI模型实时获取并理解我们提供的专有知识,从而针对特定领域或场景提供更加准确和相关的回答。

本项目是一个系统化的RAG实战教程,涵盖了从基础概念到高级应用的完整知识体系,特别关注实际项目中遇到的各种问题及其解决方案。

✨ 适合人群

  • 🎓 正在学习大模型应用开发的同学
  • 💼 需要搭建企业知识库的工程师
  • 🔧 想要解决RAG实践问题的开发者
  • 🧪 对AI技术感兴趣的研究人员

🌟 为什么选择本教程

  • 从问题出发:不只是介绍技术,更关注实际项目中的"七大坑"及解决方案
  • 代码可运行:每个概念都配有可执行的Jupyter Notebook代码示例
  • 架构清晰:按照"输入优-查得准-表达好"的优化思路组织内容
  • 持续更新:跟踪最新技术趋势,不断补充新内容

📚 目录结构

RAG/
├── README.md                          # 项目总览(本文件)
├── requirements.txt                   # Python依赖包
├── .gitignore                         # Git忽略配置
│
├── 📘 docs/                           # 基础理论文档
│   └── Readme.md                      # RAG基础概念与背景知识
│
├── 🔧 01_data_clean/                  # 第一步:数据清洗与预处理
│   └── data_process.ipynb             # 数据格式化、图片表格处理
│
├── 🔍 02_data_retriever/              # 第二步:检索技术
│   ├── data_retriever.ipynb           # 向量、关键词、图检索对比
│   ├── embedding_models.md            # Embedding模型选择指南
│   ├── embedding_compare.ipynb        # 模型效果对比实验(待开发)
│   ├── embedding_finetune.ipynb       # 模型微调教程(待开发)
│   └── rag_teach/                     # 示例知识库
│       ├── rag_teach.faiss            # FAISS向量索引
│       └── rag_teach.pkl              # 向量数据
│
├── 🎯 03_llm_answer/                  # 第三步:LLM答案生成
│   ├── llm_answer.ipynb               # 基础RAG:Prompt优化、答案生成
│   └── media_coverage_report.docx     # 示例文档
│
├── 🕸️ 04_graph_rag/                   # 第四步:图检索(GraphRAG)
│   ├── README.md                      # GraphRAG原理与应用场景
│   ├── README_arch.md                 # 模块化架构说明
│   ├── graph_rag_basic.ipynb          # 基础图检索:Neo4j + LangChain(待开发)
│   └── graphrag_microsoft.ipynb       # Microsoft GraphRAG实现(待开发)
│
├── 🤖 05_rag_agent/                   # 第五步:RAG智能体(高级)
│   ├── base_rag_agent.ipynb           # 智能RAG:回答风格、记忆管理
│   └── extend_adaptive_rag.ipynb      # 自适应RAG:路由、联网补充
│
├── 📊 06_rag_evaluation/              # 第六步:效果评估(开发中)
│   └── (待补充评估方法)
│
├── 🗄️ 07_vector_database_enterprise/  # 第七步:企业级向量数据库
│   ├── README.md                      # 向量数据库选型与架构
│   ├── milvus_architecture.md         # Milvus架构深度解析
│   ├── interview_guide.md             # 面试答题模板
│   ├── milvus_basic_setup.ipynb       # Milvus基础部署与使用(待开发)
│   ├── milvus_segment_management.ipynb # Segment生命周期管理(待开发)
│   ├── milvus_news_system.ipynb       # 企业新闻检索系统完整实现(待开发)
│   └── milvus_production_config.yaml  # 生产环境配置模板
│
├── 🎨 08_multimodal_embedding/        # 第八步:多模态嵌入(新增)
│   ├── README.md                      # 多模态嵌入原理与应用
│   ├── clip_basics.ipynb              # CLIP图文检索入门(待开发)
│   ├── ecommerce_image_search.ipynb   # 电商产品搜索系统(待开发)
│   ├── photo_album_search.ipynb       # 智能相册管理(待开发)
│   ├── video_search.ipynb             # 视频内容检索(待开发)
│   └── multimodal_rag_system.ipynb    # 多模态RAG系统(待开发)
│
├── 🚀 future_practice/                # 技术探索与未来方向
│   └── Readme.md                      # 待实践的技术清单
│
├── 📄 paper_learning/                 # 相关论文学习
│   └── GraphRAG综述.pdf
│
├── 📎 示例文档/
│   ├── LLaMA2.pdf                     # 测试用PDF文档
│   └── LLaVA.pdf                      # 测试用PDF文档
│
├── 🖼️ images/ & imgs/                 # 文档图片资源
│
├── main.py                            # FastAPI服务主程序
└── image_rag.ipynb                    # 多模态RAG示例

🎯 学习路线

第一阶段:理解RAG核心概念

目标:掌握RAG的基本原理和应用场景

  1. 📖 阅读 基础知识文档
    • RAG是什么?为什么需要RAG?
    • RAG的核心步骤
    • RAG的七大常见问题

学习时间:30分钟

第二阶段:输入优化 - 让数据更干净

目标:解决图片、表格等复杂格式的数据处理问题

  1. 🔧 实践 数据清洗

    • 内容精简与格式标准化
    • 图片内容提取(多模态)
    • 表格转文本方法
  2. 🚀 进阶 自适应RAG

    • 智能文档解析
    • 数据质量控制

解决问题

  • ✅ 图片内容无法导入
  • ✅ 表格内容检索差

学习时间:2-3小时

第三阶段:查得准 - 选择最佳检索方式

目标:根据场景选择合适的检索技术

  1. 🔍 实践 检索技术对比

    • 向量检索(Embedding + Rerank)
    • 关键词检索(BM25)
    • 图检索(GraphRAG)
    • 混合检索策略
  2. 📚 进阶 Embedding模型选择

    • OpenAI vs BGE vs JinaAI
    • 中文模型推荐
    • 成本与性能平衡
    • 模型选择决策树
  3. 🕸️ 专题 GraphRAG图检索

    • 知识图谱构建
    • Neo4j + LangChain
    • GraphRAG vs 向量检索
    • 适用场景判断

解决问题

  • ✅ 提问总是检索不到对应的文本块
  • ✅ 对长文本提问总结性问题总是回答不全
  • ✅ 复杂关系查询效果差

学习时间:6-8小时

第四阶段:表达好 - 优化回答质量

目标:让AI回答更准确、更符合需求

  1. 🎯 实践 LLM答案生成
    • Prompt工程基础
    • 基于检索内容生成答案
    • 答案结构化
    • 引用来源标注

解决问题

  • ✅ 查到的知识是对的,但是回答的语气、口吻和精细度不佳

学习时间:2-3小时

第五阶段:高级应用 - RAG智能体

目标:实现更智能的RAG系统

  1. 🤖 实践 基础RAG智能体

    • 回答风格和语气调整
    • 对话记忆管理
    • 避免编造和幻觉
  2. 🚀 进阶 自适应RAG

    • 智能路由:知识库查询 vs 联网查询
    • 知识补充:缺失知识的联网补充
    • 准确性控制:强制基于知识库回答

解决问题

  • ✅ 知识库特别大,难以完全测试来保证准确度

学习时间:3-4小时

第六阶段:企业级实战 - 向量数据库深度

目标:掌握生产级向量数据库部署和优化

  1. 🗄️ 深入 Milvus架构原理
  • 7层数据组织架构
  • Growing/Sealed Segment机制
  • Flush与Compaction策略
  • 三层存储架构设计
  1. 💼 面试 向量数据库面试指南
  • 高频面试问题
  • 标准答题模板
  • 实战场景设计

解决问题

  • ✅ FAISS无法满足大规模生产需求
  • ✅ 不了解向量数据库底层原理
  • ✅ 面试中无法深入讲解技术细节

学习时间:4-6小时

第七阶段:多模态扩展 - 突破文本局限

目标:学习多模态嵌入技术,实现图文音视频联合检索

  1. 🎨 探索 多模态嵌入
  • CLIP图文联合嵌入
  • 以图搜图、以文搜图
  • 视频内容检索
  • 多模态RAG系统

解决问题

  • ✅ 纯文本RAG无法处理图像内容
  • ✅ 需要实现以图搜图功能
  • ✅ 视频、音频检索需求
  • ✅ 构建更丰富的多模态应用

学习时间:3-5小时(理论)+ 按需实践

🔥 快速开始

环境要求

  • Python 3.10+
  • 8GB+ RAM
  • OpenAI API 或 Azure OpenAI 服务

安装步骤

# 1. 克隆项目
git clone <repository-url>
cd RAG

# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# 或
venv\Scripts\activate  # Windows

# 3. 安装依赖
pip install -r requirements.txt

# 4. 配置环境变量
# 创建 .env 文件,添加以下内容:
# AZURE_OPENAI_API_KEY=your_api_key
# AZURE_OPENAI_ENDPOINT=your_endpoint
# 或使用 OpenAI:
# OPENAI_API_KEY=your_api_key

# 5. 启动Jupyter
jupyter notebook

运行第一个示例

打开 02_data_retriever/data_retriever.ipynb,按顺序运行代码单元,体验向量检索的完整流程。

运行Web服务

# 启动FastAPI服务
python main.py

# 访问 http://localhost:8005
# API文档:http://localhost:8005/docs

📊 RAG优化三原则

1. 输入优 - 避免添加无效内容

  • 内容精简:只导入会被提问到的资料
  • 内容准确:避免歧义和矛盾的描述
  • 格式标准化:图片、表格转为可检索的文本

推荐工具OmniParse

2. 查得准 - 选择合适的检索方式

检索方式 推荐场景 优点 缺点
向量检索 规章条文等上下文关联度不大的内容 速度快,能够语义检索 对数字关键词不敏感,可能遗漏信息
图检索 小说、人物关系等复杂上下文内容 包括全文相关内容,不受长度限制 构建知识图谱成本高
关键词检索 有具体数字和数值的内容 精准匹配 需要记住关键词

3. 表达好 - 优化回答风格

  • Prompt工程:设计合适的系统提示词
  • 风格控制:调整回答的正式程度、详细程度
  • 记忆管理:保持上下文连贯性
  • 幻觉控制:避免AI编造不存在的信息

🛠️ 技术栈

  • LLM框架:LangChain
  • 大模型:OpenAI GPT-4 / Azure OpenAI
  • 向量数据库:FAISS、ChromaDB
  • Embedding模型:OpenAI text-embedding-3-small
  • 文档处理:Unstructured、pdf2image
  • Web框架:FastAPI
  • 开发环境:Jupyter Notebook

🤝 参与贡献

我们欢迎大家一起参与到RAG技术的探索中来!

如何贡献

  1. 🐛 提交Issue:发现bug或有改进建议
  2. 💡 提出想法:在 future_practice 中添加你想探索的技术
  3. 📝 改进文档:完善教程内容或修正错误
  4. 💻 贡献代码:提交Pull Request

待实践的技术(欢迎认领)

已完成 ✅:

  • Embedding模型选择指南(已完成)
  • GraphRAG原理与应用(已完成)
  • Milvus企业级架构(已完成)
  • 向量数据库面试指南(已完成)

待开发 📋:

  • Embedding模型对比实验(02_data_retriever/embedding_compare.ipynb)
  • Embedding模型微调方法(02_data_retriever/embedding_finetune.ipynb)
  • Neo4j图检索实战(04_graph_rag/graph_rag_basic.ipynb)
  • Microsoft GraphRAG实现(04_graph_rag/graphrag_microsoft.ipynb)
  • Milvus基础部署教程(07_vector_database_enterprise/milvus_basic_setup.ipynb)
  • Segment管理实战(07_vector_database_enterprise/milvus_segment_management.ipynb)
  • 企业新闻检索系统(07_vector_database_enterprise/milvus_news_system.ipynb)
  • CLIP图文检索入门(08_multimodal_embedding/clip_basics.ipynb)
  • 电商产品搜索系统(08_multimodal_embedding/ecommerce_image_search.ipynb)
  • 智能相册管理(08_multimodal_embedding/photo_album_search.ipynb)
  • 视频内容检索(08_multimodal_embedding/video_search.ipynb)
  • 多模态RAG系统(08_multimodal_embedding/multimodal_rag_system.ipynb)
  • RAG自动评估框架
  • LightRAG实现与对比
  • 更多期待你的贡献...

详见:future_practice

📖 相关资源

推荐阅读

相关项目

📧 联系方式

如有问题或建议,欢迎通过以下方式联系:

  • 📮 提交 Issue
  • 💬 参与 Discussions
  • 📧 发送邮件

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件


⭐ 如果这个项目对你有帮助,请给个Star支持一下!

Happy Learning! 🎉