開始使用 AI 驅動的搜尋 實驗性

    AI 驅動的搜尋,有時也稱為向量搜尋和混合搜尋,是一種實驗性技術,它使用大型語言模型,根據查詢的含義和上下文檢索搜尋結果。

    本教學將引導您在 Meilisearch 專案中設定 AI 驅動的搜尋。您將啟用向量儲存設定,使用 OpenAI 產生文件嵌入,並執行您的第一次搜尋。

    要求

    建立新的索引

    建立一個 kitchenware 索引,並將 這個廚房用品資料集 加入其中。如有必要,請參閱快速入門,了解如何設定基本的 Meilisearch 安裝。

    首先,啟用 AI 驅動搜尋的實驗性功能。具體做法取決於您使用的是 Meilisearch Cloud 還是 自行託管的 Meilisearch 實例

    Meilisearch Cloud 專案

    如果使用 Meilisearch Cloud,請導覽至您的專案概觀,找到「實驗性功能」。然後勾選「AI 驅動搜尋」方塊。

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

    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 用來產生文件嵌入的提示。

    例如,廚房用品文件有三個欄位:idnameprice。如果您的 documentTemplate"一個在廚房中使用的物品,名為 '{{doc.name}}'",則 Meilisearch 在為第一個文件建立索引時傳送給嵌入器的文字是 "一個在廚房中使用的物品,名為 '木製湯匙'"

    為了獲得最佳結果,請務必提供 documentTemplate。保持您的範本簡短,並且僅包含高度相關的資訊。這可確保最佳的索引效能和搜尋結果相關性。

    使用 qhybrid 執行 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 上的討論