配置分塊緩存
大塊快取機制讓 Milvus 能夠在需要資料之前,將資料預先載入查詢節點本機硬碟的快取記憶體。此機制可縮短將資料從磁碟載入記憶體的時間,大幅提升向量檢索效能。
背景資料
在進行查詢以擷取向量之前,Milvus 需要將資料從物件儲存區載入查詢節點本機硬碟的記憶體快取記憶體。這是一個耗時的過程。在所有資料載入之前,Milvus 可能會延遲回應某些向量檢索請求。
為了改善查詢效能,Milvus 提供了一個分塊快取機制,在需要資料之前,將資料從物件儲存預先載入本機硬碟的快取記憶體。當收到查詢請求時,Segcore 會先檢查資料是否在快取記憶體中,而不是在物件儲存空間中。如果資料在快取記憶體中,Segcore 可以快速地從快取記憶體中擷取,並將結果回傳給客戶端。
配置 Chunk Cache
本指南提供如何為Milvus實例配置chunk cache機制的說明。配置因您安裝 Milvus 實例的方式而異。
對於使用 Helm Charts 安裝的 Milvus 實例
將配置加入
values.yaml檔案的config部分。詳情請參閱使用 Helm Charts 設定 Milvus。對於使用 Docker Compose 安裝的 Milvus 實體
將配置新增到您用來啟動 Milvus 實例的
milvus.yaml檔案。如需詳細資訊,請參閱使用 Docker Compose 配置 Milvus。對於使用 Operator 安裝的 Milvus 實例
將配置新增到
Milvus自訂資源的spec.components區段。如需詳細資訊,請參閱使用 Operator 配置 Milvus。
組態選項
queryNode:
cache:
warmup: async
warmup 参数决定 Milvus 是否在需要之前将数据从对象存储预加载到查询节点本地硬盘上的缓存中。此参数默认为disable 。可能的選項如下:
async:Milvus 在后台异步预加载数据,这不会影响加载集合所需的时间。然而,在載入過程完成後的一段短時間內,使用者在擷取向量時可能會遇到延遲。 這是預設選項。sync:Milvus 會同步預先載入資料,這可能會影響載入資料集所需的時間。不過,使用者可以在載入過程完成後立即執行查詢,而不會有任何延遲。disable:Milvus 不會預先載入資料到記憶體快取。
請注意,大塊快取設定也適用於新資料插入資料集或資料集索引重建時。
常見問題
如何判斷chunk cache機制是否正常運作?
建議您在載入資料集後,檢查搜尋或查詢請求的延遲時間。如果延遲時間明顯高於預期(例如數秒),可能表示主群快取機制仍在運作。
如果查詢延遲長時間居高不下。您可以檢查物件儲存的吞吐量,以確保分塊快取機制仍在運作。在正常情況下,工作中的 chunk 快取將會在物件儲存上產生高吞吐量。或者,您可以簡單地在
sync模式下嘗試使用 chunk 快取。