Dela via


Half-Precision vektorindexering i Azure Cosmos DB för MongoDB (vCore)

Vad är Half-Precision vektorindexering?

Med indexering av halvprecisionsvektor kan du lagra och indexera vektorinbäddningar med hjälp av 16-bitars flyttalsnummer i stället för standard-32-bitarsflötorna. Den här optimeringen leder till betydande minskningar av både minnesanvändning och lagringskostnader, vilket gör det mer möjligt att arbeta med större datamängder och högre dimensionella vektorer. Genom att optimera datadensiteten kan det dessutom bidra till bättre frågeprestanda i många vektorsökningsscenarier.

Viktiga fördelar

  • Stöd för ökad dimensionalitet: Med halv precision kan du nu indexera vektorer med upp till 4 000 dimensioner (en ökning från den tidigare gränsen på 2 000).
  • Minskat lagringsavtryck: Lagring av vektorer i ett 16-bitarsformat minskar avsevärt mängden lagringsutrymme som krävs jämfört med vektorer med full precision. Detta kan leda till betydande kostnadsbesparingar, särskilt för storskaliga vektordatabaser.
  • Konfigurerbar prestanda jämfört med precision: För att finjustera sökresultaten tillhandahåller vi en översamplingsparameter under frågekörningen. På så sätt kan du styra avvägningen mellan hämtningshastigheten och den potentiella effekten av minskad precision.

Skapa ett Half-Precision vektorindex

När du definierar ett vektorindex för samlingen kan du aktivera halvprecisionskomprimering genom att "compression": "half" ange alternativet i cosmosSearchOptions.

db.runCommand({
  "createIndexes": "<vector_collection_name>",
  "indexes": [
    {
      "key": { "<vector_field_name>": "cosmosSearch" },
      "name": "<index_name>",
      "cosmosSearchOptions": {
        "kind": "vector-hnsw", // or vector-ivf
        "similarity": "cos",
        "dimensions": integer_value, // max 4000
        "compression": "half"
      }
    }
  ]
});

Förbättra sökningen med Översampling

När du kör frågor mot ett vektorindex som använder halvprecisionskomprimering kan du använda parametern oversampling i aggregeringssteget $search . Den här parametern hjälper till att minimera eventuell förlust av precision som introduceras av 16-bitarsrepresentationen.

Med oversampling hjälp av faktorn kan du hämta fler potentiella närmaste grannar från halvprecisionsindexet än det slutliga antalet resultat som du vill ha (k). Dessa kandidater jämförs sedan med de ursprungliga fullprecisionsvektorerna för att säkerställa högre noggrannhet i de slutliga rankade resultaten.

För att till exempel få de 10 främsta (k=10) mest liknande vektorerna kan en bra metod vara att ange oversampling ett värde som 1,5 eller 2,0. Med "oversampling": 1.5skulle systemet först få 15 kandidater från halvprecisionsindexet och sedan förfina de 10 främsta med hjälp av data med full precision.

db.collection.aggregate([
  {
    "$search": {
      "cosmosSearch": {
        "vector": query_vector,
        "path": path_to_property,
        "k":  num_results_to_return,
        "oversampling": double_value
      }
    }
  },
  {
    "$project": {
      "similarityScore": { "$meta": "searchScore" },
      "_id": 0
    }
  }
]);

Anmärkning

Faktorn oversampling måste vara en dubbel med ett minsta värde på 1.0. Den här faktorn är endast relevant för vektorindex som skapats med "compression": "half".

Half-Precision jämfört med produktkvantisering

Både Half-Precision och Product Quantization (PQ) komprimerar vektorindex i Azure Cosmos DB för MongoDB (vCore), men de skiljer sig åt i hur de uppnår komprimering och hur de påverkar sökningen.

Egenskap Half-Precision Produktkvantisering (PQ)
Komprimeringsmetod Minskar varje vektordimension till 16 bitar. Delar upp vektorutrymmet i underområden och kvantifierar var och en.
Maximalt antal dimensioner Upp till 4 000 Upp till 16 000
Precisionsändring Liten förlust på grund av lägre bitdjup. Potentiellt större förlust, kan konfigureras via pqCompressedDims.
Sökhastighet Måttlig hastighetsökning på grund av mindre index. Betydande hastighetsökning på grund av mycket komprimerade vektorer.
Tid för indexgenerering Relativt snabbt. Kan vara längre på grund av centroidträning (pqSampleSize).
Indexstöd HNSW, IVF. DiskANN.
Konfiguration Enkelt, aktivera compression: "half". Fler parametrar: pqCompressedDims, pqSampleSize.
Översamplingsanvändning Hjälper till med mindre precisionsförlust. Viktigt för att återställa noggrannhet från större komprimering.
Idealiska användningsfall Måttlig minnesreduktion, ökade dimensioner, acceptabla avvägningar inom precision. Stora datamängder, höga dimensioner, snabb sökning prioriterad, precision som hanteras med översampling.

Nästa steg