来源:互联网 更新时间:2026-06-14 14:35
在这个信息过载的时代,快速准确地从数据中捞出想要的答案,几乎成了每个人的日常刚需。但传统的数据检索方式,往往需要你熟悉复杂的查询语言和数据库结构——这对很多开发者来说都是个坎儿,更别提普通用户了。

有没有一种方式,能让查询变得像聊天一样简单?
下面,我们就来拆解一下,怎么把这个工具集成到项目里,让它真正帮你提高效率。
简单来说,
Text2CypherRetriever 则是这个方法的落地实现:它先让大语言模型(LLM)根据用户的问题生成一段 Cypher 查询,然后这段查询会被拿到 Neo4j 数据库里去执行,捞回相关信息。最后,这些结果会被塞进 LLM 的上下文中,LLM 再据此生成最终的自然语言答案。
这相当于为用户和数据库之间搭了一座桥——用户只管用自然语言提问,LLM 包揽了查询生成和答案编写两件事,交互体验一下子直观了很多。
内部研究显示,Text2Cypher 作为检索方法,在面对各种不同的问题变体时,表现得最稳定。在处理不同复杂度的任务时,它的表现也比其他策略更靠谱。
跟之前的文章类似,我们先连到一个预先配好的 Neo4j 演示数据库。这个数据库模拟了一个电影推荐的知识图谱。你可以直接用用户名和密码 recommendations,在 https://demo.neo4jlabs.com:7473/browser/ 访问它。这个配置提供了一个真实的场景——向量嵌入数据已经是 Neo4j 数据库的一部分,拿来就能用。
在 Python 环境里,先把 neo4j-graphrag 包和相关依赖装好:
pip install neo4j-graphrag neo4j openai
然后,用 Neo4j Python 驱动程序建立连接:
from neo4j import GraphDatabase
URI = "neo4j+s://demo.neo4jlabs.com"
AUTH = ("recommendations", "recommendations")
driver = GraphDatabase.driver(URI, auth=AUTH)
接下来,配置 Text2CypherRetriever:
from neo4j_graphrag.retrievers import Text2CypherRetriever
from neo4j_graphrag.llm import OpenAILLM
t2c_llm = OpenAILLM(model_name="gpt-3.5-turbo")
neo4j_schema = """
节点属性:
Person {name: STRING, born: INTEGER}
Movie {tagline: STRING, title: STRING, released: INTEGER}
关系属性:
ACTED_IN {roles: LIST}
REVIEWED {summary: STRING, rating: INTEGER}
关系:
(:Person)-[:ACTED_IN]->(:Movie)
(:Person)-[:DIRECTED]->(:Movie)
(:Person)-[:PRODUCED]->(:Movie)
(:Person)-[:WROTE]->(:Movie)
(:Person)-[:FOLLOWS]->(:Person)
(:Person)-[:REVIEWED]->(:Movie)
"""
examples = [
"用户输入: '《黑客帝国》有哪些演员参演?' 查询: MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WHERE m.title = "The Matrix" RETURN p.name"
]
retriever = Text2CypherRetriever(
driver=driver,
llm=t2c_llm,
neo4j_schema=neo4j_schema,
examples=examples,
)
使用 Text2CypherRetriever,生成并执行查询变得非常直接:
query_text = "雨果·维文参演了哪些电影?" print(retriever.search(query_text=query_text))
返回的结果:
items=[ RetrieverResultItem(content="", metadata=None), RetrieverResultItem(content=" ", metadata=None), RetrieverResultItem(content=" ", metadata=None), RetrieverResultItem(content=" ", metadata=None), RetrieverResultItem(content=" ", metadata=None), RetrieverResultItem(content=" ", metadata=None), RetrieverResultItem(content=" ", metadata=None), RetrieverResultItem(content=" ", metadata=None) ] metadata={ 'cypher': "MATCH (p:Person {name: 'Hugo Wea ving'})-[:ACTED_IN]->(m:Movie) RETURN m.title", '__retriever': 'Text2CypherRetriever' }
把这个检索器接入 GraphRAG 流水线:
from neo4j_graphrag.generation import GraphRAG
llm = OpenAILLM(model_name="gpt-4o", model_params={"temperature": 0})
rag = GraphRAG(retriever=retriever, llm=llm)
query_text = "雨果·维文参演了哪些电影?"
response = rag.search(query_text=query_text)
print(response.answer)
最终回答如下:
雨果·维文参演了以下电影: - 裁缝 - V字仇杀队 - 黑客帝国 - 沙漠妖姬 - 证明
Text2CypherRetriever 的出现,可以说是将 Neo4j 与生成式 AI 集成的一个关键进展。它用自然语言处理替代了手写 Cypher 查询,降低了开发者的使用门槛。更重要的是,对于那些需要精确、上下文相关信息,又不想折腾向量嵌入的场景,这个工具恰好提供了非常轻量的解决方案。
《Off Campus》第二季官宣:这对CP还在,但不再是主角
和平精英如何做到压枪稳-和平精英怎样才能压枪稳
客单价碾压宝马奥迪!极氪5月交付新车34377辆:连续4个月双增长
免费影视剧APP推荐
HBO 奇幻剧《龙之家族》第三季定档 6 月 22 日,最终预告片曝光喉道海战
儿子穿新中式现身大会堂 马斯克罕见用中文回应:他正在学习普通话
DOTA2 TI时隔七年重返上海!门票6月10日开抢,国服享受优先购买!
帅气继父网名女生可爱英文(精选100个)
网络热词聊污是什么意思
抖音最火沙雕男生网名(精选100个)
蒙古上单是什么梗
金铲铲之战s17六暗星卡莎阵容玩法构筑指南
韦一敏是什么梗
SpaceX狂揽AI人才,马斯克亲自面试且不看简历背景
免费看片软件下载地址推荐
免费看电影的软件推荐
阿里发布Qwen3.7-Max大模型,全球第五、国产第一
有寓意的易经网名男生(精选100个)
三角洲行动卡战备怎么弄 三角洲行动卡战备攻略
晨字沙雕网名大全女生(精选100个)
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc