跳到主要内容
版本:Next
embeddingINPUTBUFFERPROCESSOROUTPUT

Embedding

embedding 处理器(processor)通过 OpenAI 兼容的 embeddings API,对流入批次(Batch)的一个文本列做批量向量化,并将向量追加为 FixedSizeList(Float32, dim) 列。任何支持 OpenAI /embeddings 协议的端点均可使用:OpenAI、Azure OpenAI(通过 headers)、vLLM、Ollama 或 TEI 兼容网关。

它与 Qdrant 输出搭配,构成流式 RAG / 语义搜索摄取管道。

配置​

FieldTypeRequiredDefault描述
typestringyes—embedding
api_basestringyes—API 基础 URL;请求路径为 {api_base}/embeddings。
modelstringyes—嵌入模型名称(如 text-embedding-3-small)。
api_keystringno—以 Authorization: Bearer 形式发送。支持 Secret 引用。
fieldstringyes—待向量化的输入 UTF-8 列。各行必须非 null。
target_fieldstringnoembedding追加的向量列名称。
batch_sizeintegerno32每个 HTTP 请求的最大行数。
timeout_msintegerno30000HTTP 请求超时。
headersmapno—额外的 HTTP 头(如 Azure 的 api-key)。
备注

发往回环(loopback)端点的请求(例如本地 vLLM/Ollama 实例)始终绕过系统代理。

错误语义​

API 调用失败(非 2xx)或响应不一致(向量数量或维度不匹配、输入文本为 null)都会以处理错误的形式暴露,因此在配置了 error_output 的流中,该批次会流向 error_output。该处理器不会重试嵌入请求——重试会使 API 开销成倍增加;请改用 error_output 或上游重投递。

示例​

- type: "embedding"
api_base: "https://api.openai.com/v1"
model: "text-embedding-3-small"
api_key: "${env:OPENAI_API_KEY:-}"
field: "text"
batch_size: 32

完整管道示例​

logging:
level: info

streams:
- id: docs-embedder
input:
type: kafka
brokers:
- broker1.example.com:9092
topics:
- documents
consumer_group: arkflow-embedder
start_from_latest: false
pipeline:
thread_num: 4
processors:
- type: json_to_arrow
- type: embedding
api_base: "https://api.openai.com/v1"
model: "text-embedding-3-small"
api_key: "${env:OPENAI_API_KEY:-}"
field: "text"
output:
type: stdout