MindGraph:文字生成知识图

欢迎来到MindGraph,这是一个概念验证、开源的、以API为先的基于图形的项目,旨在通过自然语言的交互(输入和输出)来构建和定制CRM解决方案。该原型旨在便于集成和扩展。以下是关于X的公告,提供更多背景信息。c13154a6d7a2fcf80db8141a43c04b84.jpeg开始之前,请确保已安装以下内容:

  • Python 3.6或更高版本
  • Flask,可通过pip安装:

pip install Flask

运行应用程序

克隆存储库后,请导航到根目录,并使用以下命令启动Flask服务器:python main.py服务器将在http://0.0.0.0:81 上启动。

项目结构

  • MindGraph分为几个关键组件:
  • main.py:应用程序的入口点。
  • app/init.py:设置Flask应用程序并集成蓝图。
  • models.py:管理内存中的图形数据结构,用于实体和关系。
  • views.py:托管API路由的定义。
  • integration_manager.py:处理集成函数的动态注册和管理。
  • signals.py:设置用于创建、更新和删除实体的信号。

集成系统

MindGraph采用了一个复杂的集成系统,旨在动态扩展应用程序的基本功能。这个系统的核心是integration_manager.py,它充当各种集成函数的注册表和执行器。这种模块化架构使MindGraph能够无缝地整合AI驱动的功能,例如通过natural_input.py等集成将自然语言输入处理成结构化的知识图谱。进一步的集成,包括add_multiple_conditional、conditional_entity_addition和conditional_relationship_addition,协同工作,以确保应用程序数据模型的完整性和增强。

特性

实体管理:实体存储在内存图中,以便快速访问和操作,允许对人员、组织及其相互关系进行CRUD操作。集成触发器:可以通过HTTP请求触发自定义集成函数,从而使CRM能够与外部系统交互或运行其他处理。搜索功能:可以使用自定义查询参数轻松搜索实体及其关系。AI准备:设计时考虑了AI集成,便于整合智能数据处理和决策。

API端点

MindGraph提供一系列RESTful端点:POST /<entity_type>:创建一个实体。GET /<entity_type>/int:entity_id:检索一个实体。GET /<entity_type>:列出某类型的所有实体。PUT /<entity_type>/int:entity_id:更新一个实体。DELETE /<entity_type>/int:entity_id:删除一个实体。POST /relationship:建立一个新的关系。GET /search/entities/<entity_type>:搜索实体。GET /search/relationships:查找关系。自定义集成端点POST /trigger-integration/<integration_name>:激活预定义的集成函数。

前端概览

MindGraph的前端具有轻量级的交互式、基于Web的界面,可以动态可视化和管理基于图形的数据模型。虽然MindGraph旨在作为API使用,但前端在演示目的上很有帮助。它利用HTML、CSS、JavaScript进行开发,使用Cytoscape.js进行图形可视化,并使用jQuery处理AJAX请求。

特性

图形可视化:使用Cytoscape.js进行交互式图形渲染。动态数据交互:支持实时数据获取、添加和图形更新,无需重新加载页面。搜索和高亮:允许用户搜索节点,高亮显示并列出匹配项。搜索表单目前被双重使用于自然语言查询,这实际上并不合理,但这是展示功能的一种快速方式。(这是用作API的,前端仅用于演示目的)数据提交表单:包括用于自然语言、URL输入和CSV文件上传的表单。响应式设计:适应各种设备和屏幕大小。

工作流程

初始化:在页面加载时,使用样式和布局初始化图形。用户交互:通过界面,用户可以:搜索节点,结果在图形中高亮显示,并列在侧边栏中。使用支持各种输入方法的表单添加数据。刷新图形以反映最新的后端数据。数据处理:用户输入被发送到后端进行处理和集成,前端图形可视化相应更新。

基于模式的知识图创建

MindGraph利用schema.json文件来定义其知识图中实体的结构和关系。这个模式作为解释和结构化自然语言输入为连贯图形格式的蓝图。它详细说明了节点类型(例如,Person、Organization、Concept)以及它们之间可能的关系,确保生成的知识图符合一致的格式。这种方法允许自动化、基于AI的处理自然语言输入,生成反映输入文本中固有复杂相互关系的结构化数据。

AI集成中使用schema.json

当create_knowledge_graph函数处理输入时,它会查阅schema.json,了解如何将识别的实体及其关系映射到图形中。这包括:根据模式定义识别节点类型和属性。确定有效的关系类型及其特征。结构化输出以匹配预期的图形格式,便于与应用程序的数据模型无缝集成。模式确保由AI生成的知识图不仅与应用程序的数据模型一致,而且丰富详细,捕捉输入文本中描述的实体之间的微妙关系。

优势

一致性:确保所有从自然语言输入生成的知识图都遵循相同的结构规则,使数据集成和解释更加简单。

灵活性:允许通过修改schema.json轻松更新和扩展知识图结构,无需更改代码库。AI集成:通过为预期输出提供清晰的结构,促进了使用先进的AI模型进行自然语言处理,增强了应用程序从非结构化数据中提取有意义见解的能力。

开发与扩展

添加新的集成要将新的集成整合到MindGraph中,创建一个Python模块,放在integrations目录下。该模块应定义集成的逻辑,并包含一个register函数,将集成连接到IntegrationManager。确保您的集成与应用程序的组件正确交互,例如models.py用于数据操作,views.py用于通过API端点激活。通过模块化和可重用的代码,这种方法允许MindGraph通过动态和可重用的代码扩展其功能。利用信号对于实体生命周期事件,发出信号提供了扩展功能或与其他系统同步的钩子。

数据库集成和使用

MindGraph支持灵活的数据库集成,以增强其数据存储和检索能力。Out of the box,MindGraph支持一个简单的内存数据库和一个更强大的基于云的选项,NexusDB。这种灵活性使得可以轻松适应不同的部署环境和用例。

支持的数据库

InMemoryDatabase:用于快速原型设计和测试的简单内存图形数据结构。由于其不持久化的性质,不建议用于生产环境。NexusDB:一个全方位的云数据库,设计用于存储图形、表格、文档、文件、向量等等。提供一个共享的知识图,用于全面的数据管理和分析。

配置数据库

数据库集成通过DATABASE_TYPE环境变量进行控制。要选择数据库,请将此变量设置为memory以选择内存数据库,或设置为nexusdb以进行NexusDB集成。

添加新的数据库集成

要将新的数据库系统集成到MindGraph中:实现数据库集成:在base.py中定义的抽象基类DatabaseIntegration下创建一个新的Python模块,位于app/integrations/database下。您的实现应该为基类中的所有抽象方法提供具体的方法。注册您的集成:修改app/integrations/database/init.py中的数据库类型检测逻辑,以包含您的新数据库类型。这涉及添加一个额外的elif语句,以检查您的数据库类型,并相应地设置CurrentDBIntegration。配置环境变量:如果您的集成需要自定义环境变量(例如,用于连接字符串、身份验证),请确保它们在MindGraph部署环境中得到适当设置和文档化。

模式管理

对于需要模式定义的数据库(如NexusDB),在您的集成模块中包含一个模式管理策略。这可能涉及在启动时检查和更新数据库模式,以确保与当前版本的MindGraph兼容。

示例命令

通过curl创建一个人:curl -X POST http://0.0.0.0:81/people-H "Content-Type: application/json"-d '{"name":"Jane Doe","age":28}'

示例用例

为了展示MindGraph集成系统的强大功能,以下是一些示例命令:触发自然语言输入集成curl -X POST http://0.0.0.0:81/trigger-integration/natural_input-H "Content-Type: application/json"-d '{"input":"Company XYZ organized an event attended by John Doe and Jane Smith."}'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/467219.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS报错-Command PhaseScriptExecution failed with a nonzero exit code

问题&#xff1a;iOS debug没问题&#xff0c;一打包就报错&#xff1a; Command PhaseScriptExecution failed with a nonzero exit code 解决方法如下&#xff1a; 在项目的Pods目录下&#xff0c;找到Targets Support Files->Pods-xxxx-frameworks.sh 如下&#xff1a…

C语言数组—二维数组

二维数组的创建 //数组创建 int arr[3][4]; //三行四列&#xff0c;存放整型变量 double arr[2][4];二维数组的初始化 我们如果这样初始化&#xff0c;效果是什么样的呢 int arr[3][4] { 1,2,3,4,5,6,7,8,9,10,11,12 };那如果我们不写满十二个呢 int arr[3][4] { 1,2,3,4…

数据可信流通:从运维信任到技术信任

1.数据可信流通概念 "数据可信流通"通常指的是确保数据在不同系统、应用程序或者组织之间的传输和交换过程中的可信性、完整性和安全性。在数据流通的过程中&#xff0c;确保数据的真实性、完整性和保密性是非常重要的&#xff0c;尤其是涉及到敏感信息或者重要数据…

Day21:实现退出功能、开发账号设置、检查登录状态

实现退出功能 将登录凭证修改为失效状态。跳转至网站首页。 数据访问层 不用写了&#xff0c;已经有了updateStatus方法&#xff1b; 业务层 UserService public void logout(String ticket) {loginTicketMapper.updateStatus(ticket, 1);}Controller层 RequestMapping(p…

glib交叉编译

Glib交叉编译 逸一时&#xff0c;误一世。 —— 田所浩二「夏夜银梦」 交叉编译 GLib 涉及到在一个平台上生成能够在另一个平台上运行的目标文件。在这种情况下&#xff0c;我们将会在一台主机&#xff08;通常是开发机器&#xff09;上使用交叉编译工具链来构建 GLib 库&#…

Linux:git的基础操作

git的下载 版本控制系统一般分为两种&#xff0c;集中式版本控制系统&#xff0c;分布式版本控制系统 什么是集中式版本控制系统&#xff1a;版本库集中存放在中央服务器&#xff0c;工作时候使用自己的电脑&#xff0c;当工作时候在中央服务器上拉取最新版本的代码&#xff0c…

微服务:高并发带来的问题的容错方案

1.相关脚本&#xff08;陈天狼&#xff09; 启动nacos客户端&#xff1a; startup.cmd -m standalone 启动sentinel控制台&#xff1a; # 直接使⽤jar命令启动项⽬(控制台本身是⼀个SpringBoot项⽬) java -Dserver.port8080 -Dcsp.sentinel.dashboard.serverlocalhost:808…

【渗透测试实战】用渗透实例sqllibs第46关来讲解SQL报错注入的操作顺序

1、查出库名&#xff08;database()&#xff09; http://127.0.0.1/sqli7/Less-46/?sortupdatexml(1,if(12,1,concat(0x7e,database(),0x7e)),1) 2、通过库名&#xff0c;查表名&#xff08;table_name&#xff09; http://127.0.0.1/sqli7/Less-46/?sortupdatexml(1,if(12…

VMware虚拟机和主机之间无法复制粘贴,移动文件,重新安装vmware-tools变灰,VMware Tools继续运行脚本未能在虚拟机中成功运行。

起初&#xff0c;虚拟机只是无法和主机之间进行复制粘贴&#xff0c;移动文件。查询了很多资料,反反复复地安装卸载vmware-tools&#xff0c;但是都没有成功。通过这篇文章&#xff1a;虚拟机安装VMware Tools的两种方法_vmware tools有3种安装方式-CSDN博客 安装了vmware_too…

中国巨型地下中微子实验室准备探究宇宙奥秘

JUNO设施将于今年上线&#xff0c;将有助于确定哪种类型的中微子质量最高 - 这是物理学中最大的谜团之一。 中国江门地下中微子天文台&#xff08;JUNO&#xff09;的建设工作。朱诺号希望在2024年底之前探测到中微子。图片来源&#xff1a;Qiu Xinsheng/VCG via Getty 开平区…

JAVA八股day1

遇到的问题 相比于包装类型&#xff08;对象类型&#xff09;&#xff0c; 基本数据类型占用的空间往往非常小为什么说是几乎所有对象实例都存在于堆中呢&#xff1f;静态变量和成员变量、成员变量和局部变量的区别为什么浮点数运算的时候会有精度丢失的风险&#xff1f;如何解…

PHP姓名快速匿名化工具(重组脱敏)

PHP姓名重组工具(脱敏/匿名化工具) 将excel数据姓名列粘贴提交&#xff0c;得到随机姓随机中间字随机尾字的重组姓名 那些年自用瞎搞的代码&#xff0c;今日整理成网页交提交得到结果的交互功能分享。 <?php //PHP姓名重组工具(脱敏/匿名化工具) //将excel数据姓名列粘贴…

Linux TCP参数——tcp_adv_win_scale

文章目录 tcp_adv_win_scaleip-sysctl.txt解释buffering overhead内核缓存和应用缓存示例计算深入理解从2到1(tcp_adv_win_scale的值)总结 tcp_adv_win_scale adv-advise&#xff1b;win-window; 用于指示TCP中接收缓存比例的值。 static inline int tcp_win_from_space(int …

蓝桥杯-Python组(一)

1. 冒泡排序 算法步骤&#xff1a; 比较相邻元素&#xff0c;如果第一个大于第二个则交换从左往右遍历一遍&#xff0c;重复第一步&#xff0c;可以保证最大的元素在最后面重复上述操作&#xff0c;可以得到第二大、第三大、… n int(input()) a list(map(int, input()…

java实现kml文件下载接口

根据业务需求&#xff0c;需提供一个下载kml格式航线文件的HTTP GET接口 示例代码 RequestMapping(value "/getFlyingPathFile/{uavTypeId}/{flyingPathId}.kml", method RequestMethod.GET, produces "application/vnd.google-earth.kmlxml") Respons…

轻松打造完美原型:9款在线工具推荐

早年&#xff0c;UI设计师选择的工具有限&#xff0c;功能相对单一&#xff0c;大多数在线原型设计工具都是国外的&#xff0c;语言和网络都增加了设计工作的负担。如今&#xff0c;国内外有许多在线原型设计工具&#xff0c;不仅可以在浏览器上使用&#xff0c;而且还具有团队…

wsl or 虚拟机 安装

1.wsl2安装 WSL全称Windows Subsystem for Linux&#xff0c;是微软开发的适用于Linux的Windows子系统 如今已经有两代了&#xff1a; 所以用的多的还是wsl2。 安装前需要先去设置启用或关闭Windows功能&#xff1a; 打开适用于linux的子系统和虚拟机平台。 Microsoft Store里…

论文阅读——MoCo

Momentum Contrast for Unsupervised Visual Representation Learning 动量在数学上理解为加权移动平均&#xff1a; yt-1是上一时刻输出&#xff0c;xt是当前时刻输入&#xff0c;m是动量&#xff0c;不想让当前时刻输出只依赖于当前时刻的输入&#xff0c;m很大时&#xff0…

小程序搜索排名优化二三事

小程序的优化主要是排名优化和性能优化两个版块。性能优化这方面主要靠开发者自己完善&#xff0c;我们团队提供的服务就是把产品的排名打上去&#xff0c;获得更多的自然流量&#xff0c;实现盈利。 如何提升小程序的搜索排名主要从如下几个方面出发&#xff1a; 首先要知道…

二蛋赠书十八期:《一本书讲透Elasticsearch:原理、进阶与工程实践》

Elasticsearch 是一种强大的搜索和分析引擎&#xff0c;被广泛用于各种应用中&#xff0c;以其强大的全文搜索能力而著称。 不过&#xff0c;在日常管理 Elasticsearch 时&#xff0c;我们经常需要对索引进行保护&#xff0c;以防止数据被意外修改或删除&#xff0c;特别是在进…