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

今天我們宣布推出 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 平台或具有多樣化產品類別的電子商務網站而言,聯邦搜尋是一項改變遊戲規則的功能。
以下是針對movies
和comics
索引發出聯邦搜尋請求的範例酬載
{ "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 快速演進,為了避免混淆,我們已決定在專用的 request
和 response
欄位中重新組織參數。
實際上,此變更
- 移除
query
、inputField
、inputType
、pathToEmbeddings
和embeddingObject
欄位 - 新增
request
和response
欄位
請查看以下範例,以了解如何移轉至新語法。
之前 — 使用 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,請依照下列步驟執行
- 移除來源為
"rest"
的嵌入器 - 照常更新您的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 和 Charabia 的貢獻者,這個版本不可能實現,特別感謝 @Karribalu、@hanbings、@junhochoi、@JWSong、@PeterDaveHello、@LukasKalbertodt 和 @phillitrOSU。
我們也想特別感謝我們的 SDK 維護者,他們努力使 Meilisearch 能夠在許多語言和框架中使用。我們很高興 @Sherlouk 和 @Ja7ad 加入我們的開源維護者行列。💪
訂閱我們的每月電子報,隨時掌握 Meilisearch 的最新動態。如需瞭解更多關於 Meilisearch 未來的資訊並協助塑造它,請查看我們的路線圖並參與我們的產品討論。
如有其他任何問題,請加入我們在 Discord 上的開發者社群。