Dela via


Eliminera valfria vektorinstanser från lagring

Azure AI Search lagrar flera kopior av vektorfält som används i specifika arbetsbelastningar. Om du inte behöver stödja ett specifikt beteende, som att returnera råvektorer i ett frågesvar, kan du ange egenskaper i indexet som utelämnar lagring för den arbetsbelastningen.

Förutsättningar

  • Vektorfält i ett sökindex med en vectorSearch konfiguration, med hjälp av HNSW(Hierarchical Navigable Small Worlds) eller fullständiga KNN-algoritmer (K-nearest neighbor) och en ny vektorprofil.

Hur vektorfält lagras

För varje vektorfält kan det finnas tre kopior av vektorerna, som var och en har ett annat syfte:

Instans Förbrukning Styrd med hjälp av
Källvektorer som lagrar JSON som togs emot under dokumentindexering Används för inkrementell datauppdatering med merge eller mergeOrUpload under dokumentindexering. Används också om du vill att "hämtningsbara" vektorer ska returneras i frågesvaret. stored egenskap för vektorfält
Ursprungliga fullprecisionsvektorer I befintliga index används dessa för interna indexåtgärder och för fullständig KNN-sökning. För vektorer som använder komprimering används den också för att rescoring (om aktiverad) på en översamplad kandidatuppsättning med resultat från ANN-sökning på vektorfält med hjälp av skalbar eller binär kvantiseringskomprimering . rescoringOptions.rescoreStorageMethod egenskapen i vectorSearch.compressions. För okomprimerade vektorfält på index som skapats med 2024-11-01-Preview API-versioner och senare utelämnas detta som standard utan påverkan på sökaktiviteter eller kvalitet.
Vektorer i HNSW-grafen för sökning efter ungefärliga närmaste grannar (ANN) Används för ANN-frågekörning. Består av antingen fullprecisionsvektorer (när ingen komprimering tillämpas) eller kvantiserade vektorer (när komprimering tillämpas) Gäller endast HNSW. Dessa datastrukturer krävs för effektiv ANN-sökning.

Du kan ange egenskaper som tar bort de två första instanserna permanent från vektorlagringen.

Den sista instansen (vektorer och diagram) krävs för körning av ANN-vektorfrågor. Om några komprimeringstekniker som skalär eller binär kvantisering används, tillämpas de på den här datauppsättningen. Om du vill kompensera för förlustkomprimering bör du behålla den andra instansen i syfte att förbättra ANN-sökkvaliteten.

Ange egenskapen stored

Egenskapen stored är en boolesk egenskap i en definition av vektorfält som avgör om lagringen allokeras för innehåll i hämtningsbara vektorfält (källinstansen). Egenskapen stored är true som standard. Om du inte behöver råvektorinnehåll i ett frågesvar kan du spara upp till 50 procent lagringsutrymme per fält genom att ändra stored till false.

Överväganden för att ställa in stored på false:

  • Eftersom vektorer inte är läsbara för människor kan du utelämna dem från resultat som skickas till LLMs i RAG-scenarier och från resultat som återges på en söksida. Behåll dem dock om du använder vektorer i en nedströmsprocess som använder vektorinnehåll.

  • Men om indexeringsstrategin innehåller partiella dokumentuppdateringar, till exempel "merge" eller "mergeOrUpload" i ett befintligt dokument, förhindrar inställningen stored=false innehållsuppdateringar av dessa fält under sammanfogningen. För varje "sammanslagning" eller "mergeOrUpload"-åtgärd till ett sökdokument måste du ange vektorfälten i sin helhet, tillsammans med de icke-vektorfält som du uppdaterar, eller så tas vektorn bort.

Viktigt!

Det går inte att ångra inställningen av stored=false attributionen. Den här egenskapen kan bara anges när du skapar indexet och endast tillåts för vektorfält. Om du uppdaterar ett befintligt index med nya vektorfält kan den här egenskapen inte anges till false. Om du vill hämta vektorinnehåll senare måste du släppa och återskapa indexet, eller skapa och läsa in ett nytt fält som har den nya attributionen.

För nya vektorfält i ett sökindex anger du stored till false för att permanent ta bort hämtningsbar lagring för vektorfältet. I följande exempel visas en vektorfältdefinition med stored egenskapen .

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" 
        } 
      ] 
    } 

Sammanfattning av viktiga punkter

  • Gäller för fält som har en vektordatatyp.

  • Påverkar lagring på disk, inte minne, och det har ingen effekt på frågor. Frågekörningen använder ett separat vektorindex som inte påverkas av stored egenskapen eftersom kopian av vektorn alltid lagras.

  • Egenskapen stored anges när index skapas på vektorfält och kan inte ångras. Om du vill hämta innehåll senare måste du släppa och återskapa indexet eller skapa och läsa in ett nytt fält som har den nya attributionen.

  • Standardvärden är stored inställda på true och retrievable inställda på false. I en standardkonfiguration lagras en hämtningsbar kopia, men den returneras inte automatiskt i resultat. När stored är sant kan du växla retrievable mellan sant och falskt när som helst utan att behöva återskapa ett index. När stored är falskt, retrievable måste vara falskt och kan inte ändras.

Ange egenskapen rescoreStorageMethod

Kommentar

Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Egenskapen rescoreStorageMethod styr lagringen av fullprecisionsvektorer när komprimering används.

För okomprimerade vektorfält på index som skapats med 2024-11-01-Preview API-versioner och senare utelämnas detta som standard utan påverkan på sökaktiviteter eller kvalitet. För befintliga vektorfält som skapats före den här API-versionen finns det ingen möjlighet att ta bort den här datakopian på plats.

Vid en vektorkomprimering rescoreStorageMethod är egenskapen inställd preserveOriginals på som standard, som behåller fullprecisionsvektorer för översampling och återberäkningsfunktioner föratt minska effekten av förlust av komprimering på HNSW-grafen. Om du inte använder de här funktionerna kan du minska vektorlagringen genom att ange rescoreStorageMethod till discardOriginals.

Viktigt!

Inställningen av rescoreStorageMethod egenskapen är oåterkallelig och har olika nivåer av sökkvalitetsförlust beroende på komprimeringsmetoden. Detta kan anges för index som skapas med 2024-11-01-Preview eller senare, antingen när index skapas eller när nya vektorfält läggs till.

Om du tänker använda skalär eller binär kvantisering rekommenderar vi att rescoreStorageMethod du behåller inställningen för att preserveOriginals maximera sökkvaliteten.

Så här anger du den här egenskapen:

  1. Använd REST-API:er för att skapa index eller skapa eller uppdatera index 2024-11-01 eller ett Azure SDK-betapaket som tillhandahåller funktionen.

  2. Lägg till ett vectorSearch avsnitt i ditt index med profiler, algoritmer och komprimering.

  3. Under komprimeringar lägger du till rescoringOptions med enableRescoring värdet true, defaultOversampling anger till ett positivt heltal och rescoreStorageMethod anger till 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
                }
            ]
        }
    }