Entfernen optionaler Vektorinstanzen aus dem Speicher
Die Azure KI-Suche speichert mehrere Kopien von Vektorfeldern, die in bestimmten Workloads verwendet werden. Wenn Sie kein bestimmtes Verhalten unterstützen müssen, z. B. das Zurückgeben von unformatierten Vektoren in einer Abfrageantwort, können Sie Eigenschaften im Index festlegen, die den Speicher für diese Workload auslassen.
Voraussetzungen
- Vektorfelder in einem Suchindex mit einer
vectorSearch
-Konfiguration unter Verwendung der Algorithmen „Hierarchical Navigable Small Worlds (HNSW)“ oder „Exhaustive K-Nearest Neighbor (eKNN)“ und eines neuen Vektorprofils.
So werden Vektorfelder gespeichert
Für jedes Vektorfeld gibt es drei Kopien der Vektoren:
Instanz | Verbrauch |
---|---|
Quellvektoren (in JSON), die von einem Einbettungsmodell oder einer Pushanforderung an den Index empfangen werden | Diese werden für die inkrementelle Datenaktualisierung verwendet, und wenn Sie in der Abfrageantwort „abrufbare“ Vektoren zurückgeben möchten. |
Originale Vektoren mit vollständiger Genauigkeit | Diese werden für die Bewertung verwendet, wenn Vektoren nicht komprimiert sind, oder optional für die Neubewertung, wenn Abfrageergebnisse über komprimierte Vektoren abgerufen wurden. Die Neubewertung gilt nur, wenn Vektorfelder eine skalare oder binäre Quantisierung durchlaufen. |
Vektoren im HNSW-Graphen für die Suche nach den ungefähren nächsten Nachbarn (Approximate Nearest Neighbors, ANNs) | Diese werden für die Abfrageausführung verwendet. |
Sie können Eigenschaften festlegen, die die ersten beiden Instanzen endgültig aus dem Vektorspeicher verwerfen.
Die letzte Instanz (Vektoren und Graphen) ist für die Ausführung von ANN-Vektorabfragen erforderlich. Techniken der verlustbehafteten Komprimierung wie skalare oder binäre Quantisierung werden auf diese Vektorinstanz angewendet. Wenn Sie die verlustbehaftete Komprimierung ausgleichen möchten, sollten Sie die zweite Instanz für die Zwecke der Neubewertung beibehalten.
Festlegen der stored
-Eigenschaft
Die stored
-Eigenschaft ist ein boolescher Wert für eine Vektorfelddefinition, der bestimmt, ob Speicher für abrufbare Vektorfeldinhalte (die Quellinstanz) zugeordnet wird. Die stored
-Eigenschaft ist standardmäßig „true“. Wenn Sie in einer Abfrageantwort keine Inhalte unformatierter Vektoren benötigen, können Sie bis zu 50 Prozent Speicherplatz pro Feld sparen, indem Sie stored
in FALSE ändern.
Überlegungen zum Festlegen von stored
auf „false“:
Da Vektoren nicht für Menschen lesbar sind, können Sie sie aus den Ergebnissen, die in RAG-Szenarien an LLMs gesendet werden, und aus den Ergebnissen, die auf einer Suchseite angezeigt werden, weglassen. Behalten Sie sie jedoch bei, wenn Sie Vektoren in nachgelagerten Prozessen verwenden, die Vektorinhalte nutzen.
Wenn Ihre Indizierungsstrategie jedoch partielle Dokumentaktualisierungen enthält, z. B. „merge“ oder „mergeOrUpload“ für ein vorhandenes Dokument, wird durch Festlegen von
stored=false
verhindert, dass während der Zusammenführung Inhaltsaktualisierungen für diese Felder ausgeführt werden. Bei jedem „merge“- oder „mergeOrUpload“-Vorgang für ein Suchdokument müssen Sie die Vektorfelder vollständig zusammen mit den Nichtvektorfeldern, die Sie aktualisieren, bereitstellen, da der Vektor andernfalls gelöscht wird.
Das Festlegen der stored=false
-Zuordnung kann nicht rückgängig gemacht werden. Sie wird während der Indexerstellung für Vektorfelder festgelegt, wenn physische Datenstrukturen erstellt werden. Wenn Sie später abrufbare Vektorinhalte benötigen, müssen Sie den Index löschen und neu erstellen oder ein neues Feld mit der neuen Zuordnung erstellen und laden.
Das folgende Beispiel zeigt die Fields-Auflistung eines Suchindexes. Legen Sie stored
diesen Wert auf "false" fest, um den abrufbaren Speicher für das Vektorfeld dauerhaft zu entfernen.
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"
}
]
}
Zusammenfassung der wichtigsten Punkte
Dies gilt für Felder mit einem Vektordatentyp.
Wirkt sich auf den Speicher auf dem Datenträger, nicht auf den Arbeitsspeicher aus, und hat keine Auswirkungen auf Abfragen. Die Abfrageausführung verwendet einen separaten Vektorindex, der von der Eigenschaft
stored
nicht betroffen ist, da diese Kopie des Vektors immer gespeichert wird.Die
stored
Eigenschaft wird während der Indexerstellung für Vektorfelder festgelegt und ist unumkehrbar. Wenn Sie später abrufbare Inhalte abrufen möchten, müssen Sie den Index ablegen und neu erstellen oder ein neues Feld erstellen und laden, das über die neue Zuordnung verfügt.Standardwerte sind
stored
auf "true" festgelegt undretrievable
auf "false" festgelegt. In einer Standardkonfiguration wird eine abrufbare Kopie gespeichert, aber sie wird nicht automatisch in Ergebnissen zurückgegeben. Wennstored
dies der Fall ist, können Sie jederzeit zwischen "true" und "false" umschaltenretrievable
, ohne einen Index neu erstellen zu müssen. Iststored
"false",retrievable
muss "false" sein und kann nicht geändert werden.
Festlegen der rescoreStorageMethod
-Eigenschaft
Hinweis
Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschau wird ohne Vereinbarung zum Servicelevel bereitgestellt und nicht für Produktionsworkloads empfohlen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Die rescoreStorageMethod
-Eigenschaft einer Vektorfelddefinition bestimmt, ob Speicher für originale Vektoren mit vollständiger Genauigkeit zugeordnet wird. Standardmäßig ist die rescoreStorageMethod
-Eigenschaft auf preserveOriginals
festgelegt. Wenn Sie die für die Abfrage komprimierter Vektoren bereitgestellten Entschärfungen für die Überquotierung und Neubewertung nicht verwenden, können Sie den Vektorspeicher speichern, indem Sie rescoreStorageMethod
in discardOriginals
ändern.
Wenn Sie eine skalare oder binäre Quantisierung verwenden möchten, empfehlen wir, rescoreStorageMethod
auf preserveOriginals
festgelegt zu lassen.
So legen Sie diese Eigenschaft fest:
Verwenden Sie die REST-APIs Index erstellen oder Index „2024-11-01-preview“ erstellen oder aktualisieren oder ein Azure SDK-Betapaket, das das Feature bereitstellt.
Fügen Sie Ihrem Index einen
vectorSearch
-Abschnitt mit Profilen, Algorithmen und Komprimierungen hinzu.Fügen Sie unter Komprimierungen
rescoringOptions
hinzu, wobeienableRescoring
auf TRUE,defaultOversampling
auf eine positive ganze Zahl undrescoreStorageMethod
aufpreserveOriginals
festgelegt ist.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 } ] } }