前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RAG_Techniques:深入解析GitHub热门RAG技术宝库

RAG_Techniques:深入解析GitHub热门RAG技术宝库

作者头像
CoderJia
发布于 2025-05-07 06:00:25
发布于 2025-05-07 06:00:25
45500
代码可运行
举报
运行总次数:0
代码可运行

引言

在当今AI领域,检索增强生成(Retrieval-Augmented Generation,简称RAG)技术正以惊人的速度发展,成为将传统信息检索与生成式AI相结合的革命性方法。本文将带您深入探索GitHub上备受瞩目的RAG_Techniques项目,这是目前最全面的RAG技术集锦之一,为研究人员和实践者提供了丰富的高级技术实现和示例。

项目概述

  • 项目名称:RAG_Techniques
  • 创建者:NirDiamant
  • 项目地址:https://github.com/NirDiamant/RAG_Techniques
  • 主要功能:展示和实现各种先进的检索增强生成(RAG)技术
  • 技术栈Python、LangChain、LlamaIndex、各种LLM模型
  • 开源许可证:自定义非商业许可
  • 收藏数:15.9k(截止到2050506)

RAG_Techniques 由 Nir Diamant 创建,旨在提供一个全面的知识中心,展示各种先进的 RAG 技术。从基础实现到专业级解决方案,该项目涵盖了33种不同的技术,每一种都配有详细的实现指南和示例代码。

该项目主要解决的问题是:如何提升 RAG 系统的准确性、上下文相关性和综合响应能力。通过精心策划的技术集合,开发者可以根据自己的具体应用场景选择合适的方法,大幅提升其AI系统的表现。

RAG技术简介与重要性

检索增强生成(RAG)结合了信息检索与生成模型的优势,使AI能够访问和利用外部知识生成回答。与传统的纯生成模型相比,RAG 系统可以:

1、提供更准确的信息:通过检索实际文档而非仅依赖模型参数中的知识

2、减少幻觉问题:生成的内容有明确的信息来源,降低编造事实的风险

3、保持知识更新:可以访问最新数据,而无需重新训练整个模型

4、提高透明度:能够引用信息来源,让用户了解答案的依据

这使得 RAG 成为构建可信 AI 系统的重要技术,特别适用于需要精确、可验证信息的应用场景,如客户支持、医疗、法律和技术文档咨询等领域。

核心功能详解

1. 分类清晰的技术体系

RAG_Techniques 项目将 33 种技术分为几大类别,使开发者能够根据需求快速定位:

  • 基础技术(Foundational) - 包括基本 RAG、CSV 文件集成的 RAG、可靠 RAG 等入门级实现
  • 查询增强(Query Enhancement) - 如 HyDE(Hypothetical Document Embeddings)、HyPE(Hypothetical Prompt Embedding)等
  • 上下文丰富(Context Enrichment) - 如上下文块头部、语义压缩等
  • 高级检索(Advanced Retrieval) - 如自动合并检索、靶心检索、多模态 RAG 等
  • 迭代技术(Iterative Techniques) - 如反馈循环检索、递归检索等
  • 高级架构(Advanced Architecture) - 如知识图谱集成、GraphRAG、RAPTOR、Self-RAG等

每种技术都有详细的概述和实现指南,大多数还提供了可直接在 GitHub 或 Google Colab 上运行的代码实例。

HyDE 代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class HyDERetriever:
    def __init__(self, files_path, chunk_size=500, chunk_overlap=100):
        self.llm = ChatOpenAI(temperature=0, model_name="gpt-4o-mini", max_tokens=4000)

        self.embeddings = OpenAIEmbeddings()
        self.chunk_size = chunk_size
        self.chunk_overlap = chunk_overlap
        self.vectorstore = encode_pdf(files_path, chunk_size=self.chunk_size, chunk_overlap=self.chunk_overlap)
  
  
        self.hyde_prompt = PromptTemplate(
            input_variables=["query", "chunk_size"],
            template="""Given the question '{query}', generate a hypothetical document that directly answers this question. The document should be detailed and in-depth.
            the document size has be exactly {chunk_size} characters.""",
        )
        self.hyde_chain = self.hyde_prompt | self.llm

    def generate_hypothetical_document(self, query):
        input_variables = {"query": query, "chunk_size": self.chunk_size}
        return self.hyde_chain.invoke(input_variables).content

    def retrieve(self, query, k=3):
        hypothetical_doc = self.generate_hypothetical_document(query)
        similar_docs = self.vectorstore.similarity_search(hypothetical_doc, k=k)
        return similar_docs, hypothetical_doc
33种技术分
33种技术分

2. 前沿技术解析

项目中包含了多种前沿RAG技术,以下是几个特别值得关注的:

  • Self-RAG - 一种动态方法,能够自适应地决定是否使用检索的信息以及如何最好地利用它生成响应。实现过程包括检索决策、文档检索、相关性评估、响应生成、支持评估和效用评估等多个步骤。
  • GraphRAG(微软) - 一种将知识图谱集成到 RAG 系统中的高级方法。通过分析输入文本中的实体和关系,自下而上地生成社区及其组成部分的摘要。
  • RAPTOR(递归抽象处理树状组织检索) - 实现递归方法来处理和组织检索的信息,使用抽象摘要递归处理和总结检索的文档,将信息组织成树状结构以获得层次化上下文。
  • Corrective RAG(纠正式RAG) - 一种复杂的 RAG 方法,动态评估和纠正检索过程,结合向量数据库、Web搜索和语言模型,以提供高度准确和上下文感知的响应。
Corrective RAG流程图
Corrective RAG流程图

3. 评估工具与方法

项目还提供了全面的RAG系统评估技术:

  • DeepEval评估 - 使用 deepeval库对 RAG 系统进行正确性、忠实性和上下文相关性的测试。
  • GroUSE评估 - 用于评估 RAG 最终阶段的 GroUSE 框架指标,支持对自定义LLM评判器进行meta评估。

这些评估工具帮助开发者系统性地衡量其 RAG 实现的性能,并进行有针对性的优化。

GroUSE评估
GroUSE评估

安装和使用教程

要开始使用RAG_Techniques项目,请按照以下步骤操作:

1、克隆仓库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/NirDiamant/RAG_Techniques.git

2、导航到感兴趣的技术目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd all_rag_techniques/technique-name

3、按照每个技术目录中的详细实现指南进行操作。

项目中的大多数技术都是通过 Jupyter Notebook 实现的,提供了完整的代码示例和详细注释。同时,许多技术还提供了可执行脚本版本,位于 all_rag_techniques_runnable_scripts目录中。

4、环境要求

  • Python 3.8+
  • 相关依赖包(LangChain、LlamaIndex、OpenAI等)
  • 访问 LLM API(如 OpenAI API 密钥)

应用场景和实际价值

RAG_Techniques 项目中的技术可以应用于各种实际场景:

企业知识库和文档检索

通过实施高级RAG技术,企业可以构建智能知识库系统,使员工能够用自然语言查询公司文档、流程和政策,获得准确、相关的回答。例如:

  • 技术支持团队可以查询产品手册和故障排除指南
  • 法律团队可以搜索和分析合同和法规文件
  • 人力资源部门可以回答关于公司政策的员工问题

教育和研究辅助

研究人员和学生可以使用先进的RAG系统分析大量学术论文和资料:

  • 快速浏览和总结相关研究文献
  • 提取和比较不同来源的关键信息
  • 生成研究报告和文献综述

个性化内容推荐

使用复杂的RAG架构可以构建智能内容推荐系统

  • 新闻聚合器可以根据用户兴趣提供相关文章
  • 电子商务平台可以提供个性化产品描述和推荐
  • 教育平台可以生成适合学生学习风格的内容

结论

NirDiamant/RAG_Techniques 项目是一个宝贵的资源,为开发者提供了构建先进 RAG 系统的多种技术和方法。从基础实现到复杂架构,这个项目涵盖了当前 RAG 领域的最佳实践和创新。

随着 AI 技术的发展,RAG 系统将在提供准确、可靠信息方面发挥越来越重要的作用。通过学习和应用这些技术,开发者可以创建更智能、更实用的AI应用,解决各种领域的实际问题。

无论您是刚接触 RAG 的初学者,还是寻求改进现有系统的经验丰富的开发者,RAG_Techniques项目都能提供有价值的指导和灵感。通过探索这些技术并将其应用到自己的项目中,您可以构建更加强大、更加智能的信息检索和生成系统。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【taro react】---- 【使用 redux 的配置笔记】
1. 目标 学会 yarn 或 npm 安装中间件 学会配置 redux 的 store 学会 store 的接入和使用 2. 安装中间件 安装redux用到的中间件: redux react-redux redux-thunk redux-logger $ yarn add redux react-redux redux-thunk redux-logger # 或者使用 npm $ npm install --save redux react-redux redux-thunk redux-logge
Rattenking
2022/01/06
1.3K0
应用connected-react-router和redux-thunk打通react路由孤立
在我们开发过程中,很多时候,我们需要让组件共享某些数据,虽然可以通过组件传递数据实现数据共享,但是如果组件之间不是父子关系的话,数据传递是非常麻烦的,而且容易让代码的可读性降低,这时候我们就需要一个 state(状态)管理工具。常见的状态管理工具有 redux,mobx,这里选择 redux 进行状态管理。值得注意的是 React 16.3 带来了全新的Context API,我们也可以使用新的 Context API 做状态管理。Redux 是负责组织 state 的工具,但你也要考虑它是否适合你的情况。
Run丘比特
2020/11/19
2.6K0
应用connected-react-router和redux-thunk打通react路由孤立
2021高频前端面试题汇总之React篇
React并不是将click事件绑定到了div的真实DOM上,而是在document处监听了所有的事件,当事件发生并且冒泡到document处的时候,React将事件内容封装并交由真正的处理函数运行。这样的方式不仅仅减少了内存的消耗,还能在组件挂在销毁时统一订阅和移除事件。
zz1998
2021/09/15
2.2K0
React-Redux-DevTools和React-Redux优化
GitHub 地址:https://github.com/reduxjs/redux-devtools
杨不易呀
2023/10/01
3350
前端react面试题(必备)2
this.props是组件之间沟通的一个接口,原则上来讲,它只能从父组件流向子组件。React具有浓重的函数式编程的思想。
beifeng1996
2023/01/04
2.5K0
hook+react-redux让redux使用更简单
实际上,在react-redux中我们只需要了解这三个概念即可使用redux,而实际上这些也不难理解。我们只要掌握一些关键的api,尤其是hook,就可以很轻松地在我们的项目中加入redux
源心锁
2022/08/12
8600
hook+react-redux让redux使用更简单
Redux 原理与实现
Redux 和 React 之间并没有什么关系,脱离了 React,Redux 也可以与其它的 js 库(甚至是原生 js)搭配使用,Redux 只是一个状态管理库,但它与 React 搭配时却很好用,使开发 React 应用更加简介。而使用 Redux 库时,需要先做“配置”,因为这些代码的书写是必不可少的。下面的图是 redux 的工作流:
多云转晴
2020/02/26
4.6K0
taro中创建store
上一篇文章,我们教大家创建了reducers,本次内容教大家用reducers创建store。
挥刀北上
2022/05/11
4820
taro中创建store
Redux-DevTools Error: It looks like you are passing several store enhancers to createStore().
以前 createStore 集成 redux-devtool 的时候提供 3 个参数, 现在需要将后面的 middleware 全部包裹起来:
szhshp
2022/09/21
3150
React项目的服务端渲染改造(koa2+webpack3.11)
选型思路:实现服务端渲染,想用React最新的版本,并且不对现有的写法做大的改动,如果一开始就打算服务端渲染,建议直接用NEXT框架来写 项目地址:https://github.com/wlx200510/react_koa_ssr 脚手架选型:webpack3.11.0 + react Router4 + Redux + koa2 + React16 + Node8.x 主要心得:对React的相关知识更加熟悉,成功拓展自己的技术领域,对服务端技术在实际项目上有所积累 注意点:使用框架前一定确认当前web
卡少
2018/05/16
1.4K0
把redux当做观察者单独使用
提到redux大家肯定会想到react,但是redux这个库可以单独使用,下面我们就来看看如何把redux当做一个观察者来使用。
挥刀北上
2020/08/16
1.6K0
把redux当做观察者单独使用
【Redux】:Redux 指北
Redux 是JavaScript 应用的状态管理容器,提供集中式、可预测的状态管理。
WEBJ2EE
2021/06/15
1.7K0
[OHIF-Viewers]医疗数字阅片-医学影像-辅助工具-Redux DevTools-DevTools for Redux with hot reloading, action replay,
Redux DevTools for debugging application's state changes. The extension provides power-ups for your Redux development workflow. Apart from Redux, it can be used with any other architectures which handle the state.
landv
2020/07/23
8300
[OHIF-Viewers]医疗数字阅片-医学影像-辅助工具-Redux DevTools-DevTools for Redux with hot reloading, action replay,
React之redux学习日志(redux/react-redux/redux-saga)
redux官方中文文档:https://www.redux.org.cn/docs/introduction/CoreConcepts.html
全栈程序员站长
2021/04/07
6320
React之redux学习日志(redux/react-redux/redux-saga)
使用 Redux 工具包简化状态管理
在不断变化的前端开发领域中,有效的状态管理对于构建强大的应用程序至关重要。在没有适当工具的情况下处理状态可能会导致复杂且容易出错的代码。于是出现了 Redux Toolkit,这是一个简化和优化 Redux 应用程序状态管理的库。在本文中,我们将探讨 Redux Toolkit 的基础知识以及它如何增强开发者体验。
zayyo
2024/01/27
2760
美团前端react面试题汇总
服务端渲染是数据与模版组成的html,即 HTML = 数据 + 模版。将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序。页面没使用服务渲染,当请求页面时,返回的body里为空,之后执行js将html结构注入到body里,结合css显示出来;
goClient1992
2022/09/13
5.4K0
高级前端react面试题总结
(1)不要在循环,条件或嵌套函数中调用Hook,必须始终在 React函数的顶层使用Hook
beifeng1996
2022/12/15
4.4K0
2021高频前端面试题汇总之React篇
合成事件是 react 模拟原生 DOM 事件所有能力的一个事件对象,其优点如下:
zz1998
2021/09/23
2.2K0
react脚手架改造(react/react-router/redux/eslint/karam/immutable/es6/webpack/Redux DevTools)
公司突然组织需要重新搭建一个基于node的论坛系统,前端采用react,上网找了一些脚手架,或多或少不能满足自己的需求,最终在基于YeoMan的react脚手架generator-react-webpack上搭建改造,这里作为记录。 代码在这里:github 另外推荐地址:react-starter-kit 简单文件夹结构 ├── README.md # 项目README文件 ├── conf # 配置文件夹
糊糊糊糊糊了
2018/05/09
1.8K0
react脚手架改造(react/react-router/redux/eslint/karam/immutable/es6/webpack/Redux DevTools)
前端二面高频react面试题集锦_2023-02-23
若虚拟DOM中的内容发生改变了,则生成新真实的DOM,随后替换页面中之前的真实DOM
用户10376779
2023/02/23
3K0
推荐阅读
相关推荐
【taro react】---- 【使用 redux 的配置笔记】
更多 >
LV.1
后端研发工程师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验