Link Search Menu Expand Document Documentation Menu

文本/图像嵌入处理器

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 字符串 可选 用于获取文本以生成向量嵌入的字段名称。您必须至少指定一个 textimage 字段。
field_map.image 字符串 可选 用于获取图像以生成向量嵌入的字段名称。您必须至少指定一个 textimage 字段。
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_descriptionimage_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:将文档摄入到索引中

后续步骤

剩余 350 字符

有问题?

想贡献?