Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Qu’est-ce que l’indexation vectorielle Half-Precision ?
L’indexation de vecteurs de demi-précision vous permet de stocker et d’indexer des incorporations de vecteurs à l’aide de nombres à virgule flottante 16 bits au lieu des floats 32 bits standard. Cette optimisation entraîne des réductions substantielles de l’utilisation de la mémoire et des coûts de stockage, ce qui rend plus possible l’utilisation de jeux de données plus volumineux et de vecteurs à dimension supérieure. En outre, en optimisant la densité des données, elle peut contribuer à améliorer les performances des requêtes dans de nombreux scénarios de recherche vectorielle.
Principaux avantages
- Prise en charge accrue de la dimensionnalité : Avec une demi-précision, vous pouvez désormais indexer des vecteurs avec jusqu’à 4 000 dimensions (augmentation de la limite précédente de 2 000).
- Empreinte de stockage réduite : Le stockage de vecteurs dans un format 16 bits diminue considérablement la quantité de stockage requise par rapport aux vecteurs de précision complète. Cela peut entraîner des économies considérables, en particulier pour les bases de données vectorielles à grande échelle.
- Performances configurables et précision : Pour affiner vos résultats de recherche, nous fournissons un paramètre de suréchantillonnage pendant l’exécution de la requête. Cela vous permet de contrôler le compromis entre la vitesse de récupération et l’impact potentiel de la précision réduite.
Création d’un index vectoriel Half-Precision
Lorsque vous définissez un index vectoriel pour votre collection, vous pouvez activer la compression demi-précision en spécifiant l’option "compression": "half" dans le 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"
}
}
]
});
Amélioration de la recherche par suréchantillonnage
Lors de l’interrogation d’un index vectoriel qui utilise la compression semi-précision, vous pouvez utiliser le oversampling paramètre à l’intérieur de l’étape d’agrégation $search . Ce paramètre permet d’atténuer toute perte potentielle de précision introduite par la représentation 16 bits.
Le oversampling facteur vous permet de récupérer plus de voisins les plus proches potentiels à partir de l’index de demi-précision que le nombre final de résultats souhaités (k). Ces candidats sont ensuite comparés à l’aide des vecteurs de précision complète d’origine pour garantir une précision plus élevée dans les résultats classés finals.
Par exemple, pour obtenir les 10 premiers (k=10) les vecteurs les plus similaires, une bonne pratique peut être de définir oversampling une valeur telle que 1,5 ou 2.0. Avec "oversampling": 1.5, le système obtiendrait d’abord 15 candidats à partir de l’index de demi-précision, puis affiner les 10 premiers à l’aide des données de précision complète.
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
}
}
]);
Note
Le oversampling facteur doit être un double avec une valeur minimale de 1.0. Ce facteur n’est pertinent que pour les index vectoriels créés avec "compression": "half".
Half-Precision versus Quantification de produit
Les deux Half-Precision et PQ (Product Quantization) compressent les index vectoriels dans Azure DocumentDB, mais ils diffèrent de la façon dont ils obtiennent la compression et affectent la recherche :
| Caractéristique | Demi-précision | Quantisation du produit (PQ) |
|---|---|---|
| Méthode de compression | Réduit chaque dimension de vecteur à 16 bits. | Divise l’espace vectoriel en sous-espaces et quantifie chacun d’eux. |
| Dimensions maximales | Jusqu’à 4 000 | Jusqu’à 16 000 |
| Changement de précision | Légère perte due à une faible profondeur de bits. | Perte potentiellement plus grande, configurable via pqCompressedDims. |
| Vitesse de recherche | Augmentation modérée de la vitesse due à un index plus petit. | Augmentation significative de la vitesse due à des vecteurs fortement compressés. |
| Heure de génération de l’index | Relativement rapide. | Peut être plus long en raison de la formation du centroïde (pqSampleSize). |
| Prise en charge des index | HNSW, IVF. | DiskANN. |
| Configuration | Simple, activez compression: "half". |
Autres paramètres : pqCompressedDims, pqSampleSize. |
| Utilisation du suréchantillonnage | Aide avec une perte de précision mineure. | Essentiel pour récupérer la précision à partir d’une compression plus grande. |
| Cas d’usage idéaux | Réduction modérée de la mémoire, dimensions accrues, compromis de précision acceptable. | Jeux de données volumineux, dimensions élevées, recherche rapide hiérarchisée, précision gérée avec surachantillonnage. |