简介

本指南将引导您完成使用 OpenAI embeddings 设置 Meilisearch 以实现语义搜索功能的过程。通过结合 Meilisearch 的 AI 功能和 OpenAI 的 embedding API,您可以提升搜索体验并获取更相关的结果。

需求

要完成本指南,您需要:

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

配置 Meilisearch

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

测试语义搜索

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

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

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

在这个请求中:

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

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

结论

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

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