热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > ai资讯 >Text2CypherRetriever:让数据库查询像聊天一样简单!

Text2CypherRetriever:让数据库查询像聊天一样简单!

来源:互联网 更新时间:2026-06-14 14:35

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

Text2CypherRetriever:让数据库查询像聊天一样简单!

有没有一种方式,能让查询变得像聊天一样简单?

Text2CypherRetriever

就是冲着这个目标来的。它的思路很直接:你只要用自然语言提问题,系统自己就生成对应的 Cypher 查询,然后跑数据库拿结果。不管你对 Cypher 熟不熟练,都能用它完成复杂的数据检索任务。

下面,我们就来拆解一下,怎么把这个工具集成到项目里,让它真正帮你提高效率。

什么是 Text2Cypher?

简单来说,

Text2Cypher

就是一种把自然语言“翻译”成 Cypher 查询的方法。而 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 查询,降低了开发者的使用门槛。更重要的是,对于那些需要精确、上下文相关信息,又不想折腾向量嵌入的场景,这个工具恰好提供了非常轻量的解决方案。

AI自动绘画大师
AI自动绘画大师

类型:益智休闲

大小:5.72MB

语言:简体中文

平台:互联网

游戏下载

热门手游

相关攻略

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc