Published: 18 Jun 2026 › Updated: 18 Jun 2026
langchain对neo4j进行交互,写入和查询数据 / ai #53
对neo4j有了基本了解,就可以上手实操啰。这里采用langchain的集成方案,写入和查询都集成得很好,几条命令就可搞定。
写入数据
# 安装包
pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install langchain-openai langchain-community langchain-experimental
pip install langchain-neo4j
from langchain_core.documents import Document
from dotenv import dotenv_values
from langchain_openai import ChatOpenAI
from langchain_neo4j import Neo4jGraph
from langchain_experimental.graph_transformers import LLMGraphTransformer
env_vars = dotenv_values('.env')
OPENAI_KEY = env_vars['OPENAI_API_KEY']
OPENAI_BASE_URL = env_vars['OPENAI_API_BASE']
# 打开文件,并赋予读取模式 'r'
def readTxt():
with open('./ball.txt', 'r', encoding='gbk') as file:
content = file.read()
documents = [Document(page_content=content)]
#print(123, documents)
return documents
# 创建图数据库实例
graph = Neo4jGraph(url='neo4j+s://a2f9xcxx.databases.neo4j.io',
username="a2f9xxxx",
password="gh7EJn9Ik1xxxxx.xx",
database="a2f9xxxx"
)
graph_llm = ChatOpenAI(temperature=0, model_name="gpt-5.4-mini", api_key=OPENAI_KEY, base_url=OPENAI_BASE_URL)
# 图转换器配置
graph_transformer = LLMGraphTransformer(llm=graph_llm) #可以使用默认设置
"""
#或者是添加节点和关系边
graph_transformer = LLMGraphTransformer(
llm=graph_llm,
allowed_nodes=["国家", "分组", "16强赛"], # 可以自定义节点
allowed_relationships=["举行", "对抗", "淘汰", "战胜"], # 可以自定义关系
)
"""
documents = readTxt()
graph_documents = graph_transformer.convert_to_graph_documents(documents)
graph.add_graph_documents(graph_documents)
print(f"Graph documents: {len(graph_documents)}")
print(f"Nodes from 1st graph doc:{graph_documents[0].nodes}")
print(f"Relationships from 1st graph doc:{graph_documents[0].relationships}")
写入后的数据如图所示
以世界杯的数据来作测试。使用了langchain的默认配置。从图中可以看出,langchain可以很好地默认提取出节点和关系,快速写入图数据库中。当然也可以定义好节点和边的关系,可操作性可能会更好些。
查询数据
from langchain_core.documents import Document
from dotenv import dotenv_values
from langchain_openai import ChatOpenAI
from langchain_neo4j import Neo4jGraph
from langchain_experimental.graph_transformers import LLMGraphTransformer
from langchain_neo4j import GraphCypherQAChain
env_vars = dotenv_values('.env')
OPENAI_KEY = env_vars['OPENAI_API_KEY']
OPENAI_BASE_URL = env_vars['OPENAI_API_BASE']
# 创建图数据库实例
graph = Neo4jGraph(url='neo4j+s://a2f9xcxx.databases.neo4j.io',
username="a2f9xxxx",
password="gh7EJn9Ik1xxxxx.xx",
database="a2f9xxxx"
)
graph_llm = ChatOpenAI(temperature=0, model_name="gpt-5.4-mini", api_key=OPENAI_KEY, base_url=OPENAI_BASE_URL)
cypher_chain = GraphCypherQAChain.from_llm(
graph=graph,
cypher_llm=graph_llm,
qa_llm=graph_llm,
validate_cypher=True,
verbose=True,
allow_dangerous_requests=True
)
response = cypher_chain.invoke({"query": "I组有哪些队"})
# response = cypher_chain.invoke({"query": "美国在哪个小组"})
print(response["result"])
"""
> Entering new GraphCypherQAChain chain...
Generated Cypher:
MATCH (g:Group {id: 'I组'})-[:HAS_TEAM]->(c:Country)
RETURN c.id AS team
Full Context:
[{'team': '法国'}, {'team': '塞内加尔'}, {'team': '伊拉克'}, {'team': '挪威'}]
> Finished chain.
I组有法国、塞内加尔、伊拉克和挪威。
"""
附测试数据:
2026年世界杯共有48支国家队参赛,首次扩军,分为12个小组(A-L组),由美国、加拿大和墨西哥联合主办。
东道主与首次参赛球队:
1. 东道主:美国、加拿大、墨西哥
2. 首次晋级的新军:乌兹别克斯坦、约旦、佛得角、库拉索
小组分组(A-L组)
- A组:墨西哥、南非、韩国、捷克
- B组:加拿大、波黑、卡塔尔、瑞士
- C组:巴西、摩洛哥、海地、苏格兰
- D组:美国、巴拉圭、澳大利亚、土耳其
- E组:德国、库拉索、科特迪瓦、厄瓜多尔
- F组:荷兰、日本、瑞典、突尼斯
- G组:比利时、埃及、伊朗、新西兰
- H组:西班牙、佛得角、沙特阿拉伯、乌拉圭
- I组:法国、塞内加尔、伊拉克、挪威
- J组:阿根廷、阿尔及利亚、奥地利、约旦
- K组:葡萄牙、刚果(金)、乌兹别克斯坦、哥伦比亚
- L组:英格兰、克罗地亚、加纳、巴拿马
赛制与晋级规则
- 小组赛:12个小组,每组4队,前两名及成绩最好的8个第三名晋级32强淘汰赛
- 淘汰赛:32强-16强-8强-半决赛-决赛
- 总比赛场次:104场,赛事周期39天(6月12日开赛,7月20日决赛)
- 2026年世界杯不仅是历史上规模最大的一届赛事,也是全球足球版图变化最明显的一届,涵盖传统豪门与首次晋级的新军,呈现真正的全球足球盛会
Leave langchain对neo4j进行交互,写入和查询数据 / ai #53 to:
Read more #cn posts
Best Posts From lemooljiang
We have not curated any of lemooljiang's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From lemooljiang
- DeepTutor:AI个性化辅导平台 / ai #57
- ComfyUI:可编程和自动化的PS / ai #56
- 将Neo4j封装进Agent / ai #55
- 闲鱼省钱大法:极限0.5折!
- 对Neo4j批量导入结构化数据 / ai #54
- langchain对neo4j进行交互,写入和查询数据 / ai #53
- 知识图谱和图数据库Neo4j的作用和使用场景 / ai #52
- SpaceX、美股和比特币
- 又是币圈血洗日!
- 链股合流,当币安也开始卖股票啰
- 天涯社区重启,爷青回?
- 诺基亚在AI时代重新杀回来啦
- 《2049:未来10000天的可能》书中的镜像世界为什么不叫元宇宙
- 今天适合吃披萨
- 开通即被封,别再给Claude送人头了!
- 两根内存条引发的“官司”
- AI·Joe V12更新, 更新GPT-5.5和DeepSeek V4 等
- 中医进校园活动反响热烈
- 猪价低伤农,猪价贵伤民
- Solidity开发指南