Debezium AI

嵌入变换

qianmoQqianmoQ· 更新于 2026-09-28· 阅读 19 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

嵌入向量转换

要为在大语言模型中使用内容做准备,或者说为一般的自然语言处理做准备,一项必须完成的重要任务是将文本转换为数字表示,这也称为文本向量化。实现这种转换的一种方式是通过所谓的文本嵌入,即把文本转换为高维数值向量的过程。将文本表示为向量,可使计算机执行语义相似性搜索及其他高级操作。

Debezium 提供了一项内置功能,可将指定的文本字段转换为数值嵌入向量,并将生成的嵌入结果添加到事件记录中。嵌入推理会根据所配置提供商所提供的嵌入模型执行。Debezium 提供了多个嵌入模型提供商。

Debezium 可以使用单条消息转换(SMT)来生成嵌入向量。为了与不同的嵌入提供商交互,此嵌入转换采用了 langchain4j 框架。

嵌入转换要求 Java 21 或更高版本。

行为

嵌入转换以原始事件记录中的特定字段作为输入,并将这些字段的文本内容传递给已配置的嵌入模型进行推理。也就是说,该 SMT 会根据指定字段中包含的文本生成嵌入向量。生成的嵌入向量会追加到记录中,同时记录中也会保留原始的源字段。

源字段必须是字符串字段。嵌入字段的值是 32 位浮点数的向量。向量的大小取决于所选模型。为了提供嵌入的内部表示,Debezium 使用 FloatVector 数据类型。记录中嵌入字段的 schema 类型为 io.debezium.data.FloatVector。

源字段和嵌入字段的定义均支持嵌套结构,例如 after.product_description_embedding。

配置

要配置连接器以使用嵌入转换,请在连接器配置中添加以下几行:

transforms=embeddings,
transforms.embeddings.type=io.debezium.ai.embeddings.FieldToEmbedding

必须至少指定一个字段作为嵌入(embedding)的输入。嵌入写入的目标字段并非必填;若未指定,消息值中将只包含嵌入本身。不过,建议指定嵌入的目标字段,例如:

transforms.embeddings.field.source=after.product
transforms.embeddings.field.embedding=after.product_embedding

最后,你必须将模型提供商的 JAR 文件放入连接器类路径中,并配置该提供商。例如,对于 Ollama 提供商,请将 debezium-ai-embeddings-ollama-$VERSION.jar 添加到你的连接器类路径中,并将 Ollama 的 URL 和模型名称添加到连接器配置中,如下例所示:

transforms.embeddings.ollama.url=http://localhost:11434
transforms.embeddings.ollama.model.name=all-minilm

以下示例展示了 Ollama 提供程序的完整配置可能的样子:

transforms=embeddings,
transforms.embeddings.type=io.debezium.ai.embeddings.FieldToEmbedding
transforms.embeddings.field.source=after.product
transforms.embeddings.field.embedding=after.product_embedding
transforms.embeddings.ollama.url=http://localhost:11434
transforms.embeddings.ollama.model.name=all-minilm

常规配置选项

选项默认值说明
embeddings.field.source无默认值指定源记录中用作嵌入输入的字段。指定字段的数据类型必须为 string。
embeddings.field.embedding无默认值指定 SMT 添加到记录中、用于存放文本嵌入的字段名称。如果未指定该值,生成的记录将只包含嵌入值。

表 1. 嵌入 SMT 配置选项说明

模型提供方配置

Hugging Face

由 Hugging Face 上可用的模型提供的嵌入。

选项默认值描述
embeddings.huggingface.access.token无默认值Hugging Face 访问令牌。
embeddings.huggingface.model.name无默认值嵌入模型的名称。使用 REST API 获取可用模型列表。请在 REST 调用中指定提供方,例如 Hugging Face 推理提供方。
embeddings.huggingface.baseUrlhttps://api-inference.huggingface.co/Hugging Face 推理 API 的基础 URL。
embeddings.huggingface.operation.timeout.ms15000(15 秒)等待嵌入结果响应的最长时间,以毫秒为单位。

表 2. Hugging Face 嵌入的配置选项

Hugging Face 已开始支持多种嵌入推理提供方,其中包括外部提供方。不过,LangChain4j 框架目前尚未支持外部提供方。因此,当前可用于 Debezium 的推理提供方只有 Hugging Face 这一个。

Ollama

支持 Ollama 服务器提供的任何模型。

选项默认值说明
embeddings.ollama.url无默认值Ollama 服务器的 URL,需包含端口号,例如 http://localhost:11434。
embeddings.ollama.model.name无默认值嵌入模型的名称。
embeddings.ollama.operation.timeout.ms15000(15 秒)等待嵌入回复的最长时间,单位为毫秒。

表 3. Ollama 嵌入配置选项

ONNX MiniLM

提供 ONNX 进程内 all-minilm-l6-v2 模型,该模型已直接包含在 jar 文件中,除通用配置外无需其他配置。

该模型特别适合用于原型设计和测试,因为它不依赖任何外部基础设施,也不需要发出远程请求。

Voyage AI

由 Voyage AI 模型提供的嵌入向量。

选项默认值说明
embeddings.voyageai.access.token无默认值Voyage AI 访问令牌。
embeddings.voyageai.model.name无默认值嵌入模型的名称。Voyage AI 模型列表请参见 Voyage AI 文本嵌入文档。
embeddings.voyageai.baseUrlhttps://api.voyageai.com/v1/Voyage AI API 基础服务器地址。
embeddings.voyageai.operation.timeout.ms15000(15 秒)等待嵌入向量响应的最长等待时间,单位为毫秒。

表 4. Voyage AI 嵌入向量配置选项

评论

登录后参与评论

正在加载评论…