Skip to content

DRIFT Search 🔎

结合本地与全局搜索

GraphRAG 是一种利用大型语言模型(LLMs)从非结构化文本文档中创建知识图谱和摘要的技术,并利用它们来改进对私有数据集的检索增强生成(RAG)操作。它提供了对大型私有非结构化文本文档库的全面全局概览,同时也支持探索详细的本地化信息。通过使用LLMs创建全面的知识图谱,连接并描述这些文档中包含的实体和关系,GraphRAG利用数据的语义结构来生成对各种复杂用户查询的响应。

DRIFT搜索(动态推理与灵活遍历)基于微软的GraphRAG技术,结合了全局和本地搜索的特点,采用我们的drift search方法,在计算成本与结果质量之间取得平衡,生成详细响应。

方法论

Figure 1. An entire DRIFT search hierarchy highlighting the three core phases of the DRIFT search process.

图1. 完整的DRIFT搜索层次结构,突出显示DRIFT搜索过程的三个核心阶段。A(启动阶段):DRIFT将用户查询与语义最相关的K个社区报告进行比较,生成广泛的初始答案和后续问题以引导进一步探索。B(跟进阶段):DRIFT使用本地搜索细化查询,产生额外的中间答案和后续问题,增强特异性,引导引擎获取上下文丰富的信息。图中每个节点上的符号表示算法继续查询扩展步骤的置信度。C(输出层次结构):最终输出是按相关性排序的问题和答案的层次结构,反映了全局洞察和本地细化的平衡组合,使结果具有适应性和全面性。

DRIFT搜索通过在搜索过程中包含社区信息,为本地搜索查询引入了一种新方法。这大大扩展了查询起点的广度,并在最终答案中检索和使用更多样化的事实。这一补充通过为本地搜索提供更全面的选项扩展了GraphRAG查询引擎,该选项利用社区洞察将查询细化为详细的后续问题。

配置

以下是DRIFTSearch类的关键参数:

  • llm:用于生成响应的OpenAI模型对象
  • context_builder:用于从社区报告和查询信息准备上下文数据的context builder对象
  • config:定义DRIFT搜索超参数的模型。DRIFT Config model
  • token_encoder:用于跟踪算法预算的token编码器
  • query_state:如Query State中定义的状态对象,允许跟踪DRIFT搜索实例的执行,以及后续问题和DRIFT actions

使用方法

一个drift搜索场景的示例可以在以下notebook中找到。

了解更多

如需更深入了解DRIFT搜索方法,请参阅我们的DRIFT Search博客文章