You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WITH语句中调用apoc.ml.openai.embedding函数报错求助

解决APOC OpenAI嵌入函数在WITH子句中报错的问题

问题原因

apoc.ml.openai.embedding是存储过程(Procedure),而非可在表达式中直接调用的函数(Function)。这类过程必须通过CALL语句执行并通过YIELD获取返回结果,不能像普通函数一样直接在WITH、SET等子句中作为表达式使用。

解决方案

将过程调用放在独立的CALL语句中,通过YIELD接收嵌入结果后,再与节点数据一起传递到后续的WITH子句中。示例代码如下:

MATCH (movie:Movie) WHERE movie.tagline IS NOT NULL
// 调用OpenAI嵌入过程,传递单个tagline组成的数组,YIELD获取embedding结果
CALL apoc.ml.openai.embedding([movie.tagline], {
    apiKey: "你的OpenAI密钥",
    model: "text-embedding-ada-002"
}) YIELD embedding
// 将movie节点和对应的embedding一起传递到后续逻辑
WITH movie, embedding
// 示例:将embedding存储到节点属性
SET movie.embedding = embedding
RETURN movie.title, movie.tagline, embedding

关键注意点

  • 确保传递给apoc.ml.openai.embedding的第一个参数是文本数组,即使是单个文本也要用[movie.tagline]的形式包裹,与直接调用CALL时的参数格式保持一致。
  • 所有APOC的机器学习类工具(apoc.ml.*)基本都是存储过程,必须遵循CALL ... YIELD的调用范式。

内容的提问来源于stack exchange,提问作者bAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:32:33