AI 搜索
使用用户提供的嵌入向量进行图像搜索
本文展示了执行多模态文本到图像搜索的主要步骤
图像搜索
Meilisearch 支持使用用户提供的嵌入向量进行图像搜索。这使您能够执行多模态搜索:使用文本查询来查找图像。
先决条件
要使用此功能,您需要:
- 一个包含图像嵌入向量的索引
- 一个能够将文本查询转换为嵌入向量的模型
快速开始
以下是在 Meilisearch 中设置图像搜索的基本步骤:
- 创建索引:定义一个包含图像嵌入向量的索引
- 添加文档:添加包含图像嵌入向量的文档
- 执行搜索:使用文本查询的嵌入向量进行搜索
嵌入向量生成
要生成嵌入向量,您可以使用以下工具:
- CLIP - 由 OpenAI 开发的多模态模型
- sentence-transformers - 用于生成文本和图像嵌入向量的 Python 库
性能优化
对于大型图像数据集,考虑:
- 使用近似最近邻(ANN)算法
- 对嵌入向量进行降维
- 使用专门的向量数据库与 Meilisearch 结合
了解更多
本文向您展示执行多模态搜索的主要步骤,您可以使用文本来搜索没有关联元数据的图像数据库。
前提条件
- 一个图像数据库
- 一个 Meilisearch 项目
- 可以本地安装的嵌入生成服务提供商
配置本地嵌入生成流程
首先,建立一个系统将您的图像发送到所选的嵌入生成服务提供商,然后将返回的嵌入集成到数据集中。
具体流程很大程度上取决于您的特定设置,但应包含以下主要步骤:
- 选择一个可以本地运行的提供商
- 选择一个同时支持图像和文本输入的模型
- 将您的图像发送到嵌入生成服务提供商
- 将返回的嵌入添加到数据库中每个图像的
_vector
字段
在大多数情况下,您的系统应定期或在更新数据库时运行这些步骤。
配置用户提供的嵌入器
配置 embedder
索引设置,将其源设置为 userProvided
:
将 EMBEDDER_NAME
替换为您希望为嵌入器指定的名称。将 MODEL_DIMENSIONS
替换为所选模型的维度数。
将文档添加到 Meilisearch
接下来,使用 文档端点 上传向量化后的图像。
在大多数情况下,您应该自动化此步骤,以便 Meilisearch 与您的主数据库保持同步。
设置查询向量化处理流程
由于您使用的是 userProvided
嵌入器,因此必须同时为搜索查询生成嵌入向量。该流程应与为图像生成嵌入向量的过程类似:
- 从前端接收用户查询
- 将查询发送至本地嵌入向量生成服务
- 使用返回的查询嵌入向量执行搜索
使用用户提供嵌入向量的向量搜索
获取查询向量后,将其传递至 vector
搜索参数以执行基于语义的 AI 搜索:
将 VECTORIZED_QUERY
替换为您的服务生成的嵌入向量,EMBEDDER_NAME
替换为您的嵌入器名称。
如果图像包含关联元数据,您可以通过包含原始 q
参数执行混合搜索:
总结
您已了解使用 Meilisearch 实现图像搜索的主要步骤:
- 准备将图像转换为向量的处理流程
- 使用 Meilisearch 索引向量化后的图像
- 准备将用户查询转换为向量的处理流程
- 使用转换后的查询执行搜索