使用 XATTR 進行向量儲存和搜尋來提高效能

隨著向量搜尋的引入,用戶現在可以在文件中儲存大型向量數組(通常由看似任意的數字組成)。由於大多數標準查詢不需要這些數據,因此使用者現在可以利用擴充屬性 (XATTR)(文件元資料的一部分)來儲存向量和其他大量內容。透過這樣做,可以將大量資料排除在主查詢路徑之外,從而提高效能。這篇文章將解釋什麼是 XATTR,強調它們的優點,並示範如何在搜尋中使用它們。

XATTR 在哪裡?
XATTR 是文件的元數據,使用者可以修改或更改而無需更改文檔內容。這允許將文件分為兩部分。需要文件的服務將從鍵值儲存 (KV) 取得它們,僅在需要時取得 XATTR 內容。

讓我們舉一個例子,用戶嘗試索引酒店數據,其文檔結構如下所示:

「空缺」:真實,

「免費早餐」:正確,
“free_internet”:假,
「免費停車」:正確
}
此文件結構包括酒店的所有必需字段,以及用於查找具有相似描 土耳其 電話號碼庫 述的酒店的向量化描述。描述向量(第 25 行)是一個 110 維向量,佔用約 1400 位元組,而文件的其餘部分大小約為 1400 位元組。

在常規用例中,當使用者使用 SQL++ 執行不帶覆蓋索引的非向量查詢時,將取得整個文件。這意味著即使不需要接近文件大小一半的向量,它仍然會與文件的其餘部分一起檢索,最終浪費資源。

讓我們想像一種情況,使用者不使用 XATTR,並且擁有文件內容中的全部數據,但 XATTR 中沒有任何數據。任何嘗試取得文件的服務(例如查詢和搜尋)都必須處理所有文件內容才能獲得所需內容。

電話號碼庫

建立此文件的更好方法是將向量儲存為 XATTR 的一部分。這意味著尋找非向量資料的服務將僅遍歷非 XATTR 文件內容,從而將傳輸的資料量減少一半。

使用者甚至可以將其他很少使用的欄位(例如地理資訊、聯絡 如何修復 Fitbit 無法同步錯誤 資訊等)添加到 XATTR 中,從而將這一點發揮到極致。這進一步減少了傳輸的不必要的資料量。

如何為 Couchbase XATTR 建立索引

從 Couchbase Server 7.6.2 開始,搜尋服務使用戶能夠僅在索引建立過程中索引映射需要時提取 XATTR 中存在的資料。如果 XATTR 資料不相關且索引定義中不存在 XATTR 映射,則使用者可以期望更快的資料擷 喀麥隆數據 取和索引速率,因為從資料服務中取得的負載會更輕。

讓我們假設使用者建立了一個索引 XATTR 內容的索引。索引定義看起來像這樣,XATTR 在第 10-27 行建立索引:

 

返回頂端