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

NeoConverse 是一款应用程序,用于演示使用 GenAI 进行自然语言数据库搜索。它使非技术用户能够使用现有的图数据库,并允许他们发出自然语言问题。通过使用图数据库模式、问题陈述示例和微调,LLM 将自然语言问题转换为图查询(Cypher)。然后,该查询将被验证并针对数据库执行。
查询结果将与用户问题一起发送到 LLM,以生成自然语言答案。或者,可以配置 LLM 以生成数据和配置,以便将查询结果呈现为图表以进行可视化表示。

功能包括
-
体验不同云提供商的 GenAl 模型:目前支持 GCP 和 OpenAI,AWS Bedrock 即将推出。
-
将您自己的 neo4j 数据库作为代理连接到 NeoConverse,并使用简单的英语与它们交互
-
将模式信息配置为大型语言模型 (LLM) 的上下文。
-
可以选择添加一些示例,为 LLM 提供上下文学习。
-
将对话保存在配置的数据库中以供将来分析
-
评估 LLM 响应。
-
对响应进行排名,并使用它们来改进未来的 LLM 交互
-
提示工程调整。
-
-
-
从自然语言问题生成图表可视化。
-
与来自不同领域的预定义代理进行交互
-
与这些代理聊天。
-
探索预定义代理数据集的数据模型。
-
加载了示例问题以帮助您入门。
-
配置代理
NeoConverse 包含一系列**预定义的对话代理**,每个代理都由 Neo4J 数据库支持。要使用这些代理探索和与 Neo4j 数据库进行对话,用户可以选择“探索预定义代理”部分中的任何代理。选择后,用户可以通过屏幕右侧显示的聊天界面与所选代理互动。这使用户能够直接与数据库图形交互,从而促进对知识图谱的交互式探索。
用户可以灵活地**添加您自己的本地代理**,这些代理由您组织的 neo4j 数据库支持,并开始与您的数据库知识图谱进行交互。
以下是添加
、删除
、编辑
代理以及与您自己的数据库交互的快速视觉指南
在集成您自己的代理时,请注意这些代理存储在客户端的浏览器存储中,而不是服务器上。这意味着所有交互(包括 API 调用和结果处理)都发生在客户端,不会到达我们的服务器。因此,如果由于浏览器数据清理、选择“cookie 和其他站点数据”或本地存储容量超出等原因而清除浏览器的本地存储,则所有自定义代理都将永久丢失。 |
我们正在考虑未来的更新以增强用户体验。这些更新可能包括代理导出/导入功能以及用户在自己的数据库中持久保存用户定义的代理配置的功能。这些功能旨在为不同用户和会话提供更统一和简化的体验。 |
生成图表可视化
NeoConverse 使用户能够直接从聊天界面创建图表可视化。通过在聊天窗口中的文本输入和图表图标之间切换,用户可以无缝地将其查询转换为可视化表示。以下是其工作原理:用户用简单的英语提出问题,然后将其转换为 Cypher 查询以在 Neo4J 数据库中执行。接下来,查询结果将传递给大型语言模型 (LLM),该模型根据数据生成图表元数据。LLM 会智能地为手头的数据选择最合适的图表类型,并返回相应的图表元数据。然后,此元数据用于呈现图表,使用户能够更有效地以易于理解的方式可视化和解释数据见解。
展望未来,NeoConverse 正在考虑扩展其可视化功能以包括图形可视化。此开发将取决于 NeoConverse 用户的兴趣和反馈,可能会扩大交互式数据探索的范围。
NeoConverse 的工作原理:克服 LLM 的局限性
大型语言模型 (LLM) 在海量的公共数据集上进行训练,这使得它们能够胜任基于该知识的任务。但是,由于以下原因,它们在企业环境中的实用性有限:
-
它们的知识仅限于训练数据。
-
使用内部数据更新其知识可能具有挑战性。
-
信息可能已过时。
**NeoConverse 利用检索增强生成 (RAG) 来解决这些问题。**RAG 为 LLM 提供了从 Neo4j 图数据库中托管的内部数据源检索到的额外上下文。
以下是 NeoConverse 工作原理的分步过程
-
**用户提出问题:**用户就存储在 Neo4j 中的企业数据提出自然语言问题。
-
**LLM 的上下文:**NeoConverse 为 LLM 提供与问题相关的上下文
-
存储在 Neo4j 数据库中的数据模式信息。
-
来自数据的几个相关示例,以指导 LLM。
-
-
**LLM 生成 Cypher 查询:**基于问题和上下文,LLM 生成 Cypher 查询,这是 Neo4j 的查询语言。
-
**查询优化和执行:**NeoConverse 清理、格式化并在 Neo4j 数据库上执行 Cypher 查询。
-
**数据检索:**根据执行的查询从 Neo4j 数据库中检索相关数据。
-
**LLM 答案生成:**最后,LLM 使用检索到的数据和原始问题生成一个准确且相关的答案,该答案以用户的特定数据为基础。
通过利用内部数据,NeoConverse 使 LLM 能够在企业环境中为用户查询提供更准确和相关的答案。

可用的预定义数据集
-
**安然电子邮件语料库数据集**:公开可用的安然电子邮件语料库数据的一个子集已被匿名化并导入到 neo4j 数据库中,导入的数据集包含大约 50 万封电子邮件,该数据集有助于深入探索安然内部领导层以及与外部各方的电子邮件通信,为分析异常情况和电子邮件泄露提供手段。除了电子邮件通信元数据之外,此数据集还丰富了从电子邮件主题和正文中提取的实体和关注术语。
-
**患者旅程数据集**:患者旅程数据集封装了 100 万患者的医疗保健体验,详细记录了 4100 万次就诊,涵盖医生就诊、诊断、治疗和过敏等医疗事件。凭借 1100 万张处方、2600 万次观察、900 万次特定疾病观察、200 种独特疾病和 50 万次过敏就诊,这个丰富的数据集提供了对个人健康叙事的全面了解。它是分析治疗模式、患者预后和药物疗效的重要资源,提供可增强医疗保健服务并个性化患者护理策略的见解。
-
**零售数据集**:此零售数据集利用从包含产品信息、评论以及用户购买和评论历史的公共亚马逊电子产品数据集构建的知识图谱。为了提取更深入的见解,Neo4j GDS 图算法已被应用于计算用户和产品之间的相似性得分,不仅考虑产品特征和用户人口统计,还考虑用户如何与产品互动。
-
**商业智能**:这是一个软件应用程序的知识图谱,包含支持的业务流程、部署的实例、软件漏洞报告和数据概念,可提供漏洞影响分析以及应用程序更改影响分析和数据可追溯性
增强 NeoConverse
NeoConverse 依赖于大型语言模型 (LLM) 的 Cypher 生成能力,虽然 LLM 在生成 Cypher 查询方面取得了进步,但仍然存在不一致性。NeoConverse 旨在识别这些不一致性,为用户提供有效的方法来导航或绕过它们,而不是让他们面对原始错误。这种方法确保了更流畅的用户体验。
将来,可以通过以下方式增强 NeoConverse 以减轻这些不一致性:
-
**微调 LLM**:针对 Cypher 生成微调 LLM,以获得更准确和一致的 Cypher 查询。
-
构建语义层:为了加深大型语言模型(LLM)对上下文的理解,从而提高结果准确性。
-
整合领域特定术语:为了提高查询的相关性和精确度。
-
利用历史对话:使用过去的交互为大型语言模型提供更丰富的上下文和更相关的示例。
这些举措旨在解决当前的挑战,并提高 NeoConverse 中 LLM 生成的 Cypher 查询的可靠性。
安装
演示版可在网上获取,https://neoconverse.graphapp.io
您也可以在本地运行它,方法是克隆代码库并按照 README.md 文件中的说明进行操作。