從記憶體排除選擇性向量實例
Azure AI 搜尋會儲存用於特定工作負載的多個向量字段複本。 如果您不需要支援特定行為,例如在查詢回應中傳回原始向量,您可以在省略該工作負載記憶體的索引中設定屬性。
必要條件
- 搜尋索引 中的向量字段具有組
vectorSearch
態,使用階層式導覽小型世界 (HNSW) 或詳盡的 K 近鄰 (KNN) 演算法和新的向量配置檔。
向量欄位的儲存方式
針對每個向量欄位,可能會有三個向量複本,每個復本各有不同的用途:
執行個體 | 使用方式 | 使用控制 |
---|---|---|
儲存文件編製索引期間所接收 JSON 的來源向量 | 用於在文件編製索引期間使用 merge 或 mergeOrUpload 的累加式數據重新整理。 如果您要在查詢回應中傳回「可擷取」向量,也會使用 。 |
stored 向量欄位上的屬性 |
原始全精確度向量 | 在現有的索引中,這些用於內部索引作業和詳盡的 KNN 搜尋。 對於使用壓縮的向量,它也會用於使用純量或二元量化壓縮,在過度取樣的候選專案集上,使用 純量或二元量化 壓縮,在向量字段上進行 ANN 搜尋的結果。 | rescoringOptions.rescoreStorageMethod 中的 vectorSearch.compressions 屬性。 針對使用 2024-11-01-Preview API 版本和更新版本所建立之索引上的未壓縮向量欄位,預設會省略此欄位,而不會影響搜尋活動或品質。 |
HNSW 圖表中的 向量,用於近似近鄰 (ANN) 搜尋 | 用於 ANN 查詢執行。 包含全精確度向量(未套用壓縮時)或量化向量(套用壓縮時) | 僅適用於 HNSW。 需要這些數據結構,才能有效率的 ANN 搜尋。 |
您可以設定從向量儲存永久捨棄前兩個實例的屬性。
ANN 向量查詢執行需要最後一個實例(向量和圖表)。 如果使用純量或二進位量化等任何壓縮技術,則會套用至這組數據。 如果您想要位移遺失壓縮,您應該保留第二個實例以供重新記錄,以改善 ANN 搜尋品質。
stored
設定屬性
屬性 stored
是向量欄位定義的布林值屬性,可決定是否為可擷取的向量字段內容配置記憶體(來源實例)。 stored
屬性依預設為 true。 如果您在查詢回應中不需要原始向量內容,您可以藉由變更 stored
為 false,為每個欄位儲存最多 50% 的記憶體。
將 stored
設定為 false 的考量:
由於人類無法讀取向量,因此您可以從 RAG 案例中傳送至 LLM 的結果,以及從搜尋頁面上轉譯的結果中省略它們。 不過,如果您要在取用向量內容的下游流程中使用向量,請保留它們。
不過,如果您的索引編製策略包含 部分檔更新,例如現有檔的 「merge」 或 「mergeOrUpload」,設定
stored=false
會防止合併期間對這些字段的內容更新。 在每個搜尋檔的「合併」或「mergeOrUpload」作業上,您必須完整地提供向量字段,以及您要更新的非向量字段,或卸除向量。
重要
stored=false
設定屬性是無法復原的。 只有在您建立索引且只允許向量欄位時,才能設定這個屬性。 使用新的向量欄位更新現有的索引,無法將這個屬性設定為 false
。 如果您想要稍後可擷取的向量內容,您必須卸除並重建索引,或建立並載入具有新屬性的新欄位。
針對搜尋索引中的新向量字段,設定 stored
為 false 以永久移除向量欄位的可擷取記憶體。 下列範例顯示具有 屬性的 stored
向量欄位定義。
PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]
{
"name": "demo-index",
"fields": [
{
"name": "vectorContent",
"type": "Collection(Edm.Single)",
"retrievable": false,
"stored": false,
"dimensions": 1536,
"vectorSearchProfile": "vectorProfile"
}
]
}
要點摘要
適用於具有向量數據類型的欄位。
影響磁碟上的儲存空間,而非記憶體,且不會影響查詢。 查詢執行會使用不受 屬性影響
stored
的不同向量索引,因為該向量複本一律會儲存。在向量欄位的索引建立期間,會設定
stored
屬性,而且無法復原。 如果您想要稍後擷取內容,您必須卸除並重建索引,或建立並載入具有新屬性的新欄位。預設值為
stored
設為 true,retrievable
設為 false。 在預設設定中,會儲存可擷取的副本,但不會在結果中自動傳回。 當stored
為 true 時,您可以隨時在 true 和 false 之間切換retrievable
,而不需要重建索引。 當stored
為 false 時,retrievable
必須是 false 且無法變更。
rescoreStorageMethod
設定屬性
注意
此功能目前處於公開預覽。 此預覽版是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
屬性 rescoreStorageMethod
會控制使用壓縮時的完整有效位數向量儲存。
針對使用 2024-11-01-Preview
API 版本和更新版本所建立之索引上的未壓縮向量欄位,預設會省略此欄位,而不會影響搜尋活動或品質。 對於在此 API 版本之前建立的現有向量欄位,無法就地移除此資料複本。
在向量壓縮上rescoreStorageMethod
,屬性預設會設定為 preserveOriginals
,它會保留用於過度取樣和重新取樣功能的完整有效位數向量,以減少 HNSW 圖形上遺失壓縮的影響。 如果您未使用這些功能,您可以將 設定 rescoreStorageMethod
為 discardOriginals
來減少向量儲存。
重要
rescoreStorageMethod
設定 屬性是無法復原的,而且會根據壓縮方法而有不同的搜尋品質遺失層級。 您可以在索引建立期間或新增向量字段期間,於使用 2024-11-01-Preview
或更新版本建立的索引上設定。
如果您想要使用純量或二進位量化,建議您保留 rescoreStorageMethod
設定為 preserveOriginals
以將搜尋品質最大化。
若要設定此屬性:
使用建立索引或建立或更新索引 2024-11-01-preview REST API,或提供此功能的 Azure SDK Beta 套件。
vectorSearch
使用設定檔、演算法和壓縮,將區段新增至您的索引。在壓縮下,將和
rescoringOptions
enableRescoring
設為 true、defaultOversampling
設定為正整數,並將rescoreStorageMethod
設定為preserveOriginals
。PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview { "name": "demo-index", "fields": [. . . ], . . . "vectorSearch": { "profiles": [ { "name": "myVectorProfile", "algorithm": "myHnsw", "compression": "myScalarQuantization" } ], "algorithms": [ { "name": "myHnsw", "kind": "hnsw", "hnswParameters": { "metric": "cosine", "m": 4, "efConstruction": 400, "efSearch": 500 }, "exhaustiveKnnParameters": null } ], "compressions": [ { "name": "myScalarQuantization", "kind": "scalarQuantization", "rescoringOptions": { "enableRescoring": true, "defaultOversampling": 10, "rescoreStorageMethod": "preserveOriginals" }, "scalarQuantizationParameters": { "quantizedDataType": "int8" }, "truncationDimension": null } ] } }