使用 AI 驱动的搜索入门 实验性

    AI 驱动的搜索,有时也称为向量搜索和混合搜索,是一种实验性技术,它使用 大型语言模型 来根据查询的含义和上下文检索搜索结果。

    本教程将指导您在 Meilisearch 项目中配置 AI 驱动的搜索。您将激活向量存储设置,使用 OpenAI 生成文档嵌入,并执行您的第一次搜索。

    要求

    创建新的索引

    创建一个名为 kitchenware 的索引,并将 此厨房用品数据集 添加到其中。如有必要,请参考快速入门指南了解如何配置基本的 Meilisearch 安装。

    首先,激活 AI 驱动的搜索实验性功能。具体操作取决于您是使用 Meilisearch 云 还是 自托管 Meilisearch

    Meilisearch 云项目

    如果使用 Meilisearch 云,请导航到您的项目概述,找到“实验性功能”。然后选中“AI 驱动的搜索”框。

    A section of the project overview interface titled "Experimental features". The image shows a few options, including "Vector store".

    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 用于生成文档嵌入的提示。

    例如,厨房用品文档有三个字段:idnameprice。如果您的 documentTemplate"一个用于厨房的物体,名为 '{{doc.name}}'",那么 Meilisearch 在索引第一个文档时发送给嵌入器的文本是 "一个用于厨房的物体,名为 '木勺'"

    为了获得最佳结果,请始终提供 documentTemplate。保持模板简洁,只包含高度相关的信息。这可确保最佳索引性能和搜索结果相关性。

    使用 qhybrid 执行 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 上加入讨论