AI 驱动的搜索入门
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 密钥。
OpenAI 密钥层级
您可以为本教程使用任何密钥层级。在生产环境中使用至少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 spoon
或 rolling 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 驱动的搜索
AI 驱动的搜索与基本文本搜索非常相似。您必须使用包含 q
和 hybrid
参数的请求查询 /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 驱动的搜索的实用信息,请查阅我们的指南部分。 在那里,您将找到针对嵌入器的具体说明,例如 LangChain 和 Cloudflare。
有关更深入的信息,请查阅 嵌入器设置 和 hybrid
搜索参数的 API 参考。