我们今天继续看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)