embedding(向量生成)

更新时间:
复制为 MD 格式

embedding 节点将文本字段映射为高维稠密向量,用于语义检索、聚类和向量索引构建等下游任务。本文介绍 embedding 节点的配置参数、输入输出格式和使用示例。

功能说明

embedding 节点调用 AI 模型,将文本字段映射为高维稠密向量。每条记录独立计算,不改变行数。

适用场景:

  • semantic-clustersample等下游节点提供向量输入。

  • 构建 Dataset 中的 Embedding 列(如 question_embedding)。

  • 构建向量搜索索引。

节点配置

在 Pipeline JSON 中,embedding 节点的基本配置如下。

{
  "id": "node_1",
  "type": "embedding",
  "parameters": {
    "field": "<字段名>",
    "model": "<模型名>",
    "as": "<输出列名>",
    "output": "<输出列列表>"
  }
}

参数说明

参数

类型

是否必选

默认值

说明

field

String

待向量化的文本字段名。

model

String

sls-multilang-600m-i32k-o1024

Embedding 模型名称,默认适合多语言通用场景。

as

String

{field}_embedding

输出 Embedding 列名,默认在原字段名后拼接 _embedding 后缀。

output

String

*

输出列,多列以英文逗号分隔。*(默认)保留全部列(含扩展列),指定时仅输出列出的列。

输入与输出

输入要求

  • 上游节点输出的任意列数据。

  • 必须包含 field 参数指定的字段,且字段类型为文本。

输出说明

列名

类型

来源

说明

output 控制列

-

透传或新增

* 保留全部列(含扩展列),指定时仅输出列出的列。

{as}

array(double)

新增

文本 Embedding 向量。

行数变化:1:1 变换,不增减行数。

说明

field 字段值为 NULL 的行将被过滤,不出现在输出中。

效果预览

处理前(3 条记录):

question

input

output

什么是机器学习?

请解释

机器学习是...

如何学习Python?

入门

推荐从官方教程...

什么是深度学习?

简述

深度学习是...

处理后(3 条记录),field = "question"

question

input

output

question_embedding

什么是机器学习?

请解释

机器学习是...

[0.12, -0.34, 0.56, ...]

如何学习Python?

入门

推荐从官方教程...

[0.78, 0.23, -0.11, ...]

什么是深度学习?

简述

深度学习是...

[-0.45, 0.67, 0.89, ...]

行数不变(3 到 3),每行新增 Embedding 向量列。列名默认为 {field}_embedding,可通过 as 参数自定义。

使用示例

示例一:基础向量化

question 字段生成 Embedding,输出列名自动命名为 question_embedding

{
  "id": "n3",
  "type": "embedding",
  "parameters": {
    "field": "question"
  }
}

示例二:自定义输出列名和模型

content 字段生成 Embedding,自定义输出列名为 content_vec,使用 text-embedding-v3 模型。

{
  "id": "n3",
  "type": "embedding",
  "parameters": {
    "field": "content",
    "as": "content_vec",
    "model": "text-embedding-v3"
  }
}

示例三:Pipeline 组合(去重后向量化)

先精确去重,再生成 Embedding。前置去重可显著减少向量化计算量。

{
  "nodes": [
    { "id": "n1", "type": "project", "parameters": { "question": "a", "output": "c" } },
    { "id": "n2", "type": "dedup-exact", "parameters": { "field": "question" } },
    { "id": "n3", "type": "embedding", "parameters": { "field": "question" } }
  ]
}

示例四:多字段分别向量化

串联多个 embedding 节点实现多字段向量化,每次调用仅处理一个字段。

{
  "nodes": [
    { "id": "n1", "type": "project", "parameters": { "question": "a", "input": "b", "output": "c" } },
    { "id": "n2", "type": "embedding", "parameters": { "field": "question" } },
    { "id": "n3", "type": "embedding", "parameters": { "field": "output", "as": "output_embedding" } }
  ]
}

注意事项

推荐用法

  • 在去重或采样之后使用 embedding 节点。Embedding 生成为远程 GPU 推理调用,前置降量可显著减少计算成本。

  • 如果上游已有 dedup-semantic 节点,可直接使用其 __dedup_emb 扩展列作为向量输入,无需重复调用 embedding 节点。

  • 默认模型 sls-multilang-600m-i32k-o1024 适合多语言通用场景。

  • 通过 as 参数自定义输出列名,避免与已有列冲突。

  • NULL 值的行会被过滤。如需保留,在上游先做 NULL 值处理。

边界与异常

场景

行为

field 参数缺失

校验失败,Pipeline 无法运行。

field 字段值为 NULL

该行被过滤,不出现在输出中。

模型名称无效

运行时报错。

文本过长超出模型限制

由模型决定(截断或报错)。

as 列名与输入列冲突

运行时报错。

输入数据为空

正常返回空结果集。