NeoConverse - 使用自然语言进行图数据库搜索

neoconverse latest

NeoConverse 是一款演示使用 GenAI 进行自然语言数据库搜索的应用程序。它使现有的图数据库可供非技术用户使用,允许他们提出自然语言问题。利用图数据库模式、问题陈述示例和微调,LLM 将自然语言问题转换为图查询(Cypher)。然后,对该查询进行验证并针对数据库执行。

查询结果与用户问题一起发送到 LLM 以生成自然语言答案。或者,可以将 LLM 配置为生成数据和配置,以将查询结果呈现为图表以进行视觉表示。

neoconverse chart

功能包括

  • 体验不同云提供商的 GenAl 模型:目前支持 GCP 和 OpenAI,AWS Bedrock 即将推出。

  • 将您自己的 Neo4j 数据库作为代理连接到 NeoConverse,并使用简单的英语与它们交互

    • 将模式信息配置为大型语言模型 (LLM) 的上下文。

    • 可以选择添加一些示例,以向 LLM 提供上下文学习。

    • 将对话保存到已配置的数据库中以供将来分析

      1. 评估 LLM 响应。

      2. 对响应进行排名,并使用它们来改进未来的 LLM 交互。

      3. 提示工程调整。

  • 从自然语言问题生成图表可视化。

  • 与来自不同领域的预定义代理交互

    • 与这些代理聊天。

    • 探索预定义代理数据集的数据模型。

    • 加载示例问题以帮助您入门。

配置代理

NeoConverse 包括一系列**预定义的对话代理**,每个代理都由 Neo4J 数据库支持。为了使用这些代理探索和与 Neo4j 数据库进行对话,用户可以选择“探索预定义代理”部分中的任何代理。选择后,用户可以通过屏幕右侧显示的聊天界面与所选代理进行互动。这使用户能够直接与数据库图进行交互,促进对知识图的交互式探索。

用户可以灵活地**添加您自己的本地代理**,这些代理由您组织的 Neo4j 数据库支持,并开始与您的数据库知识图进行交互。

以下是添加删除编辑代理以及与您自己的数据库进行交互的快速视觉指南

在集成您自己的代理时,请注意,这些代理存储在客户端的浏览器存储中,而不是服务器上。这意味着所有交互(包括 API 调用和结果处理)都在客户端进行,并且不会到达我们的服务器。因此,如果由于浏览数据清理、选择“cookie 和其他网站数据”或本地存储容量超过等原因而清除浏览器的本地存储,所有自定义代理将永久丢失。

我们正在考虑未来的更新以增强用户体验。这些更新可能包括代理导出/导入功能以及用户定义代理配置在用户自己的数据库中持久化的功能。此类功能旨在为不同用户和会话提供更统一、更简单的体验。

生成图表可视化

NeoConverse 使用户能够直接从聊天界面创建图表可视化。通过在聊天窗口中的文本输入和图表图标之间切换,用户可以无缝地将其查询转换为视觉表示。以下是其工作原理:用户用简单的英语提出问题,然后将其转换为 Cypher 查询以在 Neo4J 数据库中执行。在此之后,查询结果将传递给大型语言模型 (LLM),该模型根据数据生成图表元数据。LLM 会智能地为手头的选取最合适的图表类型,并返回相应的图表元数据。然后,此元数据用于渲染图表,使用户能够更有效地以易于理解的方式可视化和解释数据洞察。

展望未来,NeoConverse 正在考虑扩展其可视化功能,以包括图形可视化。此开发将取决于 NeoConverse 用户的兴趣和反馈,可能会扩大交互式数据探索的范围。

NeoConverse 的工作原理:克服 LLM 的局限性

大型语言模型 (LLM) 在海量公共数据集上进行训练,使其能够胜任基于该知识的任务。但是,它们在企业环境中的实用性有限,因为

  • 它们的知识仅限于训练数据。

  • 使用内部数据更新其知识可能具有挑战性。

  • 信息可能已过时。

**NeoConverse 利用检索增强生成 (RAG) 来解决这些问题。**RAG 为 LLM 提供了从 Neo4j 图数据库中托管的内部数据源检索到的其他上下文。

以下是 NeoConverse 工作原理的分步过程

  1. **用户提出问题:**用户就存储在 Neo4j 中的企业数据提出自然语言问题。

  2. **LLM 的上下文:**NeoConverse 为 LLM 提供与问题相关的上下文

    • 有关存储在 Neo4j 数据库中的数据模式信息。

    • 来自数据的几个相关示例,以指导 LLM。

  3. **LLM 生成 Cypher 查询:**根据问题和上下文,LLM 生成 Cypher 查询,即 Neo4j 的查询语言。

  4. **查询优化和执行:**NeoConverse 清理、格式化并在 Neo4j 数据库上执行 Cypher 查询。

  5. **数据检索:**根据执行的查询从 Neo4j 数据库检索相关数据。

  6. **LLM 答案生成:**最后,LLM 使用检索到的数据和原始问题生成准确且相关的答案,这些答案以用户的特定数据为基础。

通过利用内部数据,NeoConverse 使得大型语言模型 (LLM) 能够在企业环境中为用户查询提供更准确和相关的答案。

neoconverse arch

可用的预定义数据集

  • 安然邮件语料库数据集:公开可用的安然邮件语料库数据的一个子集已被匿名化并导入 Neo4j 数据库,导入的数据集包含大约 50 万封电子邮件,该数据集有助于深入探索安然内部领导层之间以及与外部各方的电子邮件通信,为分析异常和电子邮件泄露提供手段。除了电子邮件通信元数据外,该数据集还丰富了从电子邮件主题和正文中提取的实体和关注术语。

  • 患者旅程数据集:患者旅程数据集囊括了 100 万名患者的医疗保健体验,详细记录了 4100 万次就诊,涵盖了医生就诊、诊断、治疗和过敏等医疗事件。凭借 1100 万份处方、2600 万次观察、900 万次特定疾病观察、200 种独特的疾病和 50 万次过敏就诊,这个丰富的数据集提供了对个人健康叙事的全面了解。它是分析治疗模式、患者预后和药物疗效的重要资源,提供可增强医疗保健交付和个性化患者护理策略的见解。

  • 零售数据集:此零售数据集利用从公开的亚马逊电子产品数据集构建的知识图谱,该数据集包含产品信息、评论以及用户购买和评论历史记录。为了提取更深入的见解,Neo4j GDS 图算法已被应用于计算用户和产品之间的相似度得分,不仅考虑产品特征和用户人口统计信息,还考虑用户如何与产品互动。

  • 商业智能:这是一个软件应用程序的知识图谱,包括支持的业务流程、部署的实例、软件漏洞报告和数据概念,用于提供漏洞影响分析以及应用程序更改影响分析和数据可追溯性。

增强 NeoConverse

NeoConverse 依赖于大型语言模型 (LLM) 的 Cypher 生成能力,虽然 LLM 在生成 Cypher 查询方面取得了进步,但仍然存在不一致性。NeoConverse 旨在识别这些不一致性,为用户提供有效的方法来导航或绕过它们,而不是让他们面对原始错误。这种方法确保了更流畅的用户体验。

未来,NeoConverse 可以通过以下方式增强以减轻这些不一致性

  • 微调 LLM:针对 Cypher 生成微调 LLM,以获得更准确和一致的 Cypher 查询。

  • 开发语义层:加深 LLM 的上下文理解,提高结果准确性。

  • 整合特定领域的命名法:提高查询的相关性和精确度。

  • 利用历史对话:使用过去的互动为 LLM 提供更丰富的上下文和更相关的示例。

这些举措旨在解决当前的挑战,并提高 NeoConverse 中 LLM 生成的 Cypher 查询的可靠性。

在线

https://neoconverse.graphapp.io/

作者

Kumar SS,Eric Monk

社区支持

Neo4j 在线社区

代码库

GitHub

问题

GitHub 问题

安装

演示版可在线访问,https://neoconverse.graphapp.io

您还可以通过克隆 存储库 并按照 README.md 文件中的说明进行操作,在本地运行它。