Meilisearch,一個設計用於與應用程式和網站無縫整合的閃電般快速的搜尋引擎,最近因其混合搜尋功能而受到關注。隨著搜尋引擎市場不斷發展並引入人工智慧驅動的功能,開發者們正在分享他們在生產環境中使用 Meilisearch 的經驗,並將其與 Typesense、Elasticsearch 以及新興解決方案如 Orama 進行比較。
生產就緒性和效能
自 1.0 版本以來,Meilisearch 已經做好了生產準備,一些開發者報告了成功處理數百萬文件的實施案例。一位使用者提到為 700 萬篇文章的語料庫部署了該系統並取得了良好效果,另一位使用者則指出在每月 8 歐元的 Hetzner 例項上輕鬆設定並處理了一百萬條記錄。然而,關於高可用性選項的問題仍然存在,一些使用者指出,執行多個同步例項似乎是實現冗餘的唯一解決方案。
該搜尋引擎的記憶體使用引發了討論,一些使用者觀察到即使是小型例項也有較高的記憶體消耗(3GB+)。Meilisearch 團隊成員對此行為進行了說明:
「實際上,Meilisearch 是有意設計為使用可用的 RAM,因為它在底層使用 LMDB(記憶體對映)進行鍵值儲存。這是一個特性,而不是缺陷。這樣做的好處是由作業系統來決定為哪個程序分配記憶體。」
這種設計選擇意味著 Meilisearch 利用可用的系統記憶體來提高效能,但依賴作業系統在程序之間管理記憶體分配。
混合搜尋實現
討論的一個重要話題圍繞著 Meilisearch 的混合搜尋方法,該方法結合了傳統的全文搜尋和語義(基於向量)搜尋。這種實現方式與競爭對手如 Typesense 不同,後者使用互惠排名融合(RRF)來合併結果。
對話揭示了不同混合搜尋方法之間的緊張關係,一位評論者(後來被確認為 Meilisearch 團隊成員)批評 Typesense 的融合搜尋方法基本上毫無用處,因為你總會有一種或另一種搜尋策略會給你帶來糟糕的結果。這引發了 Typesense 代表的回應,他為其方法辯護,稱其有良好的研究基礎並記錄在學術論文中。
對於考慮實施混合搜尋的開發者,一位評論者建議:一件總是需要深入研究的事情是你的混合搜尋解決方案如何過濾向量搜尋索引。這完全沒有標準化,常常被忽視,但當你想要'透過嵌入與查詢最相似的前 X 個結果,但也在 Y 類別/匹配 Z 搜尋詞'時,這是你的混合搜尋正在做的核心事情。
Meilisearch 核心功能:
- 結合語義與全文搜尋的混合搜尋
- 即時搜尋(結果響應時間小於50毫秒)
- 拼寫錯誤容忍
- 過濾和分面搜尋
- 排序功能
- 同義詞支援
- 地理位置搜尋功能
- 多語言支援
- 透過 API 金鑰進行安全管理
- 多租戶支援
- RESTful API 及外掛和 SDK
- 透過 langchain 整合實現 AI 就緒
索引速度和文件更新
幾位使用者強調了在處理頻繁變化的文件時 Meilisearch 面臨的挑戰。一位使用者指出,當文件經常變化且搜尋結果需要快速反映這些變化時,最終會有數小時的待處理任務。然而,對於靜態或很少變化的內容,Meilisearch 因其效能和易於設定而受到讚揚。
Meilisearch 團隊指出了他們最新版本(v1.12)中的改進,其中包括一個新的索引器版本,該版本更快,大量利用並行處理,並減少磁碟寫入。他們還強調了他們的磁碟優先方法,即內容被寫入磁碟而不是主要儲存在記憶體中,允許即時重啟和更容易升級而無需重新索引。
Meilisearch替代方案:
- Typesense - 以高可用性選項著稱
- Elasticsearch - 傳統企業解決方案
- Quickwit - 基於Tantivy(被Datadog收購)
- ParadeDB - 整合Postgres的搜尋解決方案
- Orama - 輕量級(<2KB)瀏覽器/伺服器/邊緣計算解決方案
- Vespa - 因混合搜尋功能而被提及
替代解決方案
討論揭示了開發者正在考慮的幾種 Meilisearch 替代方案。Typesense 經常被提及,特別是在高可用性場景中。其他人指出了基於 Tantivy 的解決方案,如 Quickwit 和 ParadeDB,儘管有人對 Quickwit 被 Datadog 收購後的未來表示擔憂。一個較新的參與者 Orama 因其緊湊的大小(不到 2KB)和對全文、向量和混合搜尋的支援而受到關注,它可以在瀏覽器、伺服器或邊緣網路中執行。
對於那些尋求將全文搜尋與向量嵌入結合的人,建議包括 Elasticsearch、Vespa 和 Typesense,儘管關於實現質量和易用性的意見各不相同。
隨著搜尋技術繼續隨著人工智慧功能的發展而演進,Meilisearch 在保持向後相容性的同時改進效能的方法使其成為這一領域的競爭者,儘管開發者在選擇搜尋解決方案時應該仔細考慮他們對文件更新頻率、記憶體使用和高可用性的特定需求。
參考:Meilisearch: AI-powered search in GA
![]() |
---|
一個時尚的電影搜尋應用介面,展示了各種搜尋技術(如 Meilisearch)如何幫助使用者高效獲取相關內容 |