忘记RAG,未来是RAG-Fusion
RAG-Fusion 的实现原理
- Query Duplication with a Twist:用 LLM 根据用户的 Query 生成几个相关的但不同的 Queries。
- Vector Search Unleashed:对原 Query 和生成的 Queries 都进行向量(或者其他方式的)搜索。
- Intelligent Reranking:使用 Reciprocal Rank Fusion 对搜索结果进行重新排序,挑选前 N 个。
- Eloquent Finale:把挑选的结果和问题一起,发给 LLM 让他生成最终的结果。
代码实现:GitHub - Raudaschl/rag-fusion
关键就是两步:生成多个 Queries,以及整合排序
Reciprocal Rank Fusion (RRF)
使用不同的 query 去检索知识(doc),然后用 RRF 把搜索结果统一起来。
RRF 算法很简单,就是把 doc 在不同的排序中的排名汇总起来。
RRF论文地址:https://plg.uwaterloo.ca/~gvcormac/cormacksigir09-rrf.pdf
RAG-Fusion 的优缺点
优点:能更全面理解用户的意图,能获得更相关的知识。
缺点:Prompt的长度,可能让 LLM 迷失,另一方面则是要适应 LLM 上下文窗口的长度。