9.3 RAG检索优化:混合检索(这是重点)
前言:无语了,被GPT怼了一顿,说整这些花里胡哨的检索优化作用不大,然后我知道了
最重要的是数据清洗 ,但我感觉还是学学吧,不用但是得知道,面试吹水也可以吹吹嘛。
好啦,这次讲的是混合检索,我们要引入的是BM25检索器,他是基于关键词匹配 ,比如我们用的搜索引擎这样子。
刚开始我们用的是向量检索的方式,但这种也会遇到点小问题。这里举个例子
1 | 用户查询:"怎么让手机省电?" |
反之
1 | 用户查询:"Kimi K2.5 发布日期" |
我们要做的就是取这两个检索方式互补~
初始化词匹配器
好啦接下来说说这个检索器怎么用吧。向量检索器的话,我们可以知道,他由向量数据库的一个接口 vectorstore.as_retriever()来实现的。
这个的话,
BM25Retriever.from_texts(docs)
他接收的是一个list[str],我这里放的doc也是
1 | from langchain_community.retrievers import BM25Retriever |
混合检索器
我们需要把向量检索器和上面写的词匹配检索器融合在一块,还需要一个混合检索器
使用方法如下
1 | from langchain_community.retrievers import EnsembleRetriever |
原理

和之前学的rag融合一样。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 楠瓜的小窝!
评论


