使用 AI 驱动的搜索入门 实验性
AI 驱动的搜索,有时也称为向量搜索和混合搜索,是一种实验性技术,它使用 大型语言模型 来根据查询的含义和上下文检索搜索结果。
本教程将指导您在 Meilisearch 项目中配置 AI 驱动的搜索。您将激活向量存储设置,使用 OpenAI 生成文档嵌入,并执行您的第一次搜索。
要求
- 正在运行的 Meilisearch 项目
- 一个 OpenAI API 密钥
- 一个命令行控制台
创建新的索引
创建一个名为 kitchenware
的索引,并将 此厨房用品数据集 添加到其中。如有必要,请参考快速入门指南了解如何配置基本的 Meilisearch 安装。
激活 AI 驱动的搜索
首先,激活 AI 驱动的搜索实验性功能。具体操作取决于您是使用 Meilisearch 云 还是 自托管 Meilisearch。
Meilisearch 云项目
如果使用 Meilisearch 云,请导航到您的项目概述,找到“实验性功能”。然后选中“AI 驱动的搜索”框。
Meilisearch 云 AI 驱动的搜索等待列表
为了确保 Meilisearch 云最新 AI 驱动的搜索功能的正确扩展,您必须在激活向量搜索之前加入等待列表。在您的注册获得批准之前,您将无法在云界面或通过 /experimental-features
路由激活向量搜索。
自托管实例
使用 /experimental-features
路由 在运行时激活向量搜索
curl \
-X PATCH 'http://localhost:7700/experimental-features/' \
-H 'Content-Type: application/json' \
--data-binary '{
"vectorStore": true
}'
使用 OpenAI 生成向量嵌入
接下来,您必须为数据集中的所有文档生成向量嵌入。嵌入是表示文档中单词和句子含义的数学表示。Meilisearch 依赖外部提供商生成这些嵌入。本教程使用 OpenAI。
使用 更新 `/settings` 端点 的 embedders
索引设置来配置默认的 OpenAI 嵌入器。
curl \
-X PATCH 'http://localhost:7700/indexes/kitchenware/settings' \
-H 'Content-Type: application/json' \
--data-binary '{
"embedders": {
"default": {
"source": "openAi",
"apiKey": "OPEN_AI_API_KEY",
"model": "text-embedding-3-small",
"documentTemplate": "An object used in a kitchen named '{{doc.name}}'"
}
}
}'
将 OPEN_AI_API_KEY
替换为您 OpenAI API 密钥。您可以在本教程中使用任何密钥层级,但最好使用 Tier 2 密钥,以在生产环境中获得最佳性能。
documentTemplate
documentTemplate
描述了一个简短的 Liquid 模板。大括号 ({{
) 内的文本表示点符号表示法中的文档字段,其中 doc
指示文档本身,点号后面的字符串指示文档属性。Meilisearch 将这些括号及其内容替换为相应的字段值。
生成的文本是 OpenAI 用于生成文档嵌入的提示。
例如,厨房用品文档有三个字段:id
、name
和 price
。如果您的 documentTemplate
是 "一个用于厨房的物体,名为 '{{doc.name}}'"
,那么 Meilisearch 在索引第一个文档时发送给嵌入器的文本是 "一个用于厨房的物体,名为 '木勺'"
。
为了获得最佳结果,请始终提供 documentTemplate
。保持模板简洁,只包含高度相关的信息。这可确保最佳索引性能和搜索结果相关性。
执行 AI 驱动的搜索
使用 q
和 hybrid
执行 AI 驱动的搜索,以检索使用您在步骤前配置的默认嵌入器搜索结果。
curl \
-X POST 'http://localhost:7700/indexes/kitchenware/search' \
-H 'content-type: application/json' \
--data-binary '{
"q": "kitchen utensils made of wood",
"hybrid": {
"embedder": "default",
"semanticRatio": 0.7
}
}'
Meilisearch 将返回语义和全文本匹配的混合结果,优先匹配查询的含义和上下文。如果您希望 Meilisearch 返回更多基于查询的含义和上下文的搜索结果,请将 semanticRatio
设置为大于 0.5
的值。将 semanticRatio
设置为小于 0.5
的值将返回更多全文本匹配。
结论
您已经看到了如何使用 Meilisearch 和 OpenAI 设置和执行 AI 驱动的搜索。有关更深入的信息,请参阅嵌入器的参考和 hybrid
搜索参数。
AI 驱动的搜索是 Meilisearch 的一项实验性功能,正在积极开发中——在 GitHub 上加入讨论。