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.
Recherche Azure AI prend en charge le type binaire compressé Collection(Edm.Byte) pour réduire davantage l’empreinte de stockage et mémoire des données vectorielles. Vous pouvez utiliser ce type de données pour la sortie des modèles, tels que les modèles d’incorporation binaires Embed v3 de Cohere ou tout autre modèle d’incorporation ou processus qui génère des vecteurs sous forme d’octets binaires.
Il existe trois étapes pour configurer un index pour les vecteurs binaires :
- Ajouter un algorithme de recherche vectorielle qui spécifie la distance hamming pour la comparaison de vecteurs binaires
- Ajouter un profil vectoriel qui pointe vers l’algorithme
- Ajouter un champ vectoriel de type
Collection(Edm.Byte)et affecter la distance Hamming
Cet article utilise les API REST pour l’illustration, mais vous pouvez également utiliser un Kit de développement logiciel (SDK) Azure ou le portail Azure pour ajouter un champ binaire à un index. Vous affectez le type de données binaire aux champs à l’aide des index - Créerou index - Créer ou mettre à jour des API REST.
Conseil
Si vous examinez la prise en charge des vecteurs binaires pour son encombrement plus petit, vous pouvez également prendre en compte les fonctionnalités de quantisation de vecteur et de réduction du stockage dans Recherche Azure AI. Les entrées sont des embeddings float32 ou float16. La sortie est stockée dans un format beaucoup plus petit. Pour plus d’informations, consultez Compresser à l’aide d’une quantisation binaire ou scalaire et affecter des types de données étroits.
Conditions préalables
Connaissance de la création d’un index et de l’ajout de champs vectoriels.
Vecteurs binaires, avec un bit par dimension, empaquetés dans les valeurs uint8 avec huit bits par valeur. Vous pouvez obtenir ces vecteurs à l’aide de modèles qui génèrent directement des vecteurs binaires empaquetés ou en quantifient des vecteurs en vecteurs binaires dans votre application cliente pendant l’indexation et la récupération.
Limitations
Aucune prise en charge du portail Azure dans l'Assistant d'importation de données.
Aucune prise en charge des champs binaires dans la compétence AML utilisée pour la vectorisation intégrée des modèles à partir du catalogue de modèles Microsoft Foundry.
Ajouter un algorithme de recherche vectorielle et un profil vectoriel
Les algorithmes de recherche vectorielle créent les structures de navigation de requête pendant l’indexation. Pour les champs de vecteur binaire, le système utilise la métrique de distance Hamming pour effectuer des comparaisons de vecteurs.
Pour configurer la recherche de vecteurs binaires :
Configurez une requête Index - Créer ou mettre à jour (API REST).
Dans le schéma d’index, ajoutez une
vectorSearchsection qui spécifie des profils et des algorithmes.Ajoutez un ou plusieurs algorithmes de recherche vectorielle qui utilisent une métrique de similarité de
hamming. L’algorithme HNSW (Hierarchical Navigable Small Worlds) est courant, mais vous pouvez également utiliser la distance de Hamming avec des K plus proches voisins exhaustifs (KNN).Ajoutez un ou plusieurs profils vectoriels qui spécifient l’algorithme.
L’exemple suivant montre une configuration de base vectorSearch .
"vectorSearch": {
"profiles": [
{
"name": "myHnswProfile",
"algorithm": "myHnsw",
"compression": null,
"vectorizer": null
}
],
"algorithms": [
{
"name": "myHnsw",
"kind": "hnsw",
"hnswParameters": {
"metric": "hamming"
}
},
{
"name": "myExhaustiveKnn",
"kind": "exhaustiveKnn",
"exhaustiveKnnParameters": {
"metric": "hamming"
}
}
]
}
Ajouter un champ binaire à un index
La collection de champs d’un index doit inclure un champ pour la clé de document, les champs vectoriels et tous les autres champs dont vous avez besoin pour les scénarios de recherche hybride.
Les champs binaires utilisent le type Collection(Edm.Byte) et contiennent des embeddings sous forme compacte. Par exemple, si la dimension d’incorporation d’origine est 1024, la longueur du vecteur binaire packé est ceiling(1024 / 8) = 128. Vous obtenez le formulaire packé en définissant la vectorEncoding propriété sur le champ.
Pour ajouter un champ de vecteur binaire à un index :
Ajoutez un champ à la collection de champs et donnez-lui un nom.
Définissez le type de données sur
Collection(Edm.Byte).Définissez
vectorEncodingsurpackedBitpour l’encodage binaire.Définissez
dimensionssur1024. Spécifiez la dimension de vecteur d’origine (décompressée).Définissez
vectorSearchProfilesur un profil que vous avez défini à l’étape précédente.Définissez
searchablesurtrue.
La définition de champ suivante est un exemple de champ vectoriel binaire dans un schéma d’index.
"fields": [
. . .
{
"name": "my-binary-vector-field",
"type": "Collection(Edm.Byte)",
"vectorEncoding": "packedBit",
"dimensions": 1024,
"vectorSearchProfile": "myHnswProfile",
"searchable": true
},
. . .
]
Contenu connexe
Passez en revue le référentiel azure-search-vector-samples pour les flux de travail de bout en bout qui incluent la définition de schéma, la vectorisation, l’indexation et les requêtes.
Passez en revue le code de démonstration de recherche vectorielle pour C#, Python et JavaScript.