使用 Neo4j 和 LlamaIndex 实现 DRIFT 搜索

结合全局和本地搜索以获得最准确的响应使用 Neo4j 和 LlamaIndex 实现 DRIFT 搜索一文首先出现在 Towards Data Science 上。

来源:走向数据科学

Microsoft 的 GraphRAG 实施是最早的系统之一,并引入了许多创新功能。它将提取和汇总实体、关系和分层社区的索引阶段与高级查询时功能相结合。这种方法使系统能够通过利用预先计算的实体、关系和社区摘要来回答广泛的主题问题,超越了标准 RAG 系统的传统文档检索限制。

微软的 GraphRAG 实现
Microsoft 的 GraphRAG 管道。图片来自 [Edge et al., 2024],已获得 CC BY 4.0 许可。

我在之前的博客文章(此处和此处)中介绍了索引阶段以及全局和本地搜索机制,因此我们将在本次讨论中跳过这些细节。然而,我们还没有探索 DRIFT 搜索,这将是本博文的重点。 DRIFT 是一种较新的方法,结合了全局和局部搜索方法的特点。该技术首先通过矢量搜索利用社区信息来建立广泛的查询起点,然后使用这些社区见解将原始问题细化为详细的后续查询。这使得 DRIFT 能够动态遍历知识图来检索有关实体、关系和其他本地化细节的特定信息,从而平衡计算效率与综合答案质量。

这里 DRIFT 搜索
使用 LlamaIndex 工作流程和 Neo4j 实现漂移搜索。图片由作者提供。

该实现使用 LlamaIndex 工作流程通过几个关键步骤来协调 DRIFT 搜索过程。它从 HyDE 生成开始,根据示例社区报告创建假设答案,以改进查询表示。

LlamaIndex 工作流程 HyDE 一代 社区搜索步骤 本地搜索阶段 答案生成步骤

代码可在 GitHub 上获取。

GitHub

数据集

爱丽丝梦游仙境 古腾堡计划

摄取

上一篇博客文章

本地搜索