embedding 节点将文本字段映射为高维稠密向量,用于语义检索、聚类和向量索引构建等下游任务。本文介绍 embedding 节点的配置参数、输入输出格式和使用示例。
功能说明
embedding 节点调用 AI 模型,将文本字段映射为高维稠密向量。每条记录独立计算,不改变行数。
适用场景:
为semantic-cluster、sample等下游节点提供向量输入。
构建 Dataset 中的 Embedding 列(如
question_embedding)。构建向量搜索索引。
节点配置
在 Pipeline JSON 中,embedding 节点的基本配置如下。
{
"id": "node_1",
"type": "embedding",
"parameters": {
"field": "<字段名>",
"model": "<模型名>",
"as": "<输出列名>",
"output": "<输出列列表>"
}
}参数说明
参数 | 类型 | 是否必选 | 默认值 | 说明 |
| String | 是 | 无 | 待向量化的文本字段名。 |
| String | 否 |
| Embedding 模型名称,默认适合多语言通用场景。 |
| String | 否 |
| 输出 Embedding 列名,默认在原字段名后拼接 |
| String | 否 |
| 输出列,多列以英文逗号分隔。 |
输入与输出
输入要求
上游节点输出的任意列数据。
必须包含
field参数指定的字段,且字段类型为文本。
输出说明
列名 | 类型 | 来源 | 说明 |
| - | 透传或新增 |
|
| 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 值处理。
边界与异常
场景 | 行为 |
| 校验失败,Pipeline 无法运行。 |
| 该行被过滤,不出现在输出中。 |
模型名称无效 | 运行时报错。 |
文本过长超出模型限制 | 由模型决定(截断或报错)。 |
| 运行时报错。 |
输入数据为空 | 正常返回空结果集。 |