微信扫码
添加专属顾问
我要投稿
用Python基础库实现23种RAG技术,无需复杂框架也能玩转AI知识检索! 核心内容: 1. RAG技术原理与优势解析 2. 23种实用RAG技术实现详解 3. 开源项目代码实战与应用场景
在人工智能领域,检索增强生成(Retrieval-Augmented Generation, RAG)技术正成为连接大型语言模型(LLMs)与现实世界知识的桥梁。RAG技术通过在生成过程中引入外部知识检索,有效解决了LLMs的"幻觉"问题,提高了回答的准确性和时效性。
本文将带你深入了解一个专注于RAG技术的开源项目,该项目以通俗易懂的方式实现了20多种RAG技术,全部使用Python基础库构建,无需依赖复杂框架。无论你是AI初学者还是有经验的开发者,都能从中获得对RAG技术的深入理解。
具体代码链接见文末
大纲:
├── 01_simple_rag.ipynb
├── 02_semantic_chunking.ipynb
├── 03_chunk_size_selector.ipynb
├── 04_context_enriched_rag.ipynb
├── 05_contextual_chunk_headers_rag.ipynb
├── 06_doc_augmentation_rag.ipynb
├── 07_query_transform.ipynb
├── 08_reranker.ipynb
├── 09_rse.ipynb
├── 10_contextual_compression.ipynb
├── 11_feedback_loop_rag.ipynb
├── 12_adaptive_rag.ipynb
├── 13_self_rag.ipynb
├── 14_proposition_chunking.ipynb
├── 15_multimodel_rag.ipynb
├── 16_fusion_rag.ipynb
├── 17_graph_rag.ipynb
├── 18_hierarchy_rag.ipynb
├── 19_HyDE_rag.ipynb
├── 20_crag.ipynb
├── 21_rag_with_rl.ipynb
├── 22_big_data_with_KG.ipynb
├── 23_best_rag_finder.ipynb
检索增强生成(RAG)是一种将信息检索与语言生成相结合的技术。其核心思想是:在生成回答之前,先从外部知识库中检索相关信息,然后将这些信息作为上下文输入到语言模型中,从而生成更准确、更具事实依据的回答。
与传统的预训练语言模型不同,RAG系统能够动态获取最新知识,无需重新训练模型即可更新知识储备,这使得它在处理需要实时信息或专业领域知识的任务时具有显著优势。
简单RAG是最基础的RAG实现,是理解RAG技术的绝佳起点。它的核心流程包括:
这种方法虽然简单,但奠定了RAG技术的基本框架,后续的各种优化技术都是在这个基础上发展而来的。
传统的文本分块通常基于固定长度或标点符号,而语义分块则是基于语义相似度进行文本分割。这种方法能够将语义相关的内容划分为一个块,避免了固定长度分块可能导致的语义断裂问题。
通过语义分块,检索系统能够获取更完整、更有意义的上下文,从而提高回答的准确性。
块大小是RAG系统中的一个重要参数,它直接影响检索效果和回答质量。块太小可能导致上下文不足,块太大则可能包含过多无关信息。
块大小选择器技术通过实验和评估,探索不同块大小对检索性能的影响,帮助找到最适合特定任务的块大小。
在传统RAG中,通常只检索与查询最相似的单个文档块。上下文丰富RAG则更进一步,它不仅检索最相关的块,还会检索该块的相邻块,以提供更完整的上下文。
这种方法能够捕获文档中的前后关系,避免因孤立地使用单个块而导致的理解偏差。
上下文块头技术在对文档块进行嵌入之前,为每个块添加描述性的标题。这些标题能够提供额外的上下文信息,帮助模型更好地理解块的内容和主题。
通过这种方式,检索系统能够更准确地匹配查询与文档块,提高检索的相关性。
文档增强RAG不是直接使用文档内容进行检索,而是从文本块中生成相关问题,然后使用这些问题来增强检索过程。
这种方法能够从不同角度表示文档内容,提高检索的全面性和准确性,尤其在处理复杂查询时效果显著。
查询转换技术通过重写、扩展或分解查询来提高检索效果。它包括:
通过优化查询表示,这种技术能够提高检索系统对用户意图的理解,从而返回更相关的结果。
重排序器是一种后处理技术,它使用LLM对初始检索结果进行重新排序,以提高结果的相关性。
初始检索通常基于向量相似度,而重排序器能够从语义和语境角度评估结果的相关性,从而在初始检索的基础上进一步优化结果排序。
相关段提取技术不仅能够找到相关的文档块,还能识别和重建连续的文本段,保持上下文的完整性。
这种方法能够避免传统分块方法可能导致的上下文碎片化问题,提供更连贯、更完整的检索结果。
上下文压缩技术对检索到的文档块进行过滤和压缩,以最大化相关信息的同时减少冗余。
通过去除无关信息和压缩冗余内容,这种技术能够提高输入到LLM的上下文质量,从而生成更简洁、更准确的回答。
反馈循环RAG将用户反馈整合到系统中,使系统能够通过学习不断改进。
当用户对回答给出反馈(如指出错误或不相关的内容)时,系统会利用这些反馈来调整检索策略和模型参数,从而在后续交互中提供更好的回答。
自适应RAG能够根据查询类型动态选择最佳的检索策略。不同类型的查询(如事实性查询、解释性查询、复杂查询等)可能需要不同的检索方法。
通过分析查询特征并自适应地调整检索策略,这种技术能够提高RAG系统的灵活性和有效性。
自我RAG是一种更智能的RAG实现,它能够动态决定何时以及如何进行检索,评估检索结果的相关性,并评估信息的支持度和实用性。
这种方法使RAG系统具有更强的自主性和智能性,能够更有效地处理复杂查询和动态信息需求。
命题分块将文档分解为原子性的事实陈述,而不是传统的文本块。每个命题都是一个独立的、可验证的事实单元。
通过这种方法,检索系统能够实现更精确的匹配,尤其在处理需要事实性回答的查询时效果显著。
多模态RAG将文本和图像等多种模态的信息结合起来进行检索。它使用LLaVA等模型为图像生成字幕,然后将这些字幕与文本信息一起进行嵌入和检索。
这种方法扩展了RAG的应用范围,使它能够处理包含图像的多模态查询和文档。
融合RAG将向量搜索与基于关键词的(BM25)检索相结合,充分利用两种方法的优势。
向量搜索擅长捕捉语义相似性,而BM25在处理精确关键词匹配时表现更好。融合这两种方法能够提高检索的全面性和准确性。
图RAG将知识组织成图结构,使系统能够遍历相关概念,获取更全面的上下文。
通过构建知识图,这种方法能够捕捉概念之间的关系,从而在检索时不仅能够找到直接相关的信息,还能发现相关的扩展知识。
层次RAG构建分层索引,包括摘要和详细块,以实现高效检索。
这种方法在处理大型文档集合时特别有用,它允许系统先从高层摘要开始检索,然后根据需要深入到详细块,从而提高检索效率。
HyDE RAG使用假设文档嵌入来改进语义匹配。它不是直接使用查询生成嵌入,而是生成一个假设的相关文档的嵌入,然后使用这个嵌入进行检索。
这种方法能够提高检索的语义准确性,尤其在处理复杂或模糊查询时效果显著。
CRAG是一种纠正性RAG技术,它能够动态评估检索质量,并在必要时使用网络搜索作为后备。
当系统发现检索到的信息不充分或不准确时,CRAG会触发网络搜索,获取最新的信息来补充或纠正回答,从而提高回答的准确性和时效性。
强化学习RAG使用强化学习来最大化RAG模型的奖励。它将RAG系统的性能指标(如回答准确性、相关性等)作为奖励信号,通过训练优化系统的参数和策略。
这种方法能够使RAG系统在实际应用中不断学习和优化,提高整体性能。
最佳RAG查找器是一种元技术,它能够为给定的查询找到最佳的RAG技术组合。它结合了简单RAG、重排序器和查询重写等技术,通过评估不同组合的效果,选择最适合特定查询的RAG策略。
这种方法提高了RAG系统的适应性和效率,使它能够根据不同的查询类型和需求选择最佳的处理方式。
知识图大数据处理技术使用知识图来处理大规模数据集。它能够有效地组织和管理海量知识,支持高效的检索和查询,即使在处理TB级别的数据时也能保持良好的性能。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-06-20
拒绝AI“一本正经地胡说八道”:我用三版Prompt驯服RAG模型的实战复盘
2025-06-20
从0到1落地一个RAG智能客服系统
2025-06-20
RAG 知识库核心模块全解(产品视角 + 技术细节)
2025-06-20
RAGFlow实战:如何根据文档类型选择最佳切片策略?
2025-06-20
RAG技术与应用深度研究报告
2025-06-19
企业级 RAG Agent 开发指南:RAG Agent 开发的 10 条实战准则
2025-06-19
RAG工程落地:回答内容和检索片段(chunk)对应关系追踪
2025-06-19
GraphRAG系统:利用LangChain、Gemini和Neo4j构建智能文档检索与生成解决方案
2025-03-24
2025-03-24
2025-03-24
2025-03-28
2025-04-01
2025-04-13
2025-03-23
2025-04-19
2025-04-09
2025-04-16
2025-06-20
2025-06-19
2025-06-13
2025-06-09
2025-06-06
2025-05-30
2025-05-29
2025-05-29