NeoConverse - 基于自然语言的图数据库搜索

neoconverse latest

NeoConverse 是一款旨在展示利用生成式 AI (GenAI) 进行自然语言数据库搜索的应用程序。它使非技术用户也能够使用现有的图数据库,允许他们通过自然语言提问。通过结合图数据库模式 (schema)、问题语句示例以及微调技术,LLM(大语言模型)会将自然语言问题转换为图查询语句 (Cypher),随后对该查询进行验证并在数据库上执行。

查询结果将与用户的问题一起发送给 LLM,以生成自然语言答案。或者,也可以配置 LLM 生成数据和配置,将查询结果渲染为图表以进行可视化展示。

neoconverse chart

功能包括

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

  • 将您自己的 Neo4j 数据库作为代理 (agent) 连接到 NeoConverse,并使用简单易懂的英语与它们进行交互。

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

    • 可选择添加少样本 (few-shot) 示例,为 LLM 提供上下文学习。

    • 将对话保存到配置好的数据库中,以便日后分析。

      1. 评估 LLM 的响应。

      2. 对响应进行排名,并利用这些数据改进未来的 LLM 交互。

      3. 提示工程 (Prompt engineering) 调整。

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

  • 与不同领域的预定义代理进行交互。

    • 与这些代理进行聊天。

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

    • 内置示例问题,帮助您快速上手。

配置代理

NeoConverse 包含一系列预定义的对话代理,每个代理都由 Neo4j 数据库支持。要使用这些代理探索并与 Neo4j 数据库对话,用户可以在探索预定义代理 (Explore Predefined Agent)部分选择任何代理。选择后,用户可以通过屏幕右侧显示的聊天界面与所选代理进行交互。这使受众能够直接与数据库图进行交互,从而促进对知识图谱的交互式探索。

用户可以灵活地添加自己的本地代理,这些代理由您组织内部的 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 数据库中的数据的模式 (schema) 信息。

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

  3. LLM 生成 Cypher 查询:基于问题和上下文,LLM 生成 Neo4j 的查询语言——Cypher 查询。

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

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

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

通过利用内部数据,NeoConverse 赋能 LLM,使其能够在企业环境中为用户查询提供更准确、更相关的答案。

neoconverse arch

可用的预定义数据集

  • 安然 (Enron) 电子邮件语料库数据集:该数据集是公开的安然电子邮件语料库的一个子集,已匿名化并存入 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 Issues

安装

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

您也可以通过克隆仓库并按照 README.md 文件中的说明在本地运行它。

© . This site is unofficial and not affiliated with Neo4j, Inc.