以下是2个最近爆火的人工智能工具,
DeepSeek:DeepSeek
Kimi: Kimi - 会推理解析,能深度思考的AI助手
你能帮我生成一个知识图谱吗,等一下我会给你一篇文章,帮我从内容中提取关键要素,然后以Neo4j的语法的形式构建知识图谱
喂给它的文字是从 https://www.zhihu.com/question/361137050/answer/3186161914 复制的一段,(此段文字可以是任意的,不需要理解,复制即可)。
// 创建实体:NebulaGraph CREATE (ng:NebulaGraph {name: 'NebulaGraph', description: '开源的、分布式的、易扩展的原生图数据库'}); // 创建实体:图数据库 CREATE (gdb:DatabaseType {name: '图数据库', description: '专门存储庞大的图形网络并从中检索信息的数据库'}); // 创建关系:NebulaGraph 是一种 图数据库 CREATE (ng)-[:IS_A]->(gdb); // 创建属性节点 CREATE (opensource:Attribute {name: '开源', description: '在 Apache 2.0 条款下开发'}); CREATE (highperformance:Attribute {name: '高性能', description: '提供毫秒级查询'}); CREATE (scalable:Attribute {name: '易扩展', description: '支持在不停止数据库服务的情况下扩缩容'}); CREATE (developerFriendly:Attribute {name: '易开发', description: '提供多种编程语言的客户端'}); CREATE (reliable:Attribute {name: '高可靠', description: '支持严格的角色访问控制和 LDAP 认证'}); CREATE (ecosystem:Attribute {name: '生态多样化', description: '提供多种原生工具和与其他产品的整合能力'}); CREATE (openCypher:Attribute {name: '兼容 openCypher', description: '部分兼容 openCypher 的查询语言'}); CREATE (futureHardware:Attribute {name: '面向未来硬件', description: '面向 SSD 设计,读写平衡'}); CREATE (flexibleModeling:Attribute {name: '灵活数据建模', description: '用户可以轻松建立数据模型'}); // 创建关系:NebulaGraph 具有这些属性 CREATE (ng)-[:HAS_ATTRIBUTE]->(opensource); CREATE (ng)-[:HAS_ATTRIBUTE]->(highperformance); CREATE (ng)-[:HAS_ATTRIBUTE]->(scalable); CREATE (ng)-[:HAS_ATTRIBUTE]->(developerFriendly); CREATE (ng)-[:HAS_ATTRIBUTE]->(reliable); CREATE (ng)-[:HAS_ATTRIBUTE]->(ecosystem); CREATE (ng)-[:HAS_ATTRIBUTE]->(openCypher); CREATE (ng)-[:HAS_ATTRIBUTE]->(futureHardware); CREATE (ng)-[:HAS_ATTRIBUTE]->(flexibleModeling); // 创建适用场景节点 CREATE (fraudDetection:Scenario {name: '欺诈检测', description: '检测潜在的金融欺诈行为'}); CREATE (realTimeRecommendation:Scenario {name: '实时推荐', description: '精准推送文章、视频、产品和服务'}); CREATE (knowledgeGraph:Scenario {name: '知识图谱', description: '将自然语言转化为知识图谱'}); CREATE (socialNetwork:Scenario {name: '社交网络', description: '处理数十亿人和数万亿人际关系的信息'}); // 创建关系:NebulaGraph 适用于这些场景 CREATE (ng)-[:APPLIES_TO]->(fraudDetection); CREATE (ng)-[:APPLIES_TO]->(realTimeRecommendation); CREATE (ng)-[:APPLIES_TO]->(knowledgeGraph); CREATE (ng)-[:APPLIES_TO]->(socialNetwork); // 创建公司节点 CREATE (tencent:Company {name: '腾讯'}); CREATE (meituan:Company {name: '美团'}); CREATE (jd:Company {name: '京东'}); CREATE (kuaishou:Company {name: '快手'}); CREATE (qihoo360:Company {name: '360'}); // 创建关系:这些公司使用 NebulaGraph CREATE (tencent)-[:USES]->(ng); CREATE (meituan)-[:USES]->(ng); CREATE (jd)-[:USES]->(ng); CREATE (kuaishou)-[:USES]->(ng); CREATE (qihoo360)-[:USES]->(ng); |
先删除所有节点: match (n) detach delete n;
把DeepSeek生成的Cypher 代码插入到Neo4j中。
节点分散,如下图:
// 创建实体节点 CREATE (ng:NebulaGraph {name: "NebulaGraph", description: "开源图数据库"}) CREATE (gd:GraphDatabase {name: "图数据库", description: "存储图形网络的数据库"}) CREATE (cpp:ProgrammingLanguage {name: "C++", description: "编程语言"}) CREATE (java:ProgrammingLanguage {name: "Java", description: "编程语言"}) CREATE (python:ProgrammingLanguage {name: "Python", description: "编程语言"}) CREATE (go:ProgrammingLanguage {name: "Go", description: "编程语言"}) CREATE (apache:License {name: "Apache 2.0", description: "开源许可协议"}) CREATE (github:Platform {name: "GitHub", description: "代码托管平台"}) CREATE (ldap:Protocol {name: "LDAP", description: "轻量级目录访问协议"}) CREATE (studio:Tool {name: "NebulaGraph Studio", description: "原生工具"}) CREATE (console:Tool {name: "NebulaGraph Console", description: "原生工具"}) CREATE (exchange:Tool {name: "NebulaGraph Exchange", description: "原生工具"}) CREATE (spark:Product {name: "Spark", description: "大数据处理框架"}) CREATE (flink:Product {name: "Flink", description: "流处理框架"}) CREATE (hbase:Product {name: "HBase", description: "分布式存储系统"}) CREATE (tencent:Company {name: "腾讯", description: "科技公司"}) CREATE (meituan:Company {name: "美团", description: "科技公司"}) CREATE (jd:Company {name: "京东", description: "科技公司"}) CREATE (kuaishou:Company {name: "快手", description: "科技公司"}) CREATE (qihoo:Company {name: "360", description: "科技公司"}) CREATE (fraud:Application {name: "欺诈检测", description: "应用场景"}) CREATE (recommendation:Application {name: "实时推荐", description: "应用场景"}) CREATE (kg:Application {name: "知识图谱", description: "应用场景"}) CREATE (social:Application {name: "社交网络", description: "应用场景"}) // 创建关系 CREATE (ng)-[:IS_A]->(gd) CREATE (ng)-[:WRITTEN_IN]->(cpp) CREATE (ng)-[:SUPPORTS]->(java) CREATE (ng)-[:SUPPORTS]->(python) CREATE (ng)-[:SUPPORTS]->(go) CREATE (ng)-[:FOLLOWS]->(apache) CREATE (ng)-[:HOSTED_ON]->(github) CREATE (ng)-[:SUPPORTS]->(ldap) CREATE (ng)-[:INCLUDES]->(studio) CREATE (ng)-[:INCLUDES]->(console) CREATE (ng)-[:INCLUDES]->(exchange) CREATE (ng)-[:INTEGRATES_WITH]->(spark) CREATE (ng)-[:INTEGRATES_WITH]->(flink) CREATE (ng)-[:INTEGRATES_WITH]->(hbase) CREATE (tencent)-[:USES]->(ng) CREATE (meituan)-[:USES]->(ng) CREATE (jd)-[:USES]->(ng) CREATE (kuaishou)-[:USES]->(ng) CREATE (qihoo)-[:USES]->(ng) CREATE (ng)-[:APPLICABLE_FOR]->(fraud) CREATE (ng)-[:APPLICABLE_FOR]->(recommendation) CREATE (ng)-[:APPLICABLE_FOR]->(kg) CREATE (ng)-[:APPLICABLE_FOR]->(social) |
先删除所有节点: match (n) detach delete n;
把Kimi生成的Cypher代码插入到Neo4j中,节点分散,如下图:
7、两幅图不同的原因
在使用Cypher语言生成图数据时,即使使用相同的文字数据,最终生成的图可能会有巨大的不同,这主要是由于以下几个原因:
布局算法:不同的布局算法会导致节点和边的排列方式不同。Cypher本身不负责布局,布局通常由图可视化工具(如Neo4j Browser、Gephi等)完成。不同的工具或同一工具中的不同布局算法可能会导致图的视觉表现差异很大。
节点和边的属性:如果节点和边的属性不同(例如,权重、标签、颜色等),即使使用相同的数据,布局算法可能会根据这些属性来调整节点的位置和边的显示方式。
数据模型:数据模型的设计(例如,节点之间的关系类型、节点的属性等)也会影响图的生成。不同的数据模型可能会导致不同的图结构。
图的复杂性:如果图非常复杂(例如,包含大量的节点和边),布局算法可能会采用不同的策略来避免节点重叠或边交叉,从而导致不同的视觉效果。
参数设置:布局算法通常有一些参数可以调整,例如节点之间的距离、边的弯曲程度等。不同的参数设置会导致不同的布局结果。
随机性:某些布局算法可能包含随机性,这意味着每次运行时生成的图可能会有所不同。
注:随着时间的变化,在之后再次向大语言模型询问相同问题时,给出的代码表现效果相比实验记录时优化了很多,相关模型都在飞速提升。