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 上下文窗口的长度。
LangChain 实现
rag-fusion | 🦜️🔗 LangChain
LlamaIndex 实现
Rag fusion query pipeline - LlamaIndex
四种 Agent 设计模式
- 自我反思(Reflection):可以自我修正;
- 使用工具(Tool Use):链接其他系统去做一些事情,比如把电脑里面的未归档文件做好归档;
- 规划(Planning):类似于思维链,分解复杂任务,找到路径;
- 协作(Multiagent Collaboration):不同类型的助理(agent),可以通过协作组成一个团队。
NL2SQL的准确性问题和框架
NL2SQL的准确性问题