AI 驅動的混合搜尋正在封閉測試中。 加入候補名單 以搶先體驗!

前往首頁Meilisearch 的標誌
返回文章
2024 年 8 月 27 日

Meilisearch 1.10

Meilisearch 1.10 引入了聯邦搜尋和語言環境設定,並為 AI 驅動的搜尋穩定性奠定了基礎。

Laurent Cazanove
Laurent CazanoveDX 工程師 & 文案撰寫員@StriftCodes
Meilisearch 1.10

今天我們宣布推出 Meilisearch v1.10。在本文中,我們將回顧最重要的變更。如需完整清單,請查看 GitHub 上的變更日誌

Meilisearch 1.10 也可在Meilisearch Cloud上使用 - 請立即升級!

新增:聯邦搜尋

我們很高興地宣布,[聯邦搜尋](/blog/what-is-federated-search/?utm_campaign=release-v1-10&utm_source=blog)終於要登陸 Meilisearch 了。此功能擴展了多重搜尋 API,讓您可以將多個查詢的結果合併為單一的統一回應。您現在可以搜尋不同的索引,並獲得整個數據集中最相關的結果,而不僅僅是每個索引最相關的結果。

對於需要在各種資源中進行搜尋的 SaaS 平台或具有多樣化產品類別的電子商務網站而言,聯邦搜尋是一項改變遊戲規則的功能。

以下是針對moviescomics索引發出聯邦搜尋請求的範例酬載

{
  "federation": {
    "offset": 5,
    "limit": 10
  },
  "queries": [
    {
      "q": "Batman",
      "indexUid": "movies"
    },
    {
      "q": "Batman",
      "indexUid": "comics"
    }
  ]
}

在此範例中,聯邦搜尋回應將如下所示

{
  "hits": [
    {
      "id": 42,
      "title": "Batman returns",
      "overview": "..",
      "_federation": {
        "indexUid": "movies",
        "queriesPosition": 0
      }
    },
    {
      "comicsId": "batman-killing-joke",
      "description": "..",
      "title": "Batman: the killing joke",
      "_federation": {
        "indexUid": "comics",
        "queriesPosition": 1
      }
    },
 ],
  "processingTimeMs": 0,
  "limit": 2,
  "offset": 0,
  "estimatedTotalHits": 2,
  "semanticHitCount": 0
}

查詢加權

聯邦搜尋不僅僅是合併結果;更是讓這些結果更有意義且相關。透過查詢加權,您可以優先處理某些查詢,確保最重要的資料排在最前面。

以下範例酬載在聯邦搜尋中使用查詢加權,以更重視 boosted 欄位為 true 的文件

{
  "federation": {},
  "queries": [
    {
      "q": "iphone case",
      "indexUid": "products",
      "filter": "BOOSTED = true",
      "federationOptions": {
        "weight": 3.0
      }
    },
    {
      "q": "iphone case",
      "indexUid": "products"
      // federationOptions.weight defaults to 1
    }
  ]
}

新增:查詢和文件的語言設定

預設情況下,Meilisearch 會自動偵測文件和查詢中使用的語言。這對於邊緣案例有一些限制。Meilisearch 1.10 引入了新的語言設定,讓使用者可以手動自訂其語言偏好設定。

有兩種方式可以說明搜尋中使用的語言

  • 設定查詢中使用的語言
  • 設定文件欄位中使用的語言

設定搜尋查詢的語言環境

您可以在搜尋參數中定義查詢中使用的語言。

使用查詢 locales 進行搜尋的範例酬載

{
   "q": "進撃の巨人",
   "locales": ["jpn"]
}

設定文件屬性的語言環境

您可以透過索引設定定義數據集中使用的語言。

具有 localizedAttributes 的設定範例酬載

{
  "localizedAttributes": [
    {
      "locales": ["jpn"], 
      "attributePatterns": ["*_japanese"]
    }
  ]
}

Meilisearch 支援所有ISO-639-2B 語言環境。

自我託管:現在需要 Ubuntu v20

如果您是自我託管 Meilisearch,請注意:Meilisearch 1.10 現在需要 Ubuntu 版本 20。此更新可確保與最新功能的相容性,並保持最佳效能和安全性。我們建議您閱讀有關如何升級您的 Ubuntu 版本的文件。

此變更不會影響Meilisearch Cloud使用者。

實驗性:AI 驅動的搜尋 DX 改善

新增:自訂標頭至 REST API 型嵌入器

Meilisearch 1.10 支援將自訂標頭傳送至您的 API 型嵌入服務。當您為嵌入器設定使用 rest 來源時,Meilisearch 現在接受選用的 headers 物件。這些標頭將新增至對嵌入器 API 發出的所有請求中。

嵌入器設定的範例酬載

{
  "source": "rest",
  "apiKey": "•••••••••••••••••",
  "headers": {
    "Custom-Header": "value"
  }
}

新增:品質改進

此外,我們還新增了一些小的變更,讓使用 Meilisearch AI 驅動的搜尋 API 更輕鬆

  • 嵌入器設定現在接受 OpenAI 嵌入器的 url 參數,以便透過 Proxy 存取 OpenAI
  • 嵌入器設定現在接受 ollama 嵌入器的 dimensions 參數
  • Meilisearch 現在在沒有向量的文件回應中包含 _vectors(僅當啟用 retrieveVectors 時)

⚠️ 突破性變更:REST API 型嵌入器的突破性變更

用於設定基於 REST API 的嵌入器(例如,OpenAI、Mistral 等)的 API 快速演進,為了避免混淆,我們已決定在專用的 requestresponse 欄位中重新組織參數。

實際上,此變更

  • 移除 queryinputFieldinputTypepathToEmbeddingsembeddingObject 欄位
  • 新增 requestresponse 欄位

請查看以下範例,以了解如何移轉至新語法。

之前 — 使用 Meilisearch 1.9

{
   "source": "rest",
   "url": "https://127.0.0.1:10006",
   "query": {
     "model": "minillm",
   },
   "inputField": ["prompt"],
   "inputType": "text",
   "embeddingObject": ["embedding"]
}

之後 — 從 Meilisearch 1.10 開始

{
   "source": "rest",
   "url": "https://127.0.0.1:10006",
   "request": {
     "model": "minillm",
     "prompt": "{{text}}"
   },
   "response": {
     "embedding": "{{embedding}}"
   }
}

升級程序

只有在您使用 REST API 型嵌入器時才需要執行此程序。若要升級至 Meilisearch 1.10,請依照下列步驟執行

  1. 移除來源為 "rest" 的嵌入器
  2. 照常更新您的Meilisearch Cloud 專案自我託管的 Meilisearch 執行個體

實驗性:CONTAINS 篩選運算子

Meilisearch 1.10 引入了 CONTAINS 運算子。由於我們正在努力解決一些效能問題,因此這仍處於實驗階段。這個新的篩選運算子允許檢查較大的字串中是否包含子字串。

假設文件為 { id: 1, name: "Keffir" },您可以使用以下篩選條件

  • name CONTAINS kef — 搜尋將比對文件
  • name CONTAINS clifford — 搜尋將不比對文件

請記住,所有篩選條件都使用小寫的標準化字串(會移除所有重音符號)。

透過此Github 討論分享您的意見回饋。

實驗性:使用函式更新文件

Meilisearch 1.10 允許您透過執行Rhai 函式來編輯文件。這讓您可以僅使用篩選條件來更新部分資料集。此外,使用函式可讓您根據文件的資料實作動態邏輯。

以下酬載會更新 id 大於 3000 的所有文件的標題

{
  "filter": "id > 3000",
  "function": "doc.title = `✨ ${doc.title.to_upper()} ✨`"
}

這也啟用更複雜的用例,例如實作衰減排名策略。根據您的需求,您可能會實作如下函式,該函式會定期由 Cron 作業執行。

{
  "context": { "now": 1715423249 },
  "function": "
    // `posted_at` and `now` are Unix Epoch timestamps in seconds
    // they must be converted to hours.
    let age_hours = (context.now - doc.posted_at) / 60 / 60;
    doc.ranking_score = doc.upvotes ** 0.8 / (age_hours + 2) ** 1.8;
  "
}

透過這個Github 討論分享您的回饋。


v1.10 版本到此結束!這些發行說明僅強調最重要的更新。如需詳盡的列表,請閱讀 Github 上的更新日誌

使用 Meilisearch Cloud 輕鬆升級。

開啟 Meilisearch Cloud


感謝貢獻者

若沒有MeilisearchCharabia 的貢獻者,這個版本不可能實現,特別感謝 @Karribalu@hanbings@junhochoi@JWSong@PeterDaveHello@LukasKalbertodt@phillitrOSU

我們也想特別感謝我們的 SDK 維護者,他們努力使 Meilisearch 能夠在許多語言和框架中使用。我們很高興 @Sherlouk@Ja7ad 加入我們的開源維護者行列。💪


訂閱我們的每月電子報,隨時掌握 Meilisearch 的最新動態。如需瞭解更多關於 Meilisearch 未來的資訊並協助塑造它,請查看我們的路線圖並參與我們的產品討論

如有其他任何問題,請加入我們在 Discord 上的開發者社群。

Meilisearch 1.12

Meilisearch 1.12

Meilisearch 1.12 帶來了顯著的索引速度提升,並引入了新的 API 來停用前綴搜尋和切面搜尋,並檢索任務批次。

Laurent Cazanove
Laurent Cazanove2024 年 12 月 23 日
Meilisearch Q4 2024 release wrap-up

Meilisearch 2024 年第四季發佈總結

Meilisearch 第四季發佈包括更快的搜尋速度、在 UI 中對設定的更多控制以及一個新的區域。

Maya Shin
Maya Shin2024 年 11 月 27 日
Meilisearch 1.11

Meilisearch 1.11

Meilisearch 1.11 透過關鍵改進(包括二元量化)將 AI 驅動的搜尋推向穩定。此版本還根據使用者回饋增強了聯合搜尋功能。

Carolina Ferreira
Carolina Ferreira2024 年 10 月 29 日