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

neoconverse latest

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

查询结果会与用户的问题一同发送给大语言模型(LLM),以生成自然语言回复。此外,也可以配置 LLM,使其生成渲染图表所需的数据和配置,从而实现查询结果的可视化呈现。

neoconverse chart

功能包括

  • 支持体验不同云厂商的生成式 AI 模型:目前已支持 GCP 和 OpenAI,AWS Bedrock 即将推出。

  • 将您自己的 Neo4j 数据库作为代理(Agent)连接到 NeoConverse,并用纯英语与其进行交互。

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

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

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

      1. 评估 LLM 的回答。

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

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

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

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

    • 与这些代理进行聊天。

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

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

配置代理

NeoConverse 包含一系列预定义的对话代理,每个代理都由 Neo4j 数据库支撑。用户可以在“探索预定义代理(Explore Predefined Agent)”部分选择任意代理,从而探索 Neo4j 数据库并与之对话。选中后,用户可以通过屏幕右侧的聊天界面与所选代理进行交互,直接与数据库图谱互动,从而实现知识图谱的交互式探索。

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

以下是关于添加(ADD)删除(DELETE)编辑(EDIT)代理以及与您自己的数据库交互的快速可视化指南。

集成您自己的代理时,请注意这些代理存储在客户端的浏览器存储中,而不是服务器上。这意味着所有的交互(包括 API 调用和结果处理)都在客户端完成,不会触及我们的服务器。因此,如果因清除浏览数据、选择“Cookie 和其他网站数据”或本地存储空间不足等原因清除了浏览器本地存储,所有自定义代理都将永久丢失。

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

生成图表可视化

NeoConverse 使命用户能够直接从聊天界面创建图表可视化。通过切换聊天窗口内的文本输入和图表图标,用户可以无缝地将查询转换为视觉表现形式。其工作原理如下:用户用纯英语提出问题,问题随后被转化为 Cypher 查询并在 Neo4j 数据库中执行。之后,查询结果被传递给大语言模型(LLM),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 生成 Cypher 查询(Neo4j 的查询语言)。

  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 图算法来计算用户和产品之间的相似度得分,不仅考虑了产品特征和用户人口统计信息,还考虑了用户与产品的交互方式。

  • 商业智能(Business Intelligence):这是一个软件应用知识图谱,包含支持的业务流程、部署实例、软件漏洞报告和数据概念。它为漏洞分析、应用程序变更影响分析以及数据溯源提供了支持。

增强 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.