文本/图像嵌入处理器
text_image_embedding
处理器用于从文本和图像字段生成组合向量嵌入,以实现多模态神经网络搜索。
先决条件
在使用 text_image_embedding
处理器之前,您必须设置一个机器学习 (ML) 模型。有关更多信息,请参阅选择模型。
以下是 text_image_embedding
处理器的语法
{
"text_image_embedding": {
"model_id": "<model_id>",
"embedding": "<vector_field>",
"field_map": {
"text": "<input_text_field>",
"image": "<input_image_field>"
}
}
}
参数
下表列出了 text_image_embedding
处理器所需和可选的参数。
参数 | 数据类型 | 必需/可选 | 描述 |
---|---|---|---|
model_id | 字符串 | 必需 | 将用于生成嵌入的模型 ID。模型必须部署在 OpenSearch 中才能在神经网络搜索中使用。有关更多信息,请参阅在 OpenSearch 中使用自定义模型和多模态搜索。 |
embedding | 字符串 | 必需 | 用于存储生成嵌入的向量字段的名称。文本和图像字段都将生成一个嵌入。 |
field_map | 对象 | 必需 | 包含指定用于生成嵌入的字段的键值对。 |
field_map.text | 字符串 | 可选 | 用于获取文本以生成向量嵌入的字段名称。您必须至少指定一个 text 或 image 字段。 |
field_map.image | 字符串 | 可选 | 用于获取图像以生成向量嵌入的字段名称。您必须至少指定一个 text 或 image 字段。 |
description | 字符串 | 可选 | 处理器的简要描述。 |
tag | 字符串 | 可选 | 处理器的标识符标签。有助于调试以区分相同类型的处理器。 |
skip_existing | 布尔型 | 可选 | 当为 true 时,处理器不会对已包含嵌入的字段进行推理调用,保持现有嵌入不变。默认值为 false 。 |
使用处理器
请按照以下步骤在管道中使用该处理器。创建处理器时必须提供模型 ID。有关更多信息,请参阅在 OpenSearch 中使用自定义模型。
步骤 1:创建管道。
以下示例请求创建一个摄入管道,其中 image_description
中的文本和 image_binary
中的图像将被转换为向量嵌入,并存储在 vector_embedding
字段中
PUT /_ingest/pipeline/nlp-ingest-pipeline
{
"description": "A text/image embedding pipeline",
"processors": [
{
"text_image_embedding": {
"model_id": "bQ1J8ooBpBj3wT4HVUsb",
"embedding": "vector_embedding",
"field_map": {
"text": "image_description",
"image": "image_binary"
}
}
}
]
}
您可以在一个管道中设置多个处理器,为多个字段生成嵌入。
步骤 2 (可选):测试管道。
建议在摄取文档之前测试您的管道。
要测试管道,请运行以下查询
POST _ingest/pipeline/nlp-ingest-pipeline/_simulate
{
"docs": [
{
"_index": "testindex1",
"_id": "1",
"_source":{
"image_description": "Orange table",
"image_binary": "bGlkaHQtd29rfx43..."
}
}
]
}
响应
响应确认,除了 image_description
和 image_binary
字段外,处理器还在 vector_embedding
字段中生成了向量嵌入
{
"docs": [
{
"doc": {
"_index": "testindex1",
"_id": "1",
"_source": {
"vector_embedding": [
-0.048237972,
-0.07612712,
0.3262124,
...
-0.16352308
],
"image_description": "Orange table",
"image_binary": "bGlkaHQtd29rfx43..."
},
"_ingest": {
"timestamp": "2023-10-05T15:15:19.691345393Z"
}
}
}
]
}
创建摄入管道后,您需要创建一个用于摄入的索引,并将文档摄入到该索引中。要了解更多信息,请参阅多模态搜索中的步骤 2:创建用于摄入的索引和步骤 3:将文档摄入到索引中。
后续步骤
- 要了解如何在多模态搜索中使用
neural
查询,请参阅神经网络查询。 - 要了解更多关于多模态搜索的信息,请参阅多模态搜索。
- 要了解更多关于在 OpenSearch 中使用模型的信息,请参阅选择模型。
- 有关综合示例,请参阅语义和混合搜索入门。