21个RAG常用优化策略变体及notebook开源实操


今天是2025年3月22日,星期六,北京,天气晴。春暖花开,出去走走

我们今天继续看RAG相关进展,目前我们已经总结了很多了,包括各种RAG的变体,但是纸上得来终觉浅,绝知此事要躬行,还是要实践。那么,如何进行实践,用好github,并研究代码本身,增进理解。

因此,本文来介绍RAG的21个常用优化策略及notebook实践,大家可以练起来,仅此一事

抓住根本问题,做根因,专题化,体系化,会有更多深度思考。大家一起加油。


RAG的21个常用优化策略及notebook实践 

关于RAG的一些常用优化策略,重复重复再重复,温故而知新,https://github.com/FareedKhan-dev/all-rag-techniques,直接可实操,有notebook,21个。大家可以练起来。

1、 Simple RAG,简单的RAG,一个基础的RAG实现。

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

2、Semantic Chunking,语义分块,根据语义相似性分割文本,以获得更有意义的文本块。

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

3、Chunk Size Selector,分块大小选择器,探索不同分块大小对检索性能的影响。

地址:https://kkgithub.com/FareedKhan-dev/all-rag-techniques/blob/main/3_chunk_size_selector.ipynb

4、Context Enriched RAG,上下文增强的RAG,检索相邻的分块以提供更多上下文信息。

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

5、Contextual Chunk Headers,上下文分块标题,在嵌入之前,为每个分块添加描述性的标题。

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

6、Document Augmentation RAG,文档增强的RAG,从文本分块生成问题,以增强检索过程。

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

7、Query Transform,查询转换,重写、扩展或分解查询以改善检索效果,包括回退提示和子查询分解。

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

8、Reranker,重排器,使用大模型(LLM)重新对最初检索到的结果进行排序,以提高相关性。

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

9、RSE,相关段落提取,识别并重构连续的文本段落,保留上下文。

地址:https://kkgithub.com/FareedKhan-dev/all-rag-techniques/blob/main/9_rse.ipynb

10、Contextual Compression,上下文压缩,实现上下文压缩,以过滤和压缩检索到的分块,最大化相关信息。

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

11、Feedback Loop RAG,反馈循环的RAG, 结合用户反馈,随着时间的推移学习并改进RAG系统。

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

12、Adaptive RAG,自适应的RAG,根据查询类型动态选择最佳检索策略。

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

13、Self RAG,自我RAG,实现自我RAG,动态决定何时以及如何检索,评估相关性,并评估支持和效用。

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

14、Proposition Chunking,命题分块。将文档分解为原子性的事实陈述,以实现精确检索。

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

15、Multimodel RAG,多模态RAG,结合文本和图像进行检索,使用LLaVA为图像生成标题。

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

16、Fusion RAG,融合RAG,将向量搜索与基于关键词(BM25)的检索相结合,以获得更好的结果。

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

17、Graph RAG,将知识组织成图,便于遍历相关概念。

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

18、Hierarchy RAG,层次RAG,构建层次索引(摘要+详细分块),以实现高效检索。

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

19、HyDE RAG,使用假设性文档嵌入来改善语义匹配。

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

20、CRAG,纠正性RAG,动态评估检索质量,并使用网络搜索作为后备。

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

21、Rag with RL,带强化学习的RAG,使用强化学习最大化RAG模型的奖励。

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

代码细节:

因此,还是那句,开源的东西很多,大家如果涉及到实操,一定是读看github,多看readme,多看issue,这些都是免费的、开源的

参考文献 

1、https://github.com/FareedKhan-dev/all-rag-techniques

(文:老刘说NLP)

欢迎分享

发表评论