本文向您展示了执行多模态搜索的主要步骤,您可以使用文本搜索没有关联元数据的图像数据库。

要求

  • 图像数据库
  • Meilisearch 项目
  • 可以本地安装的嵌入生成提供商

配置本地嵌入生成管道

首先,设置一个系统,将图像发送到您选择的嵌入生成提供商,然后将返回的嵌入集成到您的数据集中。 具体过程很大程度上取决于您的特定设置,但应包括以下主要步骤:
  1. 选择一个可在本地运行的提供商
  2. 选择一个支持图像和文本输入的模型
  3. 将图像发送到嵌入生成提供商
  4. 将返回的嵌入添加到数据库中每个图像的 _vector 字段
在大多数情况下,您的系统应定期运行这些步骤,或在您更新数据库时运行。

配置用户提供的嵌入器

配置 embedder 索引设置,将其源设置为 userProvided
curl \
  -X PATCH 'MEILISEARCH_URL/indexes/movies/settings' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "embedders": {
      "EMBEDDER_NAME": {
        "source":  "userProvided",
        "dimensions": MODEL_DIMENSIONS
      }
    }
  }'
EMBEDDER_NAME 替换为您希望为嵌入器指定的名称。将 MODEL_DIMENSIONS 替换为您所选模型的维度数。

向 Meilisearch 添加文档

接下来,使用 /documents 端点上传向量化图像。 在大多数情况下,您应该自动化此步骤,以便 Meilisearch 与您的主数据库保持同步。

设置查询向量化管道

由于您使用的是 userProvided 嵌入器,因此您还必须为搜索查询生成嵌入。此过程应类似于为图像生成嵌入
  1. 从前端接收用户查询
  2. 将查询发送到本地嵌入生成提供商
  3. 使用返回的查询嵌入执行搜索

使用用户提供的嵌入进行向量搜索

一旦您拥有查询的向量,将其传递给 vector 搜索参数以执行语义 AI 驱动的搜索
curl -X POST -H 'content-type: application/json' \
  'localhost:7700/indexes/products/search' \
  --data-binary '{ 
    "vector": VECTORIZED_QUERY,
    "hybrid": {
      "embedder": "EMBEDDER_NAME",
    }
  }'
VECTORIZED_QUERY 替换为您的提供商生成的嵌入,将 EMBEDDER_NAME 替换为您的嵌入器。 如果您的图像有任何关联元数据,您可以通过包含原始 q 来执行混合搜索:
curl -X POST -H 'content-type: application/json' \
  'localhost:7700/indexes/products/search' \
  --data-binary '{ 
    "vector": VECTORIZED_QUERY,
    "hybrid": {
      "embedder": "EMBEDDER_NAME",
    }
    "q": "QUERY",
  }'

结论

您已经了解了使用 Meilisearch 实现图像搜索的主要步骤
  1. 准备一个将图像转换为向量的管道
  2. 使用 Meilisearch 索引向量化图像
  3. 准备一个将用户查询转换为向量的管道
  4. 使用转换后的查询执行搜索
© . This site is unofficial and not affiliated with Meilisearch.