当前位置: 首页 > news >正文

做站用什么网站程序上海疫情最新消息

做站用什么网站程序,上海疫情最新消息,开源商城,为什么建设法律法规网站欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142938982 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Neo4j …

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/142938982

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


Neo4j

Neo4j 是一个高性能的图形数据库,允许用户以图形的形式存储和检索数据,这种形式非常适合处理复杂的关系和网络结构,因其在数据关系处理方面的强大能力而广受欢迎,尤其是在社交网络、推荐系统、网络分析等领域。

构建 GraphRAG 的知识图谱,请参考:配置 GraphRAG + Ollama 服务 构建 中文知识图谱 教程(踩坑记录)

  • Doc:https://neo4j.com/docs/apoc/current/

1. 配置 Neo4j 服务

准备 Docker,参考 Docker - Neo4j

docker pull neo4j:5.24.1

启动 Docker (直接启动,同时运行服务):

docker run --network=host --gpus all --rm --name neo4j-apoc \
-e NEO4J_apoc_export_file_enabled=true \
-e NEO4J_apoc_import_file_enabled=true \
-e NEO4J_apoc_import_file_use__neo4j__config=true \
-e NEO4J_PLUGINS=\[\"apoc\"\] \
--volume=[your folder]:[your folder] \
neo4j:5.24.1

或者,进入 Docker,再启动服务:

docker run --network=host --gpus all -it --name neo4j-apoc -e NEO4J_apoc_export_file_enabled=true -e NEO4J_apoc_import_file_enabled=true -e NEO4J_apoc_import_file_use__neo4j__config=true -e NEO4J_PLUGINS=\[\"apoc\"\] --volume=[your folder]:[your folder] neo4j:5.24.1 /bin/bashbin/neo4j start

注意:使用 Neo4j + APOC 版本的 Docker。APOC(Awesome Procedures on Cypher) 是 Neo4j 图数据库的一个插件,提供一组强大的过程和函数,扩展 Cypher 查询语言的功能。参考:Neo4J and APOC

日志:

Installing Plugin 'apoc' from /var/lib/neo4j/labs/apoc-*-core.jar to /var/lib/neo4j/plugins/apoc.jar
Applying default values for plugin apoc to neo4j.conf
2024-10-15 01:40:54.429+0000 INFO  Logging config in use: File '/var/lib/neo4j/conf/user-logs.xml'
2024-10-15 01:40:54.443+0000 INFO  Starting...
2024-10-15 01:40:55.191+0000 INFO  This instance is ServerId{0350f51a} (0350f51a-ef80-414f-b82f-8e4b38fc369f)
2024-10-15 01:40:56.078+0000 INFO  ======== Neo4j 5.24.1 ========
2024-10-15 01:40:58.875+0000 INFO  Anonymous Usage Data is being sent to Neo4j, see https://neo4j.com/docs/usage-data/
2024-10-15 01:40:58.910+0000 INFO  Bolt enabled on 0.0.0.0:7687.
2024-10-15 01:40:59.325+0000 INFO  HTTP enabled on 0.0.0.0:7474.
2024-10-15 01:40:59.326+0000 INFO  Remote interface available at http://localhost:7474/
2024-10-15 01:40:59.328+0000 INFO  id: 3C118963730B6744966FCB5FC5D9D5795B11AD1F791A4DDC113D02D1F926441F
2024-10-15 01:40:59.329+0000 INFO  name: system
2024-10-15 01:40:59.329+0000 INFO  creationDate: 2024-10-15T01:40:57.342Z
2024-10-15 01:40:59.329+0000 INFO  Started.

启动服务:http://[your ip]:7474/browser/,默认账户和密码都是 neo4j,需要修改新密码 xxxxxx,建议 neo4j123 (自定义)。

启动页面,注意,实体和关系都空的,即:

Neo4j

2. 注入知识图谱数据

数据位于:/var/lib/neo4j/data/databases/neo4j,其中 neo4j 是数据库。

读取 GraphRAG 的知识图谱数据,如下:

import os
import pandas as pdrag_dir = "[your folder]/llm/graphrag/ragtest/output/"entities = pd.read_parquet(os.path.join(rag_dir, "create_final_entities.parquet"))
relationships = pd.read_parquet(os.path.join(rag_dir, "create_final_relationships.parquet"))
text_units = pd.read_parquet(os.path.join(rag_dir, "create_final_text_units.parquet"))
communities = pd.read_parquet(os.path.join(rag_dir, "create_final_communities.parquet"))
community_reports = pd.read_parquet(os.path.join(rag_dir, "create_final_community_reports.parquet"))

测试数据:

entities.head(2)
relationships.head(2)
text_units.head(2)
communities.head(2)
community_reports.head(2)

连接服务器:

NEO4J_URI = "neo4j://localhost:7687"
NEO4J_USERNAME = "neo4j"
NEO4J_PASSWORD = "xxxxxx"	# 之前修改的密码
NEO4J_DATABASE = "neo4j"  	# 默认
driver = GraphDatabase.driver(NEO4J_URI, auth=(NEO4J_USERNAME, NEO4J_PASSWORD))

注意:社区版本,不能创建新的 Database 只能使用默认的 neo4j,创建命令 CREATE DATABASE my-database,参考

数据导入函数:

def import_data(cypher, df, batch_size=1000):for i in range(0,len(df), batch_size):batch = df.iloc[i: min(i+batch_size, len(df))]result = driver.execute_query("UNWIND $rows AS value " + cypher, rows=batch.to_dict('records'),database_=NEO4J_DATABASE)print(result.summary.counters)return 

导入 text_units 命令:

#导入text_units
cypher_text_units = """
MERGE (c:__Chunk__ {id:value.id})
SET c += value {.text, .n_tokens}
WITH c, value
UNWIND value.document_ids AS document
MATCH (d:__Document__ {id:document})
MERGE (c)-[:PART_OF]->(d)
"""import_data(cypher_text_units, text_units)

运行成功,日志:

{'_contains_updates': True, 'labels_added': 99, 'relationships_created': 235, 'nodes_created': 99, 'properties_set': 396}

导入 entities 数据的命令:

#导入entities
cypher_entities= """
MERGE (e:__Entity__ {id:value.id})
SET e += value {.human_readable_id, .description, name:replace(value.name,'"','')}
WITH e, value
CALL db.create.setNodeVectorProperty(e, "description_embedding", value.description_embedding)
CALL apoc.create.addLabels(e, case when coalesce(value.type,"") = "" then [] else [apoc.text.upperCamelCase(replace(value.type,'"',''))] end) yield node
UNWIND value.text_unit_ids AS text_unit
MATCH (c:__Chunk__ {id:text_unit})
MERGE (c)-[:HAS_ENTITY]->(e)
"""import_data(cypher_entities, entities)

导入 relationships 数据的命令:

#导入relationships
cypher_relationships = """MATCH (source:__Entity__ {name:replace(value.source,'"','')})MATCH (target:__Entity__ {name:replace(value.target,'"','')})// not necessary to merge on id as there is only one relationship per pairMERGE (source)-[rel:RELATED {id: value.id}]->(target)SET rel += value {.rank, .weight, .human_readable_id, .description, .text_unit_ids}RETURN count(*) as createdRels
"""import_data(cypher_relationships, relationships)

导入 communities 数据的命令:

#导入communities
cypher_communities = """
MERGE (c:__Community__ {community:value.id})
SET c += value {.level, .title}
/*
UNWIND value.text_unit_ids as text_unit_id
MATCH (t:__Chunk__ {id:text_unit_id})
MERGE (c)-[:HAS_CHUNK]->(t)
WITH distinct c, value
*/
WITH *
UNWIND value.relationship_ids as rel_id
MATCH (start:__Entity__)-[:RELATED {id:rel_id}]->(end:__Entity__)
MERGE (start)-[:IN_COMMUNITY]->(c)
MERGE (end)-[:IN_COMMUNITY]->(c)
RETURn count(distinct c) as createdCommunities
"""import_data(cypher_communities, communities)

导入 community_reports 数据的命令:

#导入community_reports
cypher_community_reports = """MATCH (c:__Community__ {community: value.community})
SET c += value {.level, .title, .rank, .rank_explanation, .full_content, .summary}
WITH c, value
UNWIND range(0, size(value.findings)-1) AS finding_idx
WITH c, value, finding_idx, value.findings[finding_idx] as finding
MERGE (c)-[:HAS_FINDING]->(f:Finding {id: finding_idx})
SET f += finding"""
import_data(cypher_community_reports, community_reports)

3. 测试效果

启动 Neo4j 页面,知识图谱可视化,包括 Node labels 和 Relationship types 等功能,即:

数据

其他知识图谱元素的可视化,参考 Neo4j 的文档。

http://www.tj-hxxt.cn/news/59992.html

相关文章:

  • 网站交易平台重庆网站排名优化教程
  • 婚纱摄影网站seo方案打开百度首页
  • 如何做网站后台管理员搜索关键词排名优化服务
  • 在湖南建设人力资源网站如何做企业网页
  • 六安网站制作哪里有建立网站需要什么条件
  • 傻瓜网站开发工具seo技术优化技巧
  • 无后台网站的维护上海百度推广代理商
  • 西安网站建设公司十强自制网站 免费
  • 做3d人物模型素材下载网站seo关键词优化软件官网
  • 用qq邮箱做网站东莞关键词seo
  • 网站置顶jq网站建设与网页设计制作
  • 网站上传后 后台进不去珠海网站seo
  • 洛阳网站建设外包汽车网络营销推广方案
  • 云南昆州建设工程有限公司网站扬州百度seo公司
  • 山东高密网站建设武汉seo网站优化排名
  • 做网站具体收费网站友情链接的作用
  • 秀网站郑州网络推广代理顾问
  • 电脑系统网站建设网站seo优化方案策划书
  • 建网站制作百度指数在线查询小程序
  • 网站设计建设步骤杭州seo托管公司推荐
  • 好商网的网站可以做中英文切换吗seo免费培训教程
  • 做视频解析网站要什么服务器seo优化排名
  • 公司网站开发创业汕头网站建设方案推广
  • 个人网站备案技巧经典软文推广案例
  • 莱芜金点子广告电子版最新windows优化大师下载
  • 连城县住房和城乡建设局 网站网上推广企业
  • 用家里的电脑做网站服务器微博seo排名优化
  • wordpress制作上传图片网站产品怎么优化
  • 南京网站建设苏icp备公司seo是什么职位
  • seo优化范畴优化服务平台