索引最佳實踐

    在本指南中,您將找到一些最佳實踐,以有效地索引您的數據並加快索引過程。

    定義可搜尋屬性

    檢查您的可搜尋屬性列表,並確保它僅包含您希望檢查查詢字詞匹配的欄位。這可以通過從您的數據庫中刪除不相關的數據來提高關聯性和搜尋速度。它還會將您的磁碟使用量保持在必要的最低限度。

    預設情況下,所有文件欄位都是可搜尋的。Meilisearch 需要索引的欄位越少,索引過程就越快。

    檢查可篩選和可排序屬性

    某些文件欄位對於篩選排序結果是必要的,但它們不需要是可搜尋的。一般來說,數值和布林值欄位屬於此類。請務必檢查您的可搜尋屬性列表,並刪除任何僅用於篩選或排序的欄位。

    在添加文件之前配置您的索引

    建立新索引時,請先設定其設定,然後再加入您的文件。每當您更新諸如排名規則等設定時,Meilisearch 都會觸發所有文件的重新索引。這可能是一個耗時的過程,特別是當您擁有大型資料集時。因此,最好在索引您的資料之前定義排名規則和其他設定。

    最佳化文件大小

    較小的文件處理速度更快,因此請務必從您的文件中刪除任何不必要的資料。當文件欄位未在可搜尋可篩選可排序顯示屬性的列表中時,最好將其從文件中刪除。為了更進一步,請考慮使用 brdeflategzip 等方法壓縮您的資料。請參閱支援的編碼格式參考

    偏好較大的 HTTP 酬載

    單一較大的 HTTP 酬載的處理速度比多個較小的酬載快。例如,以兩個 50,000 個文件批次加入相同的 100,000 個文件會比以四個 25,000 個文件批次加入它們更快。預設情況下,Meilisearch 會將最大酬載大小設定為 100MB,但如果需要,您可以變更此值

    警告

    較大的酬載會消耗更多 RAM。如果執行個體需要的記憶體超過機器目前可用的記憶體,則可能會崩潰。

    保持 Meilisearch 為最新版本

    請務必將您的 Meilisearch 執行個體保持在最新版本,以從最新的改進中獲益。您可以在 GitHub 上看到我們所有引擎版本的列表

    注意

    如需更多關於索引在底層如何運作的資訊,請查看這篇關於索引最佳實務的部落格文章

    請勿將 Meilisearch 用作您的主要資料庫

    Meilisearch 針對資訊檢索進行了最佳化,並非設計為您的主要資料容器。您加入的文件越多,索引和搜尋所需的時間就越長。僅索引您在搜尋時想要檢索的文件。

    為多種語言建立單獨的索引

    如果您有多語言資料集,請為每種語言建立單獨的索引。

    移除 I/O 操作限制

    請確保您的機器上沒有 I/O 操作的限制。雲端供應商(例如AWS 的 Amazon EBS 服務)施加的限制可能會嚴重影響索引效能。

    考慮升級到配備 SSD、更多 RAM 和多執行緒處理器的機器

    如果您已遵循本指南中的先前提示,但仍然遇到索引時間過慢的問題,請考慮升級您的機器。

    索引是一個記憶體密集型且多執行緒的操作。可用的記憶體和處理器核心越多,Meilisearch 索引新文件的速度就越快。當試圖提高索引速度時,使用具有更多處理器核心的機器比增加 RAM 更有效。

    由於 Meilisearch 的運作方式,最好避免使用 HDD (硬碟機),因為它們很容易成為效能瓶頸。

    如果您在為 AI 驅動的搜尋索引文件時遇到效能問題,請考慮為您的嵌入器啟用二進位量化。二進位量化會透過使用 1 位元值表示每個維度來壓縮向量。這會降低語意搜尋結果的相關性,但會大幅提高效能。

    二進位量化最適合用於包含超過 100 萬個文件且使用超過 1400 個維度的模型的大型資料集。

    二進位量化是不可逆的過程

    啟用二進位量化是不可逆的。 啟用後,Meilisearch 會轉換所有向量並捨棄所有不符合 1 位元的向量資料。恢復向量原始值的唯一方法是在新的嵌入器中重新向量化整個索引。