GenAI 助手过程
使用自然语言查询
此过程 apoc.ml.query
使用自然语言接收一个问题,并返回该查询的结果。
它使用 chat/completions
API,此处有相关文档。
CALL apoc.ml.query("What movies did Tom Hanks play in?") yield value, query
RETURN *
+------------------------------------------------------------------------------------------------------------------------------+
| value | query |
+------------------------------------------------------------------------------------------------------------------------------+
| {m.title -> "You've Got Mail"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "Apollo 13"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "Joe Versus the Volcano"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "That Thing You Do"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "Cloud Atlas"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "The Da Vinci Code"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "Sleepless in Seattle"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "A League of Their Own"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "The Green Mile"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "Charlie Wilson's War"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "Cast Away"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
| {m.title -> "The Polar Express"} | "cypher
MATCH (m:Movie)<-[:ACTED_IN]-(p:Person {name: 'Tom Hanks'})
RETURN m.title
" |
+------------------------------------------------------------------------------------------------------------------------------+
12 rows
名称 | 描述 |
---|---|
question |
用自然语言表达的问题 |
conf |
可选的配置映射,请查看下一节 |
名称 | 描述 | 必填 |
---|---|---|
retries |
API 调用失败时的重试次数 |
否,默认值为 |
retryWithError |
如果为真,则在发生错误时重试 API,并将以下消息添加到请求正文:{ |
否,默认值为 |
apiKey |
OpenAI API 密钥 |
如果未定义 |
model |
Open AI 模型 |
否,默认值为 |
sample |
要跳过的节点数,例如,1000 的样本将读取每 1000 个节点。它用作计算模式的 |
否,默认为随机数 |
名称 | 描述 |
---|---|
值 |
查询的结果 |
cypher |
用于计算结果的查询 |
使用自然语言描述图模型
此过程 apoc.ml.schema
使用自然语言返回底层数据集的描述。
它使用 chat/completions
API,此处有相关文档。
CALL apoc.ml.schema() yield value
RETURN *
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| value |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "The graph database schema represents a system where users can follow other users and review movies. Users (:Person) can either follow other users (:Person) or review movies (:Movie). The relationships allow users to express their preferences and opinions about movies. This schema can be compared to social media platforms where users can follow each other and leave reviews or ratings for movies they have watched. It can also be related to movie recommendation systems where user preferences and reviews play a crucial role in generating personalized recommendations." |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row
名称 | 描述 |
---|---|
conf |
可选的配置映射,请查看下一节 |
名称 | 描述 | 必填 |
---|---|---|
apiKey |
OpenAI API 密钥 |
如果未定义 |
model |
Open AI 模型 |
否,默认值为 |
sample |
要跳过的节点数,例如,1000 的样本将读取每 1000 个节点。它用作计算模式的 |
否,默认为随机数 |
名称 | 描述 |
---|---|
值 |
数据集的描述 |
从自然语言查询创建 Cypher 查询
此过程 apoc.ml.cypher
接收一个自然语言问题,并将其转换为指定数量的 Cypher 查询。
它使用 chat/completions
API,此处有相关文档。
CALL apoc.ml.cypher("Who are the actors which also directed a movie?", {count: 4}) yield cypher
RETURN *
+----------------------------------------------------------------------------------------------------------------+
| query |
+----------------------------------------------------------------------------------------------------------------+
| "
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(d:Person)
RETURN a.name as actor, d.name as director
" |
| "cypher
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(a)
RETURN a.name
" |
| "
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(d:Person)
RETURN a.name
" |
| "cypher
MATCH (a:Person)-[:ACTED_IN]->(:Movie)<-[:DIRECTED]-(a)
RETURN DISTINCT a.name
" |
+----------------------------------------------------------------------------------------------------------------+
4 rows
名称 | 描述 | 必填 |
---|---|---|
question |
用自然语言表达的问题 |
是 |
conf |
可选的配置映射,请查看下一节 |
否 |
名称 | 描述 | 必填 |
---|---|---|
count |
要检索的查询数量 |
否,默认值 |
apiKey |
OpenAI API 密钥 |
如果未定义 |
model |
Open AI 模型 |
否,默认值为 |
sample |
要跳过的节点数,例如,1000 的样本将读取每 1000 个节点。它用作计算模式的 |
否,默认为随机数 |
名称 | 描述 |
---|---|
值 |
数据集的描述 |
从 Cypher 查询创建自然语言查询解释
此过程apoc.ml.fromCypher
采用自然语言问题并将其转换为自然语言查询解释。
它使用 chat/completions
API,此处有相关文档。
CALL apoc.ml.cypher("MATCH (p:Person {name: "Tom Hanks"})-[:ACTED_IN]->(m:Movie) RETURN m", {}) yield value
RETURN *
值 |
---|
此数据库模式表示常见电影数据库模型的简化版本。 |
名称 | 描述 | 必填 |
---|---|---|
cypher |
用自然语言表达的问题 |
是 |
conf |
可选的配置映射,请查看下一节 |
否 |
名称 | 描述 | 必填 |
---|---|---|
retries |
API 调用失败时的重试次数 |
否,默认值为 |
apiKey |
OpenAI API 密钥 |
如果未定义 |
model |
Open AI 模型 |
否,默认值为 |
sample |
要跳过的节点数,例如,1000 的样本将读取每 1000 个节点。它用作计算模式的 |
否,默认为随机数 |
名称 | 描述 |
---|---|
值 |
数据集的描述 |
从一组查询创建子图的解释
此过程apoc.ml.fromQueries
返回给定查询集的自然语言解释。
它使用 chat/completions
API,此处有相关文档。
CALL apoc.ml.fromQueries(['MATCH (n:Movie) RETURN n', 'MATCH (n:Person) RETURN n'],
{apiKey: <apiKey>})
YIELD value
RETURN *
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| value |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "The database represents movies and people, like in a movie database or social network.
There are no defined relationships between nodes, allowing flexibility for future connections.
The Movie node includes properties like title, tagline, and release year." |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row
CALL apoc.ml.fromQueries(['MATCH (n:Movie) RETURN n', 'MATCH p=(n:Movie)--() RETURN p'],
{apiKey: <apiKey>})
YIELD value
RETURN *
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| value |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "models relationships in the movie industry, connecting :Person nodes to :Movie nodes.
It represents actors, directors, writers, producers, and reviewers connected to movies they are involved with.
Similar to a social network graph but specialized for the entertainment industry.
Each relationship type corresponds to common roles in movie production and reviewing.
Allows for querying and analyzing connections and collaborations within the movie business." |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row
名称 | 描述 |
---|---|
查询 |
查询列表 |
conf |
可选的配置映射,请查看下一节 |
名称 | 描述 | 必填 |
---|---|---|
apiKey |
OpenAI API 密钥 |
如果未定义 |
model |
Open AI 模型 |
否,默认值为 |
sample |
要跳过的节点数,例如,1000 的样本将读取每 1000 个节点。它用作计算模式的 |
否,默认为随机数 |
名称 | 描述 |
---|---|
值 |
数据集的描述 |