好久不写了简单看点文章写写:
ComoRAG
个人理解就是几种GraphRAG的方法合起来,上面搞了一个Agent混合检索
三层:
* 事实层就是类似HippoRAG这种知识图谱用来回答事实性问题的
* 语意层就是总结类,比如RAPTOR,MS GraphRAG
* Episodic就是时序类,这里是用滑动窗口做的,感觉可以套一些其他的时序图的方法
这里时序类的做法是把长文本做滑动窗口式的总结,用来回答全文脉络这种问题。个人感觉主要就是针对小说这种场景。或者是放到Memory上,用户对话的每一段搞一个滑动窗口总结。
* 不确定是否有什么针对性的问题,直观想感觉套一些时序图的方案更好一些
episodic layer具体的方案
问答策略,整体类似一个Agent,就是循环的去用上面这三种检索方式做回答,然后生成新的答案和后续的问题。
在尝试回答问题的时候,这里套了一个RAG,相当于做了一个Agent的memory。
每次生成的答案就是记忆单元,相当于新的clue,或者sub question answer。
然后回答的时候会召回历史的几个记忆单元,用来融合生成一个摘要去问答,而不是简单的把历史记录直接丢给模型做总结。(虽然感觉差不多,因为现在模型上下文都比较长了)
benchmark记录一下:
LeanRAG
在HiRAG上的工作,核心点在于HiRAG,MsGraphRAG没有考虑高层实体之间的关系,只有最底层实体之间有相关的边。
所以这里聚类出高层实体之后,会看一下他们的连接(这里我猜测就是用底下的节点之间的关系来判断一下),来构建高层节点之间的关系。相当于是一个分层图了
* 不过这里方案上,好像高层点是一个完全图,两两之间都有相连。这种可能搞一个阈值好一些。
查询的时候,之前HiRAG是带上高层节点去跑最短路。这里强化了一下,先找LCA,然后每一层单独再去跑最短路。带上这些一起做回答
直观感觉确实总结一些高层之间的关系会更好一些,直接的思路也可以应用到ms graphrag的方案上,总结一下社区与社区之间的关系。
RankToSelection
训练了个比Reranker强一些的模型,有一个额外的功能是选择第几段。核心点在于带着检索的段落一起选择,而之前的reranker假设了段落之间是独立的
直观感觉这样输入的数据可能太多了?不知道模型是否能hold住。
如果数量变多确实是瓶颈的话,可以先过一个大模型做过滤,筛选掉一些无关的段落。
所以感觉这一步更像是:
* retrieve, rerank, (selection), generation中,selection用一个特定模型做的方法。不过这里结合了rerank + selection,避免单独考虑一个段落影响整体回答效果的问题。
文章评论