简介

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

要求

要遵循本指南,您需要

  • 一个运行版本 >=1.13 的 Meilisearch Cloud 项目
  • 一个拥有 Worker AI 访问权限和 API 密钥的 Cloudflare 账户。您可以在 Cloudflare 注册 Cloudflare 账户。
  • 您的 Cloudflare 账户 ID

设置 Meilisearch

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

Cloudflare Worker AI 提供以下嵌入模型

  • baai/bge-base-en-v1.5:768 维度
  • baai/bge-large-en-v1.5:1024 维度
  • baai/bge-small-en-v1.5:384 维度

以下是 Cloudflare Worker AI 嵌入器设置的示例

{
  "cloudflare": {
    "source": "rest",
    "apiKey": "<API Key>",
    "dimensions": 384,
    "documentTemplate": "<Custom template (Optional, but recommended)>",
    "url": "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai/run/@cf/<Model>",
    "request": {
      "text": ["{{text}}", "{{..}}"]
    },
    "response": {
      "result": {
        "data": ["{{embedding}}", "{{..}}"]
      }
    }
  }
}

在此配置中

  • source:指定嵌入器的来源,设置为“rest”表示使用 REST API。
  • apiKey:将 <API Key> 替换为您的实际 Cloudflare API 密钥。
  • dimensions:指定嵌入的维度。对于 baai/bge-small-en-v1.5 设置为 384,对于 baai/bge-base-en-v1.5 设置为 768,或者对于 baai/bge-large-en-v1.5 设置为 1024。
  • documentTemplate:您可以选择提供一个自定义模板,用于从您的文档生成嵌入。
  • url:指定 Cloudflare Worker AI API 端点的 URL。
  • request:定义 Cloudflare Worker AI API 的请求结构,包括输入参数。
  • response:定义 Cloudflare Worker AI API 的预期响应结构,包括嵌入数据。

在配置中设置 url 字段时请务必小心。URL 包含您的 Cloudflare 账户 ID (<ACCOUNT_ID>) 和您想要使用的特定模型 (<Model>)。请确保将这些占位符替换为您的实际账户 ID 和所需的模型名称(例如,baai/bge-small-en-v1.5)。

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

请注意,Cloudflare 可能有速率限制,这由 Meilisearch 管理。如果您是免费账户,索引过程可能需要一些时间,但 Meilisearch 将通过重试策略来处理。

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

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

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

在此请求中

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

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

结论

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

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