简介

本指南将引导您完成使用 OpenAI 嵌入设置 Meilisearch 的过程,以实现语义搜索功能。通过利用 Meilisearch 的 AI 功能和 OpenAI 的嵌入 API,您可以增强搜索体验并检索到更相关的结果。

要求

要遵循本指南,您需要

  • 一个运行版本 >=1.13 的 Meilisearch Cloud 项目
  • 一个拥有用于生成嵌入的 API 密钥的 OpenAI 账户。您可以在 OpenAI 注册一个 OpenAI 账户。
  • 无需后端。

设置 Meilisearch

要在 Meilisearch 中设置嵌入器,您需要根据您的设置进行配置。您可以参考Meilisearch 文档了解有关更新嵌入器设置的更多详细信息。

OpenAI 提供三种主要嵌入模型

  • text-embedding-3-large: 3,072 维度
  • text-embedding-3-small: 1,536 维度
  • text-embedding-ada-002: 1,536 维度

以下是 OpenAI 嵌入器设置示例

{
  "openai": {
    "source": "openAi",
    "apiKey": "<OpenAI API Key>",
    "dimensions": 1536,
    "documentTemplate": "<Custom template (Optional, but recommended)>",
    "model": "text-embedding-3-small"
  }
}

在此配置中

  • source: 指定嵌入器的来源,设置为“openAi”表示使用 OpenAI 的 API。
  • apiKey: 将 <OpenAI API Key> 替换为您实际的 OpenAI API 密钥。
  • dimensions: 指定嵌入的维度。对于 text-embedding-3-smalltext-embedding-ada-002,设置为 1536;对于 text-embedding-3-large,设置为 3072。
  • documentTemplate: 您可以选择提供一个自定义模板,用于从您的文档生成嵌入。
  • model: 指定用于生成嵌入的 OpenAI 模型。从 text-embedding-3-largetext-embedding-3-smalltext-embedding-ada-002 中选择。

配置好嵌入器设置后,Meilisearch 将自动为您的文档生成嵌入并将其存储在向量存储中。

请注意,OpenAI 有速率限制,Meilisearch 会进行管理。如果您使用的是免费账户,索引过程可能需要一些时间,但 Meilisearch 将采用重试策略来处理。

建议您监控任务队列以确保一切顺利运行。您可以使用 Cloud UI 或 Meilisearch API 访问任务队列

设置好嵌入器后,您现在可以使用 Meilisearch 执行语义搜索。当您发送搜索查询时,Meilisearch 将使用配置好的嵌入器为该查询生成嵌入,然后使用它在向量存储中查找语义上最相似的文档。要执行语义搜索,您只需发出一个普通搜索请求,但要包含 hybrid 参数

{
  "q": "<Query made by the user>",
  "hybrid": {
    "semanticRatio": 1,
    "embedder": "openai"
  }
}

在此请求中

  • q: 表示用户的搜索查询。
  • hybrid: 指定混合搜索的配置。
    • semanticRatio: 允许您控制语义搜索和传统搜索之间的平衡。值为 1 表示纯语义搜索,而值为 0 表示全文搜索。您可以调整此参数以实现混合搜索体验。
    • embedder: 用于生成嵌入的嵌入器名称。请确保使用嵌入器配置中指定的相同名称,在此示例中为“openai”。

您可以使用 Meilisearch API 或客户端库执行搜索,并根据语义相似性检索相关文档。

结论

通过遵循本指南,您现在应该已经使用 OpenAI 嵌入设置了 Meilisearch,使您能够在应用程序中利用语义搜索功能。Meilisearch 的自动批处理和高效处理嵌入功能使其成为将语义搜索集成到项目中的强大选择。

要探索嵌入器的更多配置选项,请查阅关于嵌入器设置可能性的详细文档