text2cypher
这是一个受 Neo4j Labs 项目 text2cypher 启发的实验性翻译器。
如果将此翻译器添加到类路径或使用 text2cypher 包,所有以以下开头的查询将被视为
🤖,
将被视为用 普通英文 编写的 自然语言 查询。驱动程序会去除前缀,并使用 OpenAI 将输入翻译为 Cypher® 语句。驱动程序会通过传递当前图模式及输入问题来增强查询的生成。
|
以下数据将发送到外部 API
如果您不想上述数据被发送或不被允许这样做,请勿使用此翻译器。 |
此模块还需要一个额外配置:OpenAI API 密钥。您可以使用 URL 参数、JDBC 属性条目或环境变量之一。
-
URL 参数/属性名称为
openAIApiKey -
环境变量名称为
OPEN_AI_API_KEY
示例 1. 有效 URL 示例
jdbc:neo4j://:7687?openAIApiKey=sk-xxx-your-key
其他配置属性包括
| 属性名称 | 默认值 |
|---|---|
openAIBaseUrl |
https://api.openai.com/v1(由 langchain4j 定义) |
openAIModelName |
gpt-4-turbo |
openAITemperature |
0.0 |
在此配置完成后,以下查询可以被翻译成 Cypher
🤖, How was The Da Vinci Code rated?
LLM 的输出不是确定性的,可能会有所不同。虽然您可以直接执行,但我们强烈建议使用 Connection#nativeSQL 获取 Cypher 语句,检查后再单独运行。在我们的测试中,上述问题大多被正确翻译为
MATCH (m:`Movie` {
title: 'The Da Vinci Code'
})<-[r:`REVIEWED`]-(p:`Person`)
RETURN r.rating AS Rating, p.name AS ReviewerName
另一些情况下,结果是语法上正确的语句,但只能返回评论者和电影本身。还需注意,虽然人类通常会识别出您实际上在询问平均评分,LLM 并不会自行推断这一点。将问题表述得更明确可以得到更好的结果
🤖, How was The Da Vinci Code rated on average?
被更准确地翻译为
MATCH (m:`Movie` {
title: 'The Da Vinci Code'
})<-[:`REVIEWED`]-(p:`Person`)
RETURN avg(p.rating) AS AverageRating
| 一旦自然语言查询被翻译成 Cypher,结果将被缓存,后续对同一查询的调用将使用缓存结果。 |
所有未以 🤖 开头的语句将原样使用并视为 Cypher。