RAG_Techniques:基于 RAG 技术的检索增强生成系统项目

This repository showcases various advanced techniques for Retrieval-Augmented Generation (RAG) systems. Each technique has a detailed notebook tutorial.

分支1Tags2
文件最后提交记录最后更新时间
4 个月前
28 天前
4 个月前
2 个月前
28 天前
1 个月前
1 年前
1 年前
10 个月前
1 年前
15 天前
5 个月前

高级 RAG 技术 🚀

提升您的检索增强生成系统

一个由社区驱动的中心,包含 42+ 可运行的笔记本,涵盖从基础到前沿的 RAG 技术——构建更准确、上下文丰富的检索系统所需的直觉、代码和参考资料。


PRs 欢迎 LinkedIn Twitter Reddit Discord 赞助

赞助商 ❤️

我们衷心感谢为该项目做出重大贡献的组织和个人。

公司赞助商

个人赞助商

📫 保持更新!

🚀
前沿
更新
💡
专家
洞见
🎯
顶尖 0.1%
内容

订阅 DiamantAI 通讯

加入 50,000+ AI 爱好者的行列,获取独特的前沿见解和免费教程! 此外,订阅者还能独家抢先体验,并在我的书籍及即将推出的 RAG Techniques 课程中享受 33% 的特别折扣!

DiamantAI 的通讯

简介

检索增强生成(RAG)正在彻底改变我们将信息检索与生成式 AI 相结合的方式。本仓库展示了一系列精心策划的高级技术,旨在增强您的 RAG 系统,使其能够提供更准确、上下文相关且全面的响应。

我们的目标是为希望突破 RAG 可能性边界的研究人员和从业者提供宝贵资源。通过营造协作环境,我们致力于加速这一令人兴奋领域的创新。

📖 深入学习:相关书籍

RAG Made Simple

RAG Made Simple - 本仓库的 400 页可视化配套指南。 亚马逊生成式 AI 类畅销书 · 1,500+ 读者 · ⭐ 4.6

立即获取 - 使用优惠码 RAGKING 享受 33% 折扣 → · 免费阅读第 1 章

相关项目

🚀 Agents Towards Production - 面向生产级GenAI智能体的代码优先教程,从原型到规模化部署。

🤖 GenAI Agents - 广泛收集的AI智能体实现与教程。

🖋️ Prompt Engineering Techniques - 从基础到高级的提示词策略。

🧠 Agent Memory Techniques - 30个关于智能体记忆的笔记本:向量存储、知识图谱、Mem0、MemGPT、Zep、Graphiti。

加入社区

贡献让项目更完善 - 通过**CONTRIBUTING.md** 提出想法、分享技术或提供反馈。

r/EducationalAI · Discord · LinkedIn

核心特性

  • 🧠 最先进的RAG增强技术
  • 📚 每种技术的全面文档
  • 🛠️ 实用的实现指南
  • 🌟 定期更新最新进展

高级技术

探索我们广泛的前沿RAG技术列表:

最近新增: MemoRAG(记忆增强检索)、端到端RAG评估、Open-RAG-Eval、JSON RAG。42个笔记本,持续增长中。

# 类别 技术 查看
1 基础 🌱 Basic RAG
2 基础 🌱 RAG with CSV Files
3 基础 🌱 Reliable RAG
4 基础 🌱 Optimizing Chunk Sizes
5 基础 🌱 Proposition Chunking
6 查询增强 🔍 Query Transformations
7 查询增强 🔍 HyDE (Hypothetical Document Embedding)
8 查询增强 🔍 HyPE (Hypothetical Prompt Embedding)
9 上下文增强 📚 Contextual Chunk Headers
10 上下文增强 📚 Relevant Segment Extraction
11 上下文增强 📚 Context Window Enhancement
12 上下文增强 📚 Semantic Chunking
13 上下文增强 📚 Contextual Compression
14 上下文增强 📚 Document Augmentation
15 高级检索 🚀 Fusion Retrieval
16 高级检索 🚀 Reranking
17 高级检索 🚀 Multi-faceted Filtering
18 高级检索 🚀 Hierarchical Indices
19 高级检索 🚀 Dartboard Retrieval
20 高级检索 🚀 Multi-modal RAG with Captioning
21 迭代技术 🔁 Retrieval with Feedback Loop
22 迭代技术 🔁 Adaptive Retrieval
23 评估 📊 DeepEval
24 评估 📊 GroUSE
25 可解释性 🔬 Explainable Retrieval
26 高级架构 🏗️ Graph RAG with LangChain
27 高级架构 🏗️ Microsoft GraphRAG
28 高级架构 🏗️ RAPTOR
29 高级架构 🏗️ Agentic RAG with Contextual AI
30 高级架构 🏗️ Self-RAG
31 高级架构 🏗️ Corrective RAG (CRAG)
32 评估 📊 End-to-End RAG Evaluation
33 评估 📊 Open-RAG-Eval
34 高级 🔬 MemoRAG
35 特殊技术 🌟 Sophisticated Controllable Agent

🌱 基础 RAG 技术

  1. 简单 RAG 🌱

    概述 🔎

    介绍适合新手的基础 RAG 技术。

    实现 🛠️

    从基础检索查询开始,并集成增量学习机制。

  2. 使用 CSV 文件的简单 RAG 🧩

    • LangChain
    • LlamaIndex

    概述 🔎

    介绍使用 CSV 文件的基础 RAG。

    实现 🛠️

    本技术使用 CSV 文件创建基础检索,并与 OpenAI 集成以构建问答系统。

  3. 可靠 RAG 🏷️

    概述 🔎

    通过添加验证和优化步骤增强简单 RAG,确保检索信息的准确性和相关性。

    实现 🛠️

    检查检索文档的相关性,并突出显示用于回答的文档片段。

  4. 选择 chunk 大小 📏

    概述 🔎

    为文本块选择合适的固定大小,以平衡上下文保留和检索效率。

    实现 🛠️

    尝试不同的 chunk 大小,为特定用例找到保留上下文和维持检索速度之间的最佳平衡。

  5. 命题分块 ⛓️‍💥

    概述 🔎

    将文本分解为简洁、完整、有意义的句子,以便更好地控制和处理特定查询(尤其是知识提取)。

    实现 🛠️

    • 💪 命题生成:将 LLM 与自定义提示结合使用,从文档块中生成事实陈述。
    • 质量检查:生成的命题通过评分系统,评估其准确性、清晰度、完整性和简洁性。
  6. 使用 JSON 的简单 RAG

    概述 🔎

    使用 JSON 文档的 RAG 是一种利用 JSON 文件创建检索和问答系统的方法。

    实现 🛠️

    • 📄 数据加载与提取:加载每个条目包含多个字段的 JSON 数据,并合并最相关的文本字段以生成嵌入。
    • 🔍 检索:系统根据用户的查询检索最相关的 JSON 条目。

其他资源 📚

🔍 查询增强

  1. 查询转换 🔄

    概述 🔎

    修改和扩展查询以提高检索效果。

    实现方式 🛠️

    • ✍️ 查询重写:重新表述查询以改善检索结果。
    • 🔙 回溯提示:生成更宽泛的查询以获取更好的上下文检索效果。
    • 🧩 子查询分解:将复杂查询拆分为更简单的子查询。
  2. 假设性问题(HyDE 方法)❓

    概述 🔎

    生成假设性问题以提高查询与数据之间的匹配度。

    实现方式 🛠️

    创建指向数据中相关位置的假设性问题,增强查询与数据的匹配效果。

    其他资源 📚

📚 上下文与内容增强

  1. 假设性提示嵌入(HyPE)❓🚀

    概述 🔎

    HyPE(假设性提示嵌入)是对传统RAG检索的一种增强,它在索引阶段预先计算假设性提示,并将其嵌入到文本块中。这将检索转化为问题-问题匹配任务。这种方法无需在运行时生成合成答案,减少了推理时的计算开销,同时提高了检索的对齐度

    实现 🛠️

    • 📖 预计算问题:HyPE在索引时不为文档块生成嵌入,而是为每个文本块生成多个假设性查询
    • 🔍 问题-问题匹配:用户查询与存储的假设性问题进行匹配,从而实现更好的检索对齐
    • 无运行时开销:与HyDE不同,HyPE不需要在查询时调用LLM,使检索更快、成本更低
    • 📈 更高的精确率和召回率:将检索上下文精确率提高了42个百分点声明召回率提高了45个百分点

    其他资源 📚

  2. 上下文块标题 🏷️

    概述 🔎

    上下文块标题(CCH)是一种创建文档级和节级上下文的方法,并在嵌入文本块之前将这些块标题添加到文本块的开头。

    实现 🛠️

    创建包含文档和/或文档节上下文的块标题,并将其添加到每个文本块的开头,以提高检索准确性。

    其他资源 📚

    dsRAG:实现此技术(以及其他一些高级RAG技术)的开源检索引擎

  3. 相关片段提取 🧩

    概述 🔎

    相关片段提取(RSE)是一种动态构建与给定查询相关的多块文本片段的方法。

    实现 🛠️

    执行检索后处理步骤,分析最相关的文本块,并识别更长的多块片段,为LLM提供更完整的上下文。

  4. 上下文增强技术 📝

概述 🔎

通过对单个句子进行嵌入并将上下文扩展到相邻句子来提高检索准确性。

实现 🛠️

检索最相关的句子,同时获取原始文本中该句子前后的句子。

  1. 语义分块 🧠

概述 🔎

根据语义连贯性而非固定大小划分文档。

实现 🛠️

使用NLP技术识别文档内的主题边界或连贯部分,以获得更有意义的检索单元。

其他资源 📚

  1. 上下文压缩 🗜️

概述 🔎

在保留查询相关内容的同时压缩检索到的信息。

实现 🛠️

使用LLM压缩或总结检索到的文本块,保留与查询相关的关键信息。

  1. 通过问题生成进行文档增强以提升检索效果

概述 🔎

本实现展示了一种文本增强技术,该技术利用额外的问题生成来改进向量数据库中的文档检索。通过生成并整合与每个文本片段相关的各种问题,系统增强了标准检索过程,从而提高了找到可用作生成式问答上下文的相关文档的可能性。

实现 🛠️

使用LLM为文本数据集扩充每个文档可能被问到的所有问题。

🚀 高级检索方法

  1. 融合检索 🔗

    概述 🔎

    通过组合不同的检索方法来优化搜索结果。

    实现方式 🛠️

    将基于关键词的搜索与基于向量的搜索相结合,以实现更全面、更准确的检索。

  2. 智能重排序 📈

    概述 🔎

    应用高级评分机制来提升检索结果的相关性排序。

    实现方式 🛠️

    • 🧠 基于LLM的评分:使用语言模型对每个检索到的文本块进行相关性评分。
    • 🔀 交叉编码器模型:将查询与检索到的文档联合重新编码,以进行相似度评分。
    • 🏆 元数据增强排序:将元数据纳入评分过程,实现更细致的排序。

    补充资源 📚

  3. 多维度过滤 🔍

    概述 🔎

    应用多种过滤技术来优化和提升检索结果的质量。

    实现方式 🛠️

    • 🏷️ 元数据过滤:基于日期、来源、作者或文档类型等属性应用过滤条件。
    • 📊 相似度阈值:设置相关性分数阈值,仅保留最相关的结果。
    • 📄 内容过滤:移除不符合特定内容标准或缺少关键关键词的结果。
    • 🌈 多样性过滤:通过过滤掉近乎重复的条目,确保结果的多样性。
  4. 分层索引 🗂️

    概述 🔎

    创建多层级系统,以实现高效的信息导航和检索。

    实现方式 🛠️

    为文档摘要和详细文本块实现双层系统,两者均包含指向数据中相同位置的元数据。

    补充资源 📚

  5. 飞镖盘检索 🎯

    • LangChain

    概述 🔎

    优化检索中的相关信息增益

    实现方式 🛠️

    • 将相关性和多样性整合到单一评分函数中,并直接对其进行优化。
    • 概念验证表明,当数据库数据密集时,普通RAG性能欠佳,而飞镖盘检索则表现更优。
  6. 多模态检索 📽️

    概述 🔎

    扩展RAG的能力,使其能够处理多种数据类型,以生成更丰富的响应。

    实现方式 🛠️

    • 带多媒体 captioning 的多模型RAG - 为所有其他多媒体数据(如pdf、ppt等)生成caption,并将其与文本数据一起存储在向量库中,以便共同检索。
    • 基于Colpali的多模型RAG - 无需生成caption,而是将所有数据转换为图像,然后找到最相关的图像并将其传递给视觉大语言模型。

🔁 迭代与自适应技术

  1. 带反馈循环的检索 🔁

    概述 🔎

    实现从用户交互中学习并改进未来检索效果的机制。

    实现方式 🛠️

    收集并利用用户对检索文档相关性和生成响应质量的反馈,以微调检索和排序模型。

  2. 自适应检索 🎯

    概述 🔎

    根据查询类型和用户上下文动态调整检索策略。

    实现方式 🛠️

    将查询分类为不同类别,并为每个类别使用定制化的检索策略,同时考虑用户上下文和偏好。

📊 评估

  1. DeepEval 评估 | 全面的 RAG 系统评估 |

    概述 🔎

    对检索增强生成系统进行评估,涵盖多个指标并创建测试用例。

    实现方式 🛠️

    使用 deepeval 库对 RAG 系统的正确性、忠实度和上下文相关性进行测试用例验证。

  2. GroUSE 评估 | 基于上下文的 LLM 评估 |

    概述 🔎

    使用 GroUSE 框架的指标评估检索增强生成的最终阶段,并在 GroUSE 单元测试上对自定义 LLM 评判器进行元评估。

    实现方式 🛠️

    使用 grouse 包结合 GPT-4 基于 GroUSE 框架的 6 项指标评估上下文关联的 LLM 生成结果,并通过单元测试评估自定义 Llama 3.1 405B 评估器。

  3. 端到端 RAG 评估 | 完整评估流水线 |

    概述 🔎

    全面教程涵盖评估标准选择、LLM 作为评判器指标、RAGAS 集成以及完整评估流水线构建。

    实现方式 🛠️

    • 利用 RAG-12000 数据集构建用于完整性、相关性和幻觉检测的自定义指标。
  4. Open-RAG-Eval | 开源 RAG 评估 |

    概述 🔎

    演示如何使用 open-rag-eval 库进行评估,包括 UMBRELA 评分、AutoNuggetizer 以及引用/幻觉检测。

    实现方式 🛠️

    • 基于 FIQA 金融数据集,使用多种开源指标评估 RAG 流水线。

🧠 记忆增强检索

  1. MemoRAG | 记忆增强检索 |

    概述 🔎

    从零开始实现 MemoRAG——一个具备键值对提取、代理查询生成和多查询检索功能的记忆增强型 RAG 系统。

    实现 🛠️

    • 构建完整的 MemoryStore,包含基于 FAISS 的检索、代理查询以及与标准 RAG 的对比评估。

🔬 可解释性与透明度

  1. 可解释检索 🔍

    概述 🔎

    在检索过程中提供透明度,以增强用户信任并促进系统优化。

    实现 🛠️

    解释特定信息被检索的原因以及它们与查询的关联方式。

🏗️ 高级架构

  1. 基于 Contextual AI 的智能体 RAG 🤖

    • 智能体 RAG

    概述 🔎

    构建基于 Contextual AI 托管平台的金融文档分析生产级智能体 RAG 流水线。本综合教程展示如何利用智能体 RAG,通过智能查询重构、文档解析、重排序和基于事实的语言模型来解决复杂查询。

    实现 🛠️

    • 文档解析器:采用视觉模型的企业级解析,支持复杂表格、图表和多页文档
    • 指令跟随重排序器:具有指令跟随能力的最先进重排序器,可处理冲突信息
    • 基于事实的语言模型(GLM):全球最具事实依据的 LLM,专为减少 RAG 用例中的幻觉而设计
    • LMUnit:用于评估和优化 RAG 系统性能的自然语言单元测试框架
  2. 基于 Milvus 向量数据库的图 RAG 🔍

    • 基于 Milvus 的图 RAG

    概述 🔎

    一种使用 Milvus 向量数据库实现图 RAG 的简单而强大的方法。通过将基于关系的检索与向量搜索和重排序相结合,该技术显著提升了复杂多跳问题的性能。

    实现 🛠️

    • 在独立的 Milvus 集合中存储文本段落和关系三元组(主体-谓词-客体)
    • 通过查询两个集合执行多向检索
    • 使用 LLM 根据检索到的关系与查询的相关性进行重排序
    • 基于最相关的关系检索最终段落
  3. 知识图谱集成(图 RAG)🕸️

    概述 🔎

    整合知识图谱中的结构化数据,以丰富上下文并改进检索效果。

    实现 🛠️

    从知识图谱中检索与查询相关的实体及其关系,将此结构化数据与非结构化文本相结合,以生成更具信息量的响应。

  4. GraphRag(Microsoft)🎯

    • GraphRag

    概述 🔎

    Microsoft GraphRAG(开源)是一种先进的 RAG 系统,它集成了知识图谱以提升 LLM 的性能。

    实现 🛠️

    • 通过从文本单元中提取实体和关系来分析输入语料库。自底向上生成每个社区及其组成部分的摘要。

  5. RAPTOR:树状组织检索的递归抽象处理 🌳

    概述 🔎

    实现一种递归方法,以树状结构处理和组织检索到的信息。

    实现 🛠️

    使用抽象摘要对检索到的文档进行递归处理和总结,将信息组织成树状结构以提供层次化上下文。

  6. 自 RAG 🔁

    概述 🔎

    一种动态方法,结合了基于检索和基于生成的方法,自适应地决定是否使用检索到的信息以及如何在生成响应时最佳利用这些信息。

    实现 🛠️

    • 实现多步骤流程,包括检索决策、文档检索、相关性评估、响应生成、支持度评估和效用评估,以生成准确、相关且有用的输出。

  7. 修正型 RAG 🔧

    概述 🔎

    一种复杂的 RAG 方法,可动态评估和修正检索过程,结合向量数据库、网络搜索和语言模型,以提供高度准确和上下文感知的响应。

    实现 🛠️

    • 集成检索评估器、知识优化器、网络搜索查询重写器和响应生成器组件,创建一个能够根据相关性分数调整信息来源策略,并在必要时组合多个来源的系统。

🌟 特殊高级技术 🌟

  1. 复杂 RAG 任务的精密可控智能体 🤖

    概述 🔎

    一种先进的 RAG 解决方案,旨在处理简单语义相似性检索无法解决的复杂问题。该方法采用精密的确定性图作为高度可控自主智能体的“大脑”🧠,能够从您自己的数据中回答非平凡的问题。

    实现 🛠️

    • 实现多步骤流程,包括问题匿名化、高级规划、任务分解、自适应信息检索与问答、持续重新规划以及严格的答案验证,以确保响应的可靠性和准确性。

快速开始

要在您的项目中开始实施这些高级 RAG 技术:

  1. 克隆此仓库:
    git clone https://github.com/NirDiamant/RAG_Techniques.git
    
  2. 导航到您感兴趣的技术:
    cd all_rag_techniques/technique-name
    
  3. 按照每个技术目录中的详细实现指南操作。

📚 推荐阅读

此列表包含亚马逊联盟链接。作为亚马逊联盟会员,我从符合条件的购买中获得收益。以下每本书都是我已阅读并真诚推荐给该领域工程师的。本仓库的配套书籍单独列在本 README 的顶部。


🌟 支持此项目: 您的赞助将推动 RAG 技术的创新。成为赞助者,帮助维护和扩展这一宝贵资源!

📚 同一作者的更多作品

提示工程:掌握AI交互的艺术——让RAG发挥更佳效果的提示基础。同样的可视化教学方式,包含22种实用技巧。

您是否运营课程、时事通讯或开发者社区?您可以通过向受众推荐《RAG Made Simple》赚取25%的佣金

贡献指南

我们欢迎社区的贡献!如果您有新的技术或改进建议:

  1. Fork 本仓库
  2. 创建您的功能分支:git checkout -b feature/AmazingFeature
  3. 提交您的更改:git commit -m 'Add some AmazingFeature'
  4. 推送到分支:git push origin feature/AmazingFeature
  5. 打开一个 pull request

贡献者

Contributors

许可证

本项目采用自定义非商业许可证授权——详情参见LICENSE文件。


🎓 用AI构建很简单,落地却很难。我的课程*从提示到生产** 教授专业人士使用AI构建生产系统的方法和范式:加入等待列表,锁定创始会员价格。*

⭐️ 如果您觉得本仓库有帮助,请考虑给它一个星标!

关键词:RAG, Retrieval-Augmented Generation, NLP, AI, Machine Learning, Information Retrieval, Natural Language Processing, LLM, Embeddings, Semantic Search, PydanticAI, Agent Frameworks

项目介绍

本仓库展示了各种用于检索增强生成(RAG)系统的先进技术。RAG系统融合信息检索与生成模型,以提供准确且富含上下文信息的响应。【此简介由AI生成】

定制我的领域
25128.31 K3.43 K访问 GitHub