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.
La RRF fonction retourne un score fusionné en combinant deux scores ou plus fournis par d’autres fonctions.
Syntaxe
RRF(<function1>, <function2>, ..., <weights>)
Arguments
| Descriptif | |
|---|---|
function1 |
Fonction de scoring telle que VectorDistance ou FullTextScore. |
function2 |
Fonction de scoring telle que VectorDistance ou FullTextScore. |
weights |
Tableau de nombres définissant un poids d’importance pour chaque fonction de scoring. |
Types de retour
Retourne une valeur numérique représentant le score fusionné.
Examples
Cette section contient des exemples d’utilisation de cette construction de langage de requête.
Recherche hybride (similarité vectorielle + BM25)
Dans cet exemple, la recherche hybride combine FullTextScore et VectorDistance.
SELECT TOP 10 *
FROM c
ORDER BY RANK RRF(FullTextScore(c.text, "keyword"), VectorDistance(c.vector, [1,2,3]))
[
{
"id": "doc-042",
"text": "The keyword appears frequently in this document about distributed systems.",
"vector": [0.12, 0.87, 0.34]
},
{
"id": "doc-119",
"text": "Another relevant document mentioning the keyword in context.",
"vector": [0.45, 0.22, 0.91]
}
]
Recherche hybride pondérée
Dans cet exemple, la recherche hybride utilise des pondérations pour les fonctions de scoring.
SELECT TOP 10 *
FROM c
ORDER BY RANK RRF(FullTextScore(c.text, "keyword"), VectorDistance(c.vector, [1,2,3]), [2,1])
[
{
"id": "doc-007",
"text": "This document contains the keyword and is semantically close to the query vector.",
"vector": [0.98, 0.11, 0.23]
},
{
"id": "doc-355",
"text": "A document with strong keyword relevance boosted by the higher weight.",
"vector": [0.67, 0.44, 0.18]
}
]
Fusion avec deux fonctions FullTextScore
Dans cet exemple, deux fonctions FullTextScore sont fusionnées.
SELECT TOP 10 *
FROM c
ORDER BY RANK RRF(FullTextScore(c.text, "keyword1"), FullTextScore(c.text, "keyword2"))
[
{
"id": "doc-201",
"text": "This article discusses both keyword1 and keyword2 in the context of data engineering."
},
{
"id": "doc-088",
"text": "A comprehensive overview that mentions keyword1 and covers keyword2 in detail."
}
]
Fusion avec deux fonctions VectorDistance
Dans cet exemple, deux fonctions VectorDistance sont fusionnées.
SELECT TOP 5 *
FROM c
ORDER BY RANK RRF(VectorDistance(c.vector1, [1,2,3]), VectorDistance(c.vector2, [2,2,4]))
[
{
"id": "doc-014",
"vector1": [0.12, 0.87, 0.34],
"vector2": [0.56, 0.78, 0.90]
},
{
"id": "doc-092",
"vector1": [0.45, 0.22, 0.91],
"vector2": [0.33, 0.67, 0.45]
}
]
Remarques
- Cette fonction nécessite l’inscription dans la fonctionnalité Recherche en texte intégral NoSQL Azure Cosmos DB.
- La recherche hybride nécessite également l’inscription dans Recherche vectorielle NoSQL Azure Cosmos DB.
- Cette fonction nécessite un index de recherche en texte intégral.
- Cette fonction ne peut être utilisée que dans une
ORDER BY RANKclause et ne peut pas être combinée avecORDER BYd’autres chemins de propriété. - Cette fonction ne peut pas faire partie d’une projection (par exemple,
SELECT FullTextScore(c.text, "keyword") AS Score FROM cn’est pas valide).