检索增强生成(RAG,Retrieval-Augmented Generation)是一种结合信息检索与生成模型的强大方法,用于生成准确且上下文相关的回答。网络上的实战眼花缭乱,先进的RAG高质量实战汇总却少之又少,阿东带你了解22种advanced RAG,欢迎关注阿东玩AI。

本文将介绍 22 种先进的RAG技术,灵感来源于 all-rag-techniques 仓库中的全面实现。这些实现使用 Python 库(如 NumPy、Matplotlib 和 OpenAI 的嵌入模型),避免使用 LangChainFAISS 等依赖,以保持简单性和清晰度。

本文目录

代码目录

  1. 简单 RAG

简单 RAG 是一个基础的RAG实现,为初学者提供了一个快速上手的起点。它包括以下核心步骤:

  • 文档分割:将输入文档分割成固定大小的文本块。
  • 嵌入生成:使用预训练模型(如 OpenAI 的嵌入模型)为每个文本块生成向量表示。
  • 检索:将用户查询嵌入到向量空间中,通过余弦相似度检索与查询最相关的文本块。
  • 生成:将检索到的文本块与查询一起输入到语言模型中中,生成最终答案。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/01_simple_rag.ipynb

应用场景:快速原型设计、简单问答系统、基础知识检索。

  1. 语义分块

语义分块 通过基于语义的相似性分割文本,生成更有意义的片段。相比固定大小的分块,语义分块使用嵌入模型评估相邻句子的语义相似度,将语义相关的句子合并为一个片段。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/02_semantic_chunking.ipynb

应用场景:需要高质量上下文的任务,如法律文档分析或学术论文检索。

  1. 分块大小选择器

分块大小选择器 研究不同的分块大小(如 256、512、1024 个字符)对检索性能的影响。它通过实验比较不同分块大小下的召回率和生成质量,帮助用户找到最佳分块策略。

**地址:**https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/03_chunk_size_selector.ipynb

应用场景:优化RAG系统以适应不同文档类型,如短新闻或长篇技术报告。

  1. 上下文增强 RAG增强

上下文增强 RAG 通过检索与目标分块相邻的文本片段,为生成提供更多上下文信息。这可以避免因分块分割导致的上下文信息,提升答案的连贯性和准确性。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/04_context_enriched_rag.ipynb

应用场景:需要完整上下文的任务,如长篇叙事性文档或技术手册问答。

  1. 上下文分块标题

上下文分块标题 在嵌入每个分块之前,为其添加描述性标题。这些标题由语言模型生成,总结分块内容,增强嵌入的语义表达能力。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/05_contextual_chunk_headers_rag.ipynb

应用场景:复杂文档的检索,如多章节书籍或多主题报告。

  1. 文档增强 RAG

文档增强 RAG 从文本分块中生成问题,并将这些问题作为额外的查询嵌入向量库,增强检索过程的语义覆盖范围。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/06_doc_augmentation_rag.ipynb

应用场景:需要深入挖掘文档内容的任务,如教育问答或知识库查询。

  1. 查询转换

查询转换 通过重写、扩展或分解用户查询来改善检索效果。它包括:

  • 回溯提示:生成更广义的查询以捕捉更广泛的上下文。
  • 子查询分解:将复杂查询拆分为多个简单子查询,分别检索。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/07_query_transform.ipynb

应用场景:复杂查询处理,如多方面问题或模糊用户意图。

  1. 重排器

重排器 使用大型语言模型(LLM)对初步检索结果重新排序,根据查询的相关性对结果进行优化。它通过评估每个分块与查询的语义匹配度,显著提高检索精度。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/08_reranker.ipynb

应用场景:高精度检索任务,如医疗诊断支持或法律案例分析。

  1. 相关段落提取(RSE)

相关段落提取(RSE) 识别并重构连续的文本段落,保留完整的上下文信息。它通过分析检索到的分块,合并相邻或语义相关的片段,形成更连贯的上下文。

**地址:**https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/09_rse.ipynb

应用场景:需要完整段落的任务,如文献综述或故事性内容生成。

  1. 上下文压缩

上下文压缩 过滤并压缩检索到的分块,仅保留与查询高度相关的信息,减少冗余内容,优化生成效率。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/10_contextual_compression.ipynb

应用场景:实时问答系统或资源受限环境。

  1. 反馈循环 RAG

反馈循环 RAG 结合用户反馈(如答案评分或更正),通过持续学习改进检索和生成过程。它使用反馈数据微调嵌入模型或调整检索策略。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/11_feedback_loop_rag.ipynb

应用场景:长期运行的交互系统,如客户支持聊天机器人。

  1. 自适应 RAG

自适应 RAG 根据查询类型(如事实性、概念性或探索性)动态选择最佳检索策略。例如,事实性查询可能优先精确匹配,而概念性查询需要更广泛的语义检索。

**地址:**https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/12_adaptive_rag.ipynb

应用场景:多场景问答系统,如企业知识库或教育平台。

  1. 自我 RAG

自我 RAG 动态决定是否需要检索、如何检索,并评估检索结果的相关性和答案的支持度。它通过自省机制优化整个RAG流程。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/13_self_rag.ipynb

应用场景:高自主性任务,如智能助手或自动化研究工具。

  1. 命题分块

命题分块 将文档分解为原子性的事实陈述(如“地球是圆的”),每个陈述独立嵌入以实现精确检索。

**地址:**https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/14_proposition_chunking.ipynb

应用场景:需要高精度事实提取的任务,如知识图谱构建或验证系统。

  1. 多模态RAG

多模态RAG 结合文本和图像进行检索,使用 LLaVA 等模型为图像生成描述性标题,并将其嵌入向量空间与文本共同检索。

**地址:**https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/15_multimodel_rag.ipynb

应用场景:多媒体内容检索,如电商产品搜索或教育资源库。

  1. 融合RAG

融合 RAG 结合向量搜索(语义)与基于关键词的 BM25 检索,综合两者的优势以提高检索效果。

**地址:**https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/16_fusion_rag.ipynb

应用场景:混合搜索场景,如学术搜索或企业文档管理。

  1. 图谱 RAG

图谱 RAG 将知识组织为图结构,节点表示概念,边表示关系,支持通过图遍历检索相关信息。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/17_graph_rag.ipynb

应用场景:复杂知识网络,如生物医学研究或法律案例分析。

  1. 层次 RAG

层次 RAG 构建层次索引,包含高层次摘要和详细分块,支持从粗到细的检索策略。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/18_hierarchy_rag.ipynb

应用场景:大规模文档检索,如技术文档库或法规数据库。

  1. HyDE RAG

HyDE RAG 使用假设性文档嵌入(Hypothetical Document Embeddings),生成与查询相关的虚拟文档嵌入,改善语义匹配。

**地址:**https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/19_HyDE_rag.ipynb

应用场景:语义模糊查询,如探索性研究或创意写作支持。

  1. 纠正性 RAG(CRAG)

纠正性 RAG 动态评估检索结果的质量,若结果不佳则使用网络搜索作为后备,确保答案的准确性。

**地址:**https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/20_crag.ipynb

应用场景:需要高可靠性答案的场景,如实时新闻问答或医疗咨询。

  1. 带强化学习的RAG

带强化学习的RAG 使用强化学习优化RAG模型,通过最大化奖励(如答案准确性或用户满意度)提升性能。

**地址:**https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/21_rag_with_rl.ipynb

应用场景:需要长期优化的系统,如个性化推荐或智能问答。

  1. 大数据知识图谱RAG

大数据知识图谱 RAG 专为大规模数据集设计,使用知识图谱组织海量信息,支持高效检索和复杂查询。

地址:https://github.com/FareedKhan-dev/all-rag-techniques/blob/main/22_Big_data_with_KG.ipynb

应用场景:大数据分析,如企业级知识管理或科学研究。

最佳RAG选择器

除了上述技术,all-rag-techniques 仓库还提供了一个 最佳RAG选择器,通过结合简单 RAG、重排器和查询重写,自动为给定查询选择最适合的RAG技术。这为开发者提供了一个灵活的工具,用于快速评估和部署最优RAG策略。

应用场景:快速实验和生产环境中的RAG技术选择。

总结

这些RAG技术展示了从基础到高级的多种实现方式,涵盖了不同的应用场景和优化目标。无论是需要高精度的事实检索、复杂上下文理解,还是多模态信息处理,all-rag-techniques 仓库都提供了清晰的实现参考。开发者可以根据任务需求选择合适的RAG技术,或组合多种技术以构建更强大的系统。

通过这些技术,RAG 不仅提升了生成模型的准确性和上下文相关性,还为知识密集型任务提供了灵活的解决方案。未来,随着嵌入模型和检索算法的进一步发展,RAG技术将继续在智能问答、知识管理和多模态应用中发挥重要作用。

{  "target":"简单认识我",  "selfInfo":{       "genInfo":"大厂面试官,中科院硕士,从事数据闭环业务、RAG、Agent等,承担技术+平台的偏综合性角色。善于调研、总结和规划,善于统筹和协同,喜欢技术,喜欢阅读新技术和产品的文章与论文",       "contactInfo":"abc061200x, v-adding disabled",       "slogan":"简单、高效、做正确的事",       "extInfo":"喜欢看电影、喜欢旅游、户外徒步、阅读和学习,不抽烟、不喝酒,无不良嗜好"  } }

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐