如需逐步教學課程,瞭解如何從頭到尾實作向量搜尋,請參閱執行向量搜尋指南。
調整參數
下列索引和查詢參數可用來找出叫出率和每秒查詢次數 (QPS) 的最佳平衡點。
| 調整參數 | 說明 | 選項類型 |
|---|---|---|
mode |
將 ScaNN 索引定義為自動調整或手動調整的索引。可用的選項如下:
詳情請參閱「建立 ScaNN 索引」。 |
建立索引 (選填) |
max_num_levels |
K-means 分群樹狀結構的群集中心層級數量上限。如需設定這個值的指南,請參閱「調整 ScaNN 索引」。 可用的值如下:
如果將 |
建立索引 (選填) |
num_leaves |
要套用至這個索引的分區數量。最大值為 30000000。如要進一步瞭解如何選擇這個值,請參閱「調整 ScaNN 索引」和「調整 ScaNN 索引的最佳做法」。 |
建立索引 (手動調整索引的必要項目) |
quantizer |
您想用於 K 平均值樹狀結構的量化器類型。預設值為 SQ8,可提供更優異的查詢效能,且喚回率損失極小 (通常低於 1-2%)。如需 99% 以上的喚回率,請設為 FLAT。 |
建立索引 (選用) |
scann.enable_pca |
啟用主成分分析 (PCA),這是一種維度縮減技術,可盡可能自動縮減嵌入的大小。這個選項預設為啟用。 如果發現召回率下降,請設為 false。 |
建立索引 (選用) |
auto_maintenance |
自動維護 ScaNN 索引,因此隨著資料集擴大,AlloyDB Omni 會分析及更新質心,並分割大型離群值分區。這會自動改善 QPS 和搜尋結果。詳情請參閱「自動維護索引」。 |
建立索引 (選填) |
scann.pct_leaves_to_search |
自動管理向量索引搜尋的分區數量。詳情請參閱「搜尋分區百分比」。 | |
scann.num_leaves_to_search
|
要搜尋的分區絕對數量。這樣您就能在查詢召回率和 QPS 之間取捨。預設值為 值越高,查詢喚回率就越高,但 QPS 會降低。同樣地,較低的值會導致查詢喚回度降低,但 QPS 較高。 |
查詢執行階段 (選填) |
scann.pre_reordering_num_neighbors
|
指定初始搜尋找出候選項目後,在重新排序階段要考量的候選鄰點數量。請將這個參數設為高於查詢傳回的鄰近項目數量。值越高,喚回率就越好,但 QPS 會降低。
預設值為 |
查詢執行階段 (選填) |
scann.num_search_threads |
多執行緒搜尋的搜尋者執行緒數量。在對延遲時間敏感的應用程式中,這項功能可使用多個執行緒進行 ScaNN ANN 搜尋,縮短單一查詢的延遲時間。如果資料庫已受 CPU 限制,這項設定不會改善單一查詢延遲時間。預設值為 2。 |
查詢執行階段 (選用) |
|
設為 relaxed_order 時,資料庫旗標會解決召回率不足的問題。如果查詢的觀察檢索率低於目標檢索率,就可能發生檢索率不足的情況,使用篩選器時更可能發生這種情況。這項設定可讓向量掃描持續搜尋,直到找到足夠的結果,不受 num_leaves_to_search 限制,有助於達到目標喚回度。 |
查詢執行階段 (選用) |
|
這個資料庫旗標會設定上限,限制在啟用 scann.satisfy_limit 的情況下執行查詢時,可造訪的葉節點總數百分比。這是唯一可用的 GUC 上限,適用於自動和手動搜尋模式。這項功能可避免搜尋過度擴大,否則可能會大幅降低成效。這項設定適用於 scann.satisfy_limit 啟用時。你可以將這項參數設為 0 到 100 之間的任何值。預設值為 15%。這個預設值的依據是,如果搜尋需要檢查超過 15% 的葉節點,篩選器可能就夠精確,近似最鄰近搜尋 (ANN) 不會帶來好處,因此預先篩選 K 近鄰 (KNN) 會是更合適的選擇。 |
查詢執行階段 (選用) |