DRIFT 搜索 🔎
结合局部和全局搜索
GraphRAG 是一种利用大型语言模型 (LLM) 从非结构化文本文档中创建知识图谱和摘要,并利用它们改进私有数据集上的检索增强生成 (RAG) 操作的技术。它为大量私有的非结构化文本文档提供了全面的全局概览,同时还支持对详细的局部信息进行探索。通过使用 LLM 创建连接并描述这些文档中包含的实体和关系的综合知识图谱,GraphRAG 利用数据的语义结构来生成对各种复杂用户查询的响应。
DRIFT 搜索(动态推理和灵活遍历推断)建立在微软的 GraphRAG 技术之上,结合了全局和局部搜索的特点,以一种平衡计算成本和质量结果的方法,使用我们的DRIFT 搜索方法生成详细的响应。
方法论
图 1. 一个完整的 DRIFT 搜索层次结构,突出显示了 DRIFT 搜索过程的三个核心阶段。A(引言):DRIFT 将用户的查询与语义最相关的 K 个社区报告进行比较,生成一个广泛的初始答案和后续问题,以引导进一步的探索。B(后续):DRIFT 使用局部搜索来优化查询,生成额外的中间答案和后续问题,从而增强特异性,引导引擎获取上下文丰富的信息。图表中的每个节点上的字形显示了算法继续查询扩展步骤的置信度。C(输出层次结构):最终输出是按相关性排序的问题和答案的分层结构,反映了全局洞察和局部细化的平衡组合,使结果具有适应性和全面性。
DRIFT 搜索通过在搜索过程中包含社区信息,引入了一种处理局部搜索查询的新方法。这大大扩展了查询起点的广度,并使得最终答案中检索和使用了更多样化的事实。这一增加通过提供更全面的局部搜索选项,扩展了 GraphRAG 查询引擎,该选项利用社区洞察将查询细化为详细的后续问题。
配置
以下是 DRIFTSearch 类的关键参数
llm: 用于生成响应的OpenAI模型对象context_builder:用于从社区报告和查询信息中准备上下文数据的上下文构建器对象config:定义 DRIFT 搜索超参数的模型。DRIFT 配置模型tokenizer:用于跟踪算法预算的 token 编码器。query_state:查询状态中定义的状态对象,允许跟踪 DRIFT 搜索实例的执行,以及后续操作和DRIFT 操作。
如何使用
DRIFT 搜索场景的一个示例可以在以下notebook中找到。
了解更多
有关 DRIFT 搜索方法的更深入了解,请参阅我们的DRIFT 搜索博客文章