早上微软的GraphRAG框架发布0.4.0版本。更新了增量更新和DRIFT搜索能力。
更新特性:
增量更新:允许系统在已有知识基础上进行更新,而无需完全重建图谱 DRIFT搜索机制,是一种结合本地与全局搜索的方法。通过整合社区信息,提升了查询的详细性和准确性,能够更好地处理复杂查询。可以让原本的local search,获得更全面的信息响应 GraphRAG 0.4.0经过代码重构,优化了系统架构,使其更易于使用和扩展
其中DRIFT搜索的官方博客在这:https://www.microsoft.com/en-us/research/blog/introducing-drift-search-combining-global-and-local-search-methods-to-improve-quality-and-efficiency/
DRIFT搜索工作流程:
预处理阶段:当用户提交查询时,DRIFT会将其与语义最相关的前K个社区报告进行比对。这一过程会生成一个初始答案和几个后续问题,相当于一个简化版的global search。(类似于使用HyDE来扩展查询,从而提高召回率。然后将查询进行嵌入,与所有社区报告进行匹配,选取最相关的K个报告来尝试回答查询。这样做的目的是利用高层次的抽象信息来指导后续的探索过程。
跟进阶段:在完成预处理后,DRIFT会使用local search的变体来处理每个后续问题。这个过程会产生额外的中间答案和新的跟进问题,形成一个不断优化的循环,直到满足终止条件(目前设置为两轮迭代,未来会研究使用奖励函数来指导终止决策)。这个阶段代表了一个基于全局信息的查询优化过程。即使初始查询与索引模式有所偏差,DRIFT也能利用全局数据结构在知识图谱中定位到具体的相关信息。这种跟进机制使DRIFT能够根据新出现的信息动态调整其搜索策略。
输出层级:最终输出是一个按照与原始查询相关性排序的问答层级结构。这个层级结构可以根据具体用户需求进行定制。在基准测试中,采用了一个简单的映射归约方法来整合所有中间答案,每个答案的权重相同。
最终评测:
在全面性方面,DRIFT 搜索有 78%的时间优于局部搜索。 在多样性方面,DRIFT 搜索算法有 81%的时间优于局部搜索算法。