AI 驱动的搜索,有时也称为向量搜索或混合搜索,使用大型语言模型 (LLM) 根据查询的含义和上下文检索搜索结果。 本教程将引导您在 Meilisearch 项目中配置 AI 驱动的搜索。您将了解如何使用 OpenAI 设置嵌入器、生成文档嵌入并执行您的首次搜索。

要求

  • 一个正在运行的 Meilisearch 项目
  • 一个 OpenAI API 密钥
  • 一个命令行控制台

创建新索引

首先,创建一个新的 Meilisearch 项目。如果您是首次使用 Meilisearch,请按照快速入门,然后返回本教程。 接下来,创建一个 kitchenware 索引并将此厨具产品数据集添加进去。Meilisearch 处理您的请求需要一些时间,但在数据索引时您可以继续下一步。

使用 OpenAI 生成嵌入

在此步骤中,您将配置一个 OpenAI 嵌入器。Meilisearch 使用嵌入器将文档转换为嵌入,嵌入是文档含义和上下文的数学表示。 在文本编辑器中打开一个空白文件。您将只使用此文件逐步构建嵌入器,因此如果您打算一次完成本教程,则无需保存它。

选择嵌入器名称

在您的空白文件中,创建您的 embedder 对象
{
  "products-openai": {}
}
products-openai 是本教程中您的嵌入器名称。您可以随意命名嵌入器,但尽量保持简单、简短且易于记忆。

选择嵌入器源

Meilisearch 依赖第三方服务来生成嵌入。这些服务通常被称为嵌入器源。 为您的嵌入器对象添加一个新的 source 字段:
{
  "products-openai": {
    "source": "openAi"
  }
}
Meilisearch 支持多种嵌入器源。本教程使用 OpenAI,因为它是一个适合大多数用例的不错选择。

选择嵌入器模型

模型提供嵌入器处理文档所需的信息。 为您的嵌入器对象添加一个新的 model 字段:
{
  "products-openai": {
    "source": "openAi",
    "model": "text-embedding-3-small"
  }
}
每个嵌入器服务都支持针对特定用例的不同模型。text-embedding-3-small 是一种用于一般用途的经济高效的模型。

创建您的 API 密钥

登录 OpenAI,如果您是首次使用,请创建一个帐户。使用OpenAI 的 Web 界面生成一个新的 API 密钥。 apiKey 字段添加到您的嵌入器:
{
  "products-openai": {
    "source": "openAi",
    "model": "text-embedding-3-small",
    "apiKey": "OPEN_AI_API_KEY",
  }
}
OPEN_AI_API_KEY 替换为您自己的 API 密钥。
本教程可以使用任何密钥层级。在生产环境中至少使用Tier 2 密钥

设计提示模板

Meilisearch 嵌入器只接受文本输入,但文档可以是包含不同类型数据的复杂对象。这意味着您必须将文档转换为单个文本字段。Meilisearch 使用 Liquid,一种开源模板语言来帮助您完成此操作。 一个好的模板应该简短,并且只包含文档最重要的信息。将以下 documentTemplate 添加到您的嵌入器:
{
  "products-openai": {
    "source": "openAi",
    "model": "text-embedding-3-small",
    "apiKey": "OPEN_AI_API_KEY",
    "documentTemplate": "An object used in a kitchen named '{{doc.name}}'"
  }
}
此模板首先给出文档的通用上下文:一个用于厨房的物品。然后添加每个文档特有的信息:doc 代表您的文档,您可以使用点表示法访问其任何属性。name 是一个属性,其值如 wooden spoonrolling pin。由于它存在于此数据集中的所有文档中,并用几个词描述了产品,因此是包含在模板中的一个好选择。

创建嵌入器

您的嵌入器对象已准备就绪。通过更新索引设置将其发送到 Meilisearch
curl \
  -X PATCH 'MEILISEARCH_URL/indexes/kitchenware/settings/embedders' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "products-openai": {
      "source": "openAi",
      "apiKey": "OPEN_AI_API_KEY",
      "model": "text-embedding-3-small",
      "documentTemplate": "An object used in a kitchen named '{{doc.name}}'"
    }
  }'
MEILISEARCH_URL 替换为您的 Meilisearch 项目地址,并将 OPEN_AI_API_KEY 替换为您的 OpenAI API 密钥 Meilisearch 和 OpenAI 将开始处理您的文档并更新您的索引。这可能需要一些时间,但一旦完成,您就可以执行 AI 驱动的搜索了。 AI 驱动的搜索与基本文本搜索非常相似。您必须使用包含 qhybrid 参数的请求查询 /search 端点
curl \
  -X POST 'MEILISEARCH_URL/indexes/kitchenware/search' \
  -H 'content-type: application/json' \
  --data-binary '{
    "q": "kitchen utensils made of wood",
    "hybrid": {
      "embedder": "products-openai"
    }
  }'
在本教程中,hybrid 是一个包含单个 embedder 字段的对象。 Meilisearch 将返回语义匹配和全文匹配的等量混合结果。

结论

恭喜!您已创建一个索引,向其中添加了一个小型数据集,并激活了 AI 驱动的搜索。然后您使用 OpenAI 从您的文档生成嵌入,并执行了您的首次 AI 驱动的搜索。

下一步

现在您已基本了解设置和执行 AI 驱动的搜索所需的基本步骤,您可能希望尝试在自己的应用程序中实现此功能。 有关使用其他服务实现 AI 驱动搜索的实用信息,请查阅我们的指南部分。在那里您将找到针对 LangChainCloudflare 等嵌入器的具体说明。 有关更深入的信息,请查阅嵌入器设置hybrid 搜索参数的 API 参考。
© . This site is unofficial and not affiliated with Meilisearch.