Condividi tramite


RRF - Linguaggio di query in Cosmos DB (in Azure e Fabric)

La RRF funzione restituisce un punteggio fuso combinando due o più punteggi forniti da altre funzioni.

Sintassi

RRF(<function1>, <function2>, ..., <weights>)

Arguments

Description
function1 Funzione di assegnazione dei punteggi, ad esempio VectorDistance o FullTextScore.
function2 Funzione di assegnazione dei punteggi, ad esempio VectorDistance o FullTextScore.
weights Matrice di numeri che definiscono un peso di importanza per ogni funzione di assegnazione dei punteggi.

Tipi restituiti

Restituisce un valore numerico che rappresenta il punteggio fuso.

Esempi

Questa sezione contiene esempi di come usare questo costrutto di linguaggio di query.

Ricerca ibrida (somiglianza vettoriale + BM25)

In questo esempio Ricerca ibrida combina FullTextScore e 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]
  }
]

In questo esempio Ricerca ibrida usa i pesi per le funzioni di assegnazione dei punteggi.

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 con due funzioni FullTextScore

In questo esempio vengono fuse due funzioni FullTextScore.

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 con due funzioni VectorDistance

In questo esempio vengono fuse due funzioni VectorDistance.

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]
  }
]

Osservazioni:

  • Questa funzione richiede la registrazione nella funzionalità Di ricerca full-text di Azure Cosmos DB NoSQL.
  • Ricerca ibrida richiede anche la registrazione in Ricerca vettoriale NoSQL di Azure Cosmos DB.
  • Questa funzione richiede un indice full-text.
  • Questa funzione può essere usata solo in una ORDER BY RANK clausola e non può essere combinata con ORDER BY in altri percorsi di proprietà.
  • Questa funzione non può far parte di una proiezione( ad esempio, SELECT FullTextScore(c.text, "keyword") AS Score FROM c non è valida).