微信扫码
添加专属顾问
我要投稿
在如今的信息时代,快速、准确地检索数据是每个人都会面临的问题。无论是开发者还是普通用户,传统的数据检索方式往往需要掌握复杂的查询语言和数据库结构,这让很多人望而却步。
为了解决这个问题,Text2CypherRetriever 提供了一种全新的解决方案。通过自然语言生成 Cypher 查询,用户只需输入简单的自然语言问题,系统就能自动生成查询并返回结果。无论你是否熟悉数据库查询语言,都可以轻松完成复杂的数据检索任务。
接下来,我们将介绍如何使用 Text2CypherRetriever,并将其集成到你的项目中,帮助你更高效地检索数据。
Text2Cypher 是一种将自然语言转换为 Cypher 查询的翻译方法。Text2CypherRetriever 通过首先请求 LLM 根据用户的问题生成一个 Cypher 查询来执行此方法。然后,该生成的查询将在 Neo4j 数据库中执行,以获取所需的信息。结果记录将添加到 LLM 的上下文中,以便为用户的查询生成最终答案。这种方法允许用户以自然语言输入查询,而 LLM 负责查询生成和答案编写,从而实现与数据库的更直观交互。
我们的内部研究表明,使用 Text2Cypher 作为检索方法相对来说是对不同问题变体最一致的应对方法,并且在处理不同复杂度的任务时表现优于其他策略。
与之前的文章类似,首先连接到一个预配置的 Neo4j 演示数据库,该数据库模拟了一个电影推荐知识图谱。你可以使用 recommendations 作为用户名和密码,在 https://demo.neo4jlabs.com:7473/browser/ 访问该数据库。这个设置提供了一个现实的场景,你的向量嵌入数据已经是 Neo4j 数据库的一部分,可以直接使用。
在你的 Python 环境中,安装 neo4j-graphrag 包以及以下其他包:
pip install neo4j-graphrag neo4j openai
然后,使用 Neo4j Python 驱动程序建立与 Neo4j 数据库的连接:
from neo4j import GraphDatabase
URI = "neo4j+s://demo.neo4jlabs.com"
AUTH = ("recommendations", "recommendations")
driver = GraphDatabase.driver(URI, auth=AUTH)设置 Text2CypherRetriever:
from neo4j_graphrag.retrievers importText2CypherRetriever
from neo4j_graphrag.llm importOpenAILLM
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="<Record m.title='云图'>", metadata=None),
RetrieverResultItem(content="<Record m.title='裁缝'>", metadata=None),
RetrieverResultItem(content="<Record m.title='小猪宝贝'>", metadata=None),
RetrieverResultItem(content="<Record m.title='V字仇杀队'>", metadata=None),
RetrieverResultItem(content="<Record m.title='黑客帝国'>", metadata=None),
RetrieverResultItem(content="<Record m.title='采访'>", metadata=None),
RetrieverResultItem(content="<Record m.title='沙漠妖姬'>", metadata=None),
RetrieverResultItem(content="<Record m.title='证明'>", metadata=None)
]
metadata={
'cypher':"MATCH (p:Person {name: 'Hugo Weaving'})-[: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 查询,简化了检索过程,使开发人员更容易使用。此工具在需要精确、上下文相关的信息时特别有用,而无需管理向量嵌入。
若要了解更多知识图谱或neo4j图数据库相关教学,你可以查看公众号的其他文章:
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-12-16
智领新航海——基建为底,AI 为翼:中国企业AI转型与东南亚市场机遇
2025-12-16
Palantir启示录:传统IT咨询的转型之路
2025-12-12
喜力啤酒如何利用Palantir “快进” 供应链:从被动救火到预知未来
2025-12-11
从 Palantir 到世界大模型:记录、洞察与执行的重构之路
2025-12-08
一文读懂|关于 OpenText Threat Intelligence 常见问题的解答
2025-12-08
数据驱动的供应链革命:Palantir Foundry 的八个经典场景
2025-12-07
Palantir 怎么快速切入一个场景
2025-12-05
麦肯锡再发重磅报告:AI技能伙伴时代 03|不重塑流程架构,都是“伪AI”
2025-11-25
2025-10-23
2025-11-18
2025-09-29
2025-12-05
2025-10-14
2025-12-01
2025-11-20
2025-11-10
2025-11-27
2025-11-18
2025-11-13
2025-09-02
2025-08-16
2025-08-14
2025-08-06
2025-07-29
2025-05-27