开始使用 AI 驱动的搜索 实验性
AI 驱动的搜索,有时也称为向量搜索和混合搜索,是一项实验性技术,它使用大型语言模型来根据查询的含义和上下文检索搜索结果。
本教程将引导你完成在 Meilisearch 项目中配置 AI 驱动的搜索的过程。你将激活向量存储设置,使用 OpenAI 生成文档嵌入,并执行你的首次搜索。
要求
- 一个正在运行的 Meilisearch 项目
- 一个 OpenAI API 密钥
- 一个命令行控制台
创建一个新的索引
创建一个 kitchenware
索引,并添加此厨具产品数据集。如有必要,请查阅快速入门以获取有关如何配置基本 Meilisearch 安装的说明。
激活 AI 驱动的搜索
首先,激活 AI 驱动的搜索实验性功能。具体如何操作取决于你使用的是Meilisearch Cloud 还是自托管 Meilisearch。
Meilisearch Cloud 项目
如果使用 Meilisearch Cloud,请导航至您的项目概览并找到“实验性功能”。然后选中“AI 驱动的搜索”复选框。
Meilisearch Cloud AI 驱动的搜索候补名单
为了确保 Meilisearch Cloud 最新 AI 驱动的搜索产品的适当扩展,您必须先加入候补名单,然后才能激活向量搜索。在您的注册获得批准之前,您将无法在 Cloud 界面或通过 /experimental-features
路由激活向量搜索。
自托管实例
使用/experimental-features
路由在运行时激活向量搜索
curl \
-X PATCH 'https://127.0.0.1:7700/experimental-features/' \
-H 'Content-Type: application/json' \
--data-binary '{
"vectorStore": true
}'
使用 OpenAI 生成向量嵌入
接下来,您必须为数据集中的所有文档生成向量嵌入。嵌入是文档中单词和句子含义的数学表示。Meilisearch 依赖外部提供商来生成这些嵌入。本教程使用 OpenAI 嵌入器,但 Meilisearch 也支持来自 HuggingFace、Ollama 的嵌入器,以及任何可通过 RESTful API 访问的嵌入器。
使用更新 /settings
端点的 embedders
索引设置来配置 OpenAI 嵌入器
curl \
-X PATCH 'https://127.0.0.1:7700/indexes/kitchenware/settings' \
-H 'Content-Type: application/json' \
--data-binary '{
"embedders": {
"openai": {
"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
是 "An object used in a kitchen named '{{doc.name}}'"
,则 Meilisearch 在索引第一个文档时将发送给嵌入器的文本是 "An object used in a kitchen named 'Wooden spoon'"
。
为了获得最佳结果,请务必提供 documentTemplate
。保持模板简短,并且仅包含高度相关的信息。这可确保最佳的索引性能和搜索结果相关性。
执行 AI 驱动的搜索
使用 q
和 hybrid
执行 AI 驱动的搜索,以检索使用您在上一步中配置的默认嵌入器进行的搜索结果
curl \
-X POST 'https://127.0.0.1:7700/indexes/kitchenware/search' \
-H 'content-type: application/json' \
--data-binary '{
"q": "kitchen utensils made of wood",
"hybrid": {
"embedder": "openai",
"semanticRatio": 0.7
}
}'
Meilisearch 将返回语义匹配和全文匹配的混合结果,优先考虑与查询的含义和上下文匹配的结果。如果您希望 Meilisearch 返回更多基于搜索含义和上下文的结果,请将 semanticRatio
设置为大于 0.5
的值。相反,将 semanticRatio
设置为小于 0.5
的值将返回更多全文匹配。
总结
您已经了解了如何使用 Meilisearch 和 OpenAI 设置和执行 AI 驱动的搜索。有关更深入的信息,请参阅嵌入器和 hybrid
搜索参数的参考。
AI 驱动的搜索是 Meilisearch 的一项实验性功能,并且正在积极开发中 - 加入 GitHub 上的讨论。