跳到内容

DRIFT 搜索 🔎

GraphRAG 是一种利用大型语言模型 (LLM) 从非结构化文本文档创建知识图谱和摘要,并利用它们来改进对私有数据集的检索增强生成 (RAG) 操作的技术。它提供了对大型私有非结构化文本文档的全面全局概述,同时还能够探索详细的本地化信息。通过使用 LLM 创建全面的知识图谱,连接和描述这些文档中包含的实体和关系,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 (Primer):DRIFT 将用户的查询与语义最相关的 K 个社区报告进行比较,生成广泛的初始答案和后续问题,以指导进一步的探索。 B (后续):DRIFT 使用本地搜索来优化查询,产生额外的中间答案和后续问题,从而增强特异性,引导引擎找到上下文丰富的信息。 图中的每个节点上的字形都显示了算法继续查询扩展步骤的置信度。 C(输出层级):最终输出是一个按相关性排序的问题和答案的层级结构,反映了全局洞察和本地改进的平衡组合,使结果具有适应性和全面性。

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

配置

以下是 DRIFTSearch 类 的关键参数

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

如何使用

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

了解更多

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