基于博文 Advanced RAG Techniques: an Illustrated Overview 的学习和练习的记录。
中文内容可以查看博主@宝玉的译文 高级 RAG 技术:图解概览 [译]
系列笔记:
RAG 学习笔记(一)
RAG 学习笔记(二)
RAG 学习笔记(三)
搜索索引(第二部分)
丰富上下文
主要有两点:
- 检索较小的文本块来获得更好的搜索质量
- 增加文本块周围的上下文供 LLM 推理
有两种方式:
- 增加文本块周围的句子来扩展文本
- 通过递归的的方式,将文本分割为具有父子关系的大小块。
句子窗口检索
- 每个句子独立 embedding,可以提供很高的查询准确性。
- 获得到最相关的句子,并在句子前后扩展 K 个句子
- 将扩展后的内容做为上下文提供给 LLM。
自合并检索器(即父文档检索器)
- 将文档分割成为具有父子关系的大小文本块,较小的子文本块引用较大的父文本块,只对子文本块进行 embedding
- 搜索较小子文本块,如果前 k 个检索结果中超过 n 个结果属于同一父文本块,就使用该父文本块作为上下文提供给 LLM。
深入了解资源:
融合检索/混合搜索
传统的基于关键字的搜索方法有:
现代检索方法有:语义或者向量搜索方法
可以将传统和现代方法结合起来,将两种类方法的结果整合成一个检索结果。
优点:融合/混合搜索结合了两类方法,同时考虑了语义相似度和关键词匹配,通常会有更好的检索结果
难点:将不同打分规则获得到的结果正确地整合排序
解决方法:倒序排序融合(Reciprocal Rank Fusion)
实现:
动手练习:融合检索 LangChian 实现