简介

本指南将引导您完成配置 Meilisearch 与 Cloudflare Worker AI 嵌入功能的过程,以实现语义搜索能力。通过结合 Meilisearch 的 AI 功能和 Cloudflare Worker AI 的嵌入 API,您可以提升搜索体验并获得更相关的结果。

前提条件

要完成本指南,您需要:

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

配置 Meilisearch

要在 Meilisearch 中设置嵌入器(embedder),您需要根据您的需求进行配置。您可以参考 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 访问任务队列。

测试语义搜索

配置好嵌入器(embedder)后,您现在可以使用Meilisearch执行语义搜索。当您发送搜索查询时,Meilisearch会使用配置的嵌入器为查询生成嵌入向量(embedding),然后在向量存储中查找语义最相似的文档。

要执行语义搜索,您只需发起一个普通的搜索请求,但需要包含hybrid参数:

{
  "q": "<用户输入的查询>",
  "hybrid": {
    "semanticRatio": 1,
    "embedder": "cloudflare"
  }
}

在这个请求中:

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

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

总结

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

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