AlloyDB Omni ScaNN 索引參考資料

本頁面詳細說明 AlloyDB Omni 中,可擴充的最近鄰 (ScaNN) 索引可用的調整參數。

如需從頭到尾實作向量搜尋的逐步教學課程,請參閱「執行向量搜尋」指南。

調整參數

下列索引和查詢參數可用來找出合適的召回率和每秒查詢次數 (QPS) 平衡點。

調整參數 說明 選項類型
mode 將 ScaNN 索引定義為自動調整或手動調整的索引。可用的選項如下:
  • AUTO:自動調整的索引
  • MANUAL:手動調整的索引

詳情請參閱「建立 ScaNN 索引」。

建立索引

(選填)

max_num_levels K-means 分群樹狀結構的群集中心層級數量上限。如需設定這個值的指南,請參閱「調整 ScaNN 索引」。

可用的值如下:

  • 1:兩層 ScaNN 索引
  • 2:三層 ScaNN 索引
  • 3:四層 ScaNN 索引 (預先發布版)

如果將 max_num_levels 設為 3,則必須一併將 scann.max_allowed_num_levels 設為 3。詳情請參閱「調整 ScaNN 索引的最佳做法」。

建立索引

(選填)

num_leaves 要套用至這個索引的分區數量。最大值為 30000000。如要進一步瞭解如何選擇這個值,請參閱「調整 ScaNN 索引」和「調整 ScaNN 索引的最佳做法」。

建立索引

(手動調整的索引必須提供這項資訊)

quantizer 要用於 K-means 樹狀結構的量化器類型。預設值設為 SQ8,可提供更佳的查詢效能,且喚回度損失極低 (通常低於 1% 至 2%)。

如果需要 99% 以上的喚回度,請設為 FLAT。
建立索引
(選用)
scann.enable_pca 啟用主成分分析 (PCA),這是一種維度縮減技術,可盡可能自動縮減嵌入的大小。這個選項預設為啟用。

如果發現喚回度下降,請設為 false。
建立索引
(選用)
auto_maintenance 自動維護 ScaNN 索引,以便在資料集增加時,讓 AlloyDB Omni 分析及更新群集中心,並分割大型離群值分區。這會自動改善 QPS 和搜尋結果。詳情請參閱「自動維護索引」。

建立索引

(選填)

自動管理向量索引搜尋的分區數量。詳情請參閱「搜尋分區百分比」。

要搜尋的分區絕對數量。這樣您就能在查詢召回率和 QPS 之間取捨。預設值為 num_leaves 的 1%。

值越高,查詢喚回度越高,但 QPS 越低。同樣地,值越低,查詢喚回率越差,但 QPS 越好。

查詢執行階段

(選填)

scann.pre_reordering_num_neighbors

初始搜尋識別出一組候選項目後,指定要在重新排序階段考慮的候選鄰點數量。將這個參數設為大於查詢要傳回的鄰居數。值越高,喚回率就越好,但 QPS 會降低。

預設值為 0,表示停用重新排序功能。如果在建立索引時啟用 PCA,預設值為 50 x K,其中 K 是查詢中指定的 LIMIT。

查詢執行階段

(選填)

scann.num_search_threads 多執行緒搜尋的搜尋器執行緒數量。在對延遲時間要求嚴格的應用程式中,使用多個執行緒進行 ScaNN ANN 搜尋,有助於縮短單一查詢的延遲時間。如果資料庫已受 CPU 限制,這項設定不會改善單一查詢延遲時間。預設值為 2。 查詢執行階段
(選用)

scann.satisfy_limit (預先發布版)

設為 relaxed_order 時,資料庫旗標會解決檢索率不足的問題。如果查詢的觀察召回率低於目標召回率,就可能發生召回率不足的情況,使用篩選器時更容易發生這種情況。這項設定可讓向量掃描持續搜尋,直到找到足夠的結果,不受 num_leaves_to_search 限制,有助於達到目標喚回度。 查詢執行階段
(選用)
這個資料庫旗標會設定上限,限制在啟用 scann.satisfy_limit 的情況下執行查詢時,可造訪的葉節點總數百分比。這是唯一可用的 GUC 上限,適用於自動和手動搜尋模式。這可防止搜尋超出範圍,以免效能大幅降低。這項設定適用於 scann.satisfy_limit 啟用時。
你可以將這項參數設為 0 到 100 之間的任何值。預設值為 15%。這個預設值的依據是,如果搜尋需要檢查超過 15% 的葉節點,篩選器可能就夠精確,近似最鄰近搜尋 (ANN) 不會帶來好處,因此預先篩選 K 近鄰 (KNN) 會是更合適的選擇。
查詢執行階段
(選用)

後續步驟