L1Distance
Introduit dans : v21.11.0 Calcule la distance entre deux points (les éléments des vecteurs correspondent aux coordonnées) dans l’espaceL1 (norme 1, ou distance en géométrie de Manhattan).
Syntaxe
distanceL1
Arguments
Valeur renvoyée
Renvoie la distance selon la norme 1. Pour les entrées Array, renvoie Float32 si le plus petit supertype commun des types d’éléments est Float32 ou BFloat16, sinon Float64. Pour les entrées Tuple, le type de retour suit le type du résultat arithmétique des opérations appliquées élément par élément (les types entiers sont conservés). (U)Int* ou Float*
Exemples
Utilisation de base
Query
Response
L1Norm
Introduite dans : v21.11.0 Calcule la somme des valeurs absolues des éléments d’un vecteur. SyntaxenormL1
Arguments
Valeur renvoyée
Renvoie la norme L1 ou la distance de géométrie de Manhattan. UInt* ou Float* ou Decimal
Exemples
Utilisation de base
Query
Response
L1Normalize
Introduit dans : v21.11.0 Calcule le vecteur unitaire d’un vecteur donné (les éléments du tuple ou du tableau sont les coordonnées) dans l’espaceL1 (géométrie de Manhattan).
Syntaxe
normalizeL1
Arguments
Valeur renvoyée
Renvoie le vecteur unitaire. Pour les entrées Array, renvoie Array(Float32) si le plus petit supertype commun des types d’éléments est Float32 ou BFloat16, sinon Array(Float64). Pour les entrées Tuple, renvoie toujours Tuple(Float64). Tuple(Float64) ou Array(Float32) ou Array(Float64)
Exemples
Utilisation de base
Query
Response
L2Distance
Introduit dans : v21.11.0 Calcule la distance entre deux points (les éléments des vecteurs correspondent aux coordonnées) dans l’espace euclidien (distance euclidienne). SyntaxedistanceL2
Arguments
Valeur renvoyée
Renvoie la distance de norme 2. Pour les entrées Array, renvoie Float32 si le plus petit supertype commun des types des éléments est Float32 ou BFloat16, sinon Float64. Pour les entrées Tuple, renvoie toujours Float64. Float*
Exemples
Utilisation de base
Query
Response
L2DistanceTransposed
Introduit dans : v25.10.0 Calcule la distance approximative entre deux points (les valeurs des vecteurs correspondent aux coordonnées) dans l’espace euclidien (distance euclidienne). SyntaxedistanceL2Transposed
Arguments
vectors— Vecteurs.QBit(T, UInt64[, UInt64])reference— Vecteur de référence.Array(T)p— Nombre de bits de chaque élément du vecteur à utiliser pour le calcul de la distance (de 1 à la largeur en bits de l’élément). Le niveau de quantification détermine le compromis entre précision et vitesse. Utiliser moins de bits accélère les E/S et les calculs, au prix d’une précision moindre, tandis qu’en utiliser davantage améliore la précision au détriment des performances.UIntused_dims— Facultatif. Nombre de dimensions initiales à lire, pour une recherche à dimension réduite (Matryoshka) sur unQBitavec stride. Doit être un multiple du stride du QBit sans dépasser sa dimension, et le vecteur de référence doit comporter au moins ce nombre d’éléments (tout élément supplémentaire en fin de vecteur est ignoré). Seuls les groupes de stride couvrant ces dimensions sont lus.UInt
Float64. Float64
Exemples
Utilisation de base
Query
Response
L2DistanceTransposedQuantized
Introduit dans : v26.7.0 Calcule la distance euclidienne approximative entre unQBit(Int8) de codes quantizeBFloat16ToInt8 (déquantifiés à la volée) et un vecteur de référence. Un vecteur de référence (requête) Float est comparé directement avec une précision Float32 — la précision de reconstruction des codes déquantifiés, de sorte qu’une requête Float64 est ramenée à Float32, tandis qu’une requête BFloat16 y est élargie exactement (calcul de distance asymétrique) ; une référence Array(Int8) est elle-même traitée comme des codes quantizeBFloat16ToInt8 et déquantifiée vers ses niveaux de reconstruction. Notez que p tronque uniquement les codes QBit stockés ; la référence Array(Int8) constitue elle-même une requête complète et est toujours reconstruite avec la pleine précision de 8 bits, de sorte qu’il s’agit d’une distance quantifiée contre quantifiée symétrique uniquement pour p = 8 (pour p < 8, seul le côté stocké est lu avec une précision plus grossière). Elle doit se trouver dans le même espace que celui où se trouvaient les values avant la quantification (c’est-à-dire après la même rotation aléatoire et la même mise à l’échelle), ce qui relève de la responsabilité de l’appelant. La distance cosinus est invariante par changement d’échelle ; le produit scalaire et la distance L2 ne le sont pas.
Syntaxe
vectors— Vecteurs de codesquantizeBFloat16ToInt8.QBit(Int8, UInt64[, UInt64])reference— Vecteur de référence (requête) : un tableau deFloat(la requête, comparée avec une précisionFloat32— une requêteFloat64est convertie enFloat32), ou unArray(Int8)de codesquantizeBFloat16ToInt8déquantifiés à la volée.Array(Float32)ouArray(Int8)p— Nombre de bits de poids fort de chaque codeQBitstocké à utiliser (de 1 à 8). Utiliser moins de bits reconstruit un quantificateur embarqué plus grossier à l’aide des centroïdes de moyenne conditionnelle gaussienne des intervalles de préfixe Lloyd-Max existants, pour des E/S plus rapides au prix d’une précision réduite ; 8 bits correspondent à une reconstruction en pleine précision.ptronque uniquement leQBitstocké ; une référenceArray(Int8)est toujours reconstruite avec la précision complète de 8 bits.UIntused_dims— Facultatif. Nombre de dimensions initiales à lire, pour une recherche à dimension réduite (Matryoshka) sur unQBitavec stride. Doit être un multiple du stride du QBit sans dépasser sa dimension, et le vecteur de référence doit comporter au moins ce nombre d’éléments (tous les éléments supplémentaires en fin de tableau sont ignorés). Seuls les groupes de stride couvrant ces dimensions sont lus.UInt
Float64. Float64
Exemples
Utilisation de base
Query
Response
L2Norm
Introduit dans : v21.11.0 Calcule la racine carrée de la somme des carrés des éléments du vecteur. SyntaxenormL2
Arguments
Valeur renvoyée
Renvoie la norme L2 ou la distance euclidienne. UInt* ou Float*
Exemples
Utilisation de base
Query
Response
L2Normalize
Introduit dans : v21.11.0 Calcule le vecteur unitaire d’un vecteur donné (les éléments du tuple ou du tableau correspondent aux coordonnées) dans l’espace euclidien (à l’aide de la distance euclidienne). SyntaxenormalizeL2
Arguments
Valeur renvoyée
Renvoie le vecteur unitaire. Pour les entrées de type Array, renvoie Array(Float32) si le plus petit supertype commun des types d’éléments est Float32 ou BFloat16 ; sinon, Array(Float64). Pour les entrées de type Tuple, renvoie toujours Tuple(Float64). Tuple(Float64) ou Array(Float32) ou Array(Float64)
Exemples
Utilisation de base
Query
Response
L2SquaredDistance
Introduit dans : v22.7.0 Calcule la somme des carrés des écarts entre les éléments correspondants de deux vecteurs. SyntaxedistanceL2Squared
Arguments
Valeur renvoyée
Renvoie la somme des carrés des différences entre les éléments correspondants de deux vecteurs. Pour les entrées Array, renvoie Float32 si le plus petit supertype commun des types d’éléments est Float32 ou BFloat16, sinon Float64. Pour les entrées Tuple, le type de retour suit le type de résultat arithmétique des opérations élément par élément (les types entiers sont conservés). (U)Int* ou Float*
Exemples
Utilisation de base
Query
Response
L2SquaredNorm
Introduit dans : v22.7.0 Calcule le carré de la norme L2 du vecteur (laL2Norm).
Syntaxe
normL2Squared
Arguments
Valeur renvoyée
Carré de la norme L2. UInt* ou Float* ou Decimal
Exemples
Utilisation de base
Query
Response
LinfDistance
Introduit dans : v21.11.0 Calcule la distance entre deux points (les éléments des vecteurs correspondant aux coordonnées) dans l’espaceL_{inf} (norme maximale).
Syntaxe
distanceLinf
Arguments
Valeur renvoyée
Renvoie la distance selon la norme infinie. Pour les entrées Array, renvoie Float32 si le plus petit supertype commun des types d’élément est Float32 ou BFloat16, sinon Float64. Pour les entrées Tuple, renvoie toujours Float64. Float*
Exemples
Utilisation de base
Query
Response
LinfNorm
Introduit dans : v21.11.0 Calcule la plus grande valeur absolue des éléments d’un vecteur. SyntaxenormLinf
Arguments
Valeur renvoyée
Renvoie la norme Linf, c’est-à-dire la valeur absolue maximale. Float64
Exemples
Utilisation de base
Query
Response
LinfNormalize
Introduit dans : v21.11.0 Calcule le vecteur unitaire d’un vecteur donné (les éléments du tuple ou du tableau en sont les coordonnées) dans l’espaceL_{inf} (à l’aide de la norme maximale).
Syntaxe
normalizeLinf
Arguments
Valeur renvoyée
Renvoie le vecteur unitaire. Pour les entrées Array, renvoie Array(Float32) si le plus petit supertype commun des types d’éléments est Float32 ou BFloat16, sinon Array(Float64). Pour les entrées Tuple, renvoie toujours Tuple(Float64). Tuple(Float64) ou Array(Float32) ou Array(Float64)
Exemples
Utilisation de base
Query
Response
LpDistance
Introduit dans : v21.11.0 Calcule la distance entre deux points (les éléments des vecteurs sont les coordonnées) dans l’espaceLp (distance de p-norme).
Syntaxe
distanceLp
Arguments
vector1— Premier vecteur.Tuple(T)ouArray(T)vector2— Deuxième vecteur.Tuple(T)ouArray(T)p— La puissance. Valeurs possibles : nombre réel compris dans[1; inf).UInt*ouInt*ouFloat*
Array, renvoie Float32 si le plus petit supertype commun des types des éléments est Float32 ou BFloat16, sinon Float64. Pour les entrées Tuple, renvoie toujours Float64. Float*
Exemples
Utilisation de base
Query
Response
LpNorm
Introduit dans : v21.11.0 Calcule la p-norme d’un vecteur, c’est-à-dire la racine p-ième de la somme des puissances p-ièmes des valeurs absolues de ses éléments. Cas particuliers :- Quand p=1, elle est équivalente à L1Norm (distance de Manhattan).
- Quand p=2, elle est équivalente à L2Norm (distance euclidienne).
- La valeur de
pdoit être un nombre fini supérieur ou égal à un ; pour la norme maximale (la limite lorsque p→∞), utilisez plutôtLinfNorm.
normLp
Arguments
vector— Vecteur ou tuple de valeurs numériques.Tuple(T)ouArray(T)p— La puissance. Les valeurs possibles sont des nombres réels dans l’intervalle[1; inf).UInt*ouInt*ouFloat*
Float64
Exemples
Utilisation de base
Query
Response
LpNormalize
Introduite dans : v21.11.0 Calcule le vecteur unitaire d’un vecteur donné (les éléments du tuple ou du tableau représentent les coordonnées) dans l’espaceLp (en utilisant la p-norme).
Syntaxe
normalizeLp
Arguments
vector— Un tuple ou un tableau de valeurs numériques.Tuple(T)ouArray(T)p— La puissance. Les valeurs possibles sont des nombres réels dans la plage[1; inf).UInt*ouInt*ouFloat*
Array, renvoie Array(Float32) si le plus petit supertype commun des types d’éléments est Float32 ou BFloat16 ; sinon, Array(Float64). Pour les entrées Tuple, renvoie toujours Tuple(Float64). Tuple(Float64) ou Array(Float32) ou Array(Float64)
Exemples
Exemple d’utilisation
Query
Response
cosineDistance
Introduit dans : v21.11.0 Calcule la distance cosinus entre deux vecteurs (les éléments des tuples correspondent aux coordonnées). Plus la valeur renvoyée est faible, plus les vecteurs sont similaires. SyntaxedistanceCosine
Arguments
Valeur renvoyée
Renvoie la distance cosinus (un moins la similarité cosinus). Pour les entrées Array, renvoie Float32 si le plus petit supertype commun des types des éléments est Float32 ou BFloat16, sinon Float64. Pour les entrées Tuple, renvoie toujours Float64. Float*
Exemples
Utilisation de base
Query
Response
cosineDistanceTransposed
Introduit dans : v26.1.0 Calcule la distance cosinus approximative entre deux points (les valeurs des vecteurs correspondent aux coordonnées). Plus la valeur renvoyée est faible, plus les vecteurs sont similaires. SyntaxedistanceCosineTransposed
Arguments
vectors— Vecteurs.QBit(T, UInt64[, UInt64])reference— Vecteur de référence.Array(T)p— Nombre de bits de chaque élément du vecteur à utiliser pour le calcul de la distance (de 1 à la largeur en bits de l’élément). Le niveau de quantification détermine le compromis entre précision et vitesse. Utiliser moins de bits accélère les opérations d’E/S et les calculs, au prix d’une précision réduite, tandis qu’utiliser davantage de bits améliore la précision au détriment des performances.UIntused_dims— Facultatif. Nombre de dimensions initiales à lire, pour une recherche à dimension réduite (Matryoshka) sur unQBitavec stride. Doit être un multiple du stride du QBit sans dépasser sa dimension, et le vecteur de référence doit comporter au moins ce nombre d’éléments (tout élément supplémentaire en fin de vecteur est ignoré). Seuls les groupes de stride couvrant ces dimensions sont lus.UInt
Float64
Exemples
Utilisation de base
Query
Response
cosineDistanceTransposedQuantized
Introduite dans : v26.7.0 Calcule la distance cosinus approximative entre unQBit(Int8) de codes quantizeBFloat16ToInt8 (déquantifiés à la volée) et un vecteur de référence. Plus la valeur renvoyée est faible, plus les vecteurs se ressemblent. Un vecteur de référence (requête) Float est comparé directement à la précision Float32 — la précision de reconstruction des codes déquantifiés, si bien qu’une requête Float64 est ramenée à Float32, tandis qu’une requête BFloat16 y est élargie exactement (calcul de distance asymétrique) ; une référence Array(Int8) est elle-même traitée comme des codes quantizeBFloat16ToInt8 et déquantifiée vers ses niveaux de reconstruction. Notez que p tronque uniquement les codes QBit stockés ; la référence Array(Int8) constitue, elle, une requête complète et est toujours reconstruite avec la pleine précision de 8 bits. Il s’agit donc d’une distance quantifiée contre quantifiée symétrique uniquement pour p = 8 (pour p < 8, seul le côté stocké est lu avec une précision plus grossière). Il doit se trouver dans le même espace que celui où se trouvaient les valeurs avant la quantification (c.-à-d. après la même rotation aléatoire et la même mise à l’échelle), ce qui relève de la responsabilité de l’appelant. La distance cosinus est invariante par changement d’échelle ; le produit scalaire et la distance L2 ne le sont pas.
Syntaxe
vectors— Vecteurs de codesquantizeBFloat16ToInt8.QBit(Int8, UInt64[, UInt64])reference— Vecteur de référence (requête) : un tableau deFloat(la requête, comparée avec une précisionFloat32— une requêteFloat64est ramenée àFloat32), ou unArray(Int8)de codesquantizeBFloat16ToInt8déquantifiés à la volée.Array(Float32)ouArray(Int8)p— Nombre de bits de poids fort de chaque codeQBitstocké à utiliser (de 1 à 8). Moins de bits reconstruisent un quantificateur embarqué plus grossier utilisant les centroïdes de moyenne conditionnelle gaussienne des intervalles de préfixe Lloyd-Max existants, pour des E/S plus rapides, au prix d’une précision réduite ; 8 bits correspondent à une reconstruction en pleine précision.ptronque uniquement leQBitstocké ; une référenceArray(Int8)est toujours reconstruite avec la pleine précision de 8 bits.UIntused_dims— Facultatif. Nombre de dimensions initiales à lire, pour une recherche à dimension réduite (Matryoshka) sur unQBitavec stride. Cette valeur doit être un multiple du stride du QBit, sans dépasser sa dimension, et le vecteur de référence doit contenir au moins ce nombre d’éléments (tout élément supplémentaire en fin de tableau est ignoré). Seuls les groupes de stride couvrant ces dimensions sont lus.UInt
Float64. Float64
Exemples
Utilisation de base
Query
Response
dotProductTransposed
Introduit dans : v26.7.0 Calcule le produit scalaire approximatif (produit intérieur) de deux vecteurs (les valeurs des vecteurs correspondent aux coordonnées). Contrairement aux fonctions de distance, il s’agit d’une mesure de similarité : plus la valeur renvoyée est élevée, plus les vecteurs sont similaires. SyntaxescalarProductTransposed
Arguments
vectors— Vecteurs.QBit(T, UInt64[, UInt64])reference— Vecteur de référence.Array(T)p— Nombre de bits de chaque élément du vecteur à utiliser pour le calcul (de 1 à la largeur en bits de l’élément). Le niveau de quantification détermine le compromis entre précision et vitesse. Utiliser moins de bits accélère les opérations d’E/S et les calculs, au prix d’une précision réduite, tandis qu’utiliser davantage de bits améliore la précision au détriment des performances.UIntused_dims— Facultatif. Nombre de dimensions initiales à lire, pour une recherche à dimension réduite (Matryoshka) sur unQBitavec stride. Doit être un multiple du stride du QBit sans dépasser sa dimension, et le vecteur de référence doit contenir au moins ce nombre d’éléments (tous les éléments supplémentaires en fin de vecteur sont ignorés). Seuls les groupes de stride couvrant ces dimensions sont lus.UInt
Float64
Exemples
Utilisation de base
Query
Response
dotProductTransposedQuantized
Introduit dans : v26.7.0 Calcule le produit scalaire approximatif (produit intérieur) entre unQBit(Int8) de codes quantizeBFloat16ToInt8 (déquantifiés à la volée) et un vecteur de référence. Il s’agit d’une mesure de similarité : plus la valeur renvoyée est élevée, plus les vecteurs sont similaires. Un vecteur de référence (requête) Float est comparé directement à une précision Float32 — la précision de reconstruction des codes déquantifiés ; ainsi, une requête Float64 est ramenée à Float32, tandis qu’une requête BFloat16 y est élargie exactement (calcul de distance asymétrique). Une référence Array(Int8) est elle-même traitée comme des codes quantizeBFloat16ToInt8 et déquantifiée vers ses niveaux de reconstruction. Notez que p tronque uniquement les codes QBit stockés ; la référence Array(Int8) constitue une requête complète et est toujours reconstruite avec la pleine précision de 8 bits, de sorte qu’il ne s’agit d’une distance symétrique quantifié-contre-quantifié qu’à p = 8 (pour p < 8, seul le côté stocké est lu avec une précision plus grossière). Ce vecteur doit se trouver dans le même espace que celui des valeurs avant quantification (c’est-à-dire après la même rotation aléatoire et la même mise à l’échelle), ce qui relève de la responsabilité de l’appelant. La distance cosinus est invariante par changement d’échelle ; le produit scalaire et la distance L2 ne le sont pas.
Syntaxe
vectors— Vecteurs de codesquantizeBFloat16ToInt8.QBit(Int8, UInt64[, UInt64])reference— Vecteur de référence (requête) : un tableau deFloat(la requête, comparée avec une précisionFloat32— une requêteFloat64est ramenée àFloat32), ou unArray(Int8)de codesquantizeBFloat16ToInt8déquantifiés à la volée.Array(Float32)ouArray(Int8)p— Nombre de bits de poids fort de chaque codeQBitstocké à utiliser (de 1 à 8). Utiliser moins de bits reconstruit un quantificateur embarqué plus grossier à l’aide des centroïdes de moyenne conditionnelle gaussienne des intervalles de préfixe Lloyd-Max existants, pour des E/S plus rapides, au prix d’une précision réduite ; 8 bits correspondent à une reconstruction en pleine précision.ptronque uniquement leQBitstocké ; une référenceArray(Int8)est toujours reconstruite avec la pleine précision de 8 bits.UIntused_dims— Facultatif. Nombre de dimensions initiales à lire, pour une recherche à dimension réduite (Matryoshka) sur unQBitavec stride. Doit être un multiple du stride du QBit sans dépasser sa dimension, et le vecteur de référence doit contenir au moins ce nombre d’éléments (tout élément supplémentaire en fin de vecteur est ignoré). Seuls les groupes de stride couvrant ces dimensions sont lus.UInt
Float64
Exemples
Utilisation de base
Query
Response