Freigeben über


RRF - Abfragesprache in Cosmos DB (in Azure und Fabric)

Die RRF Funktion gibt einen fused Score zurück, indem zwei oder mehr Von anderen Funktionen bereitgestellte Bewertungen kombiniert werden.

Syntax

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

Arguments

Description
function1 Eine Bewertungsfunktion wie VectorDistance oder FullTextScore.
function2 Eine Bewertungsfunktion wie VectorDistance oder FullTextScore.
weights Ein Array von Zahlen, die eine Wichtigkeitsgewichtung für jede Bewertungsfunktion definieren.

Rückgabetypen

Gibt einen numerischen Wert zurück, der die fused Score darstellt.

Examples

Dieser Abschnitt enthält Beispiele für die Verwendung dieses Abfragesprachenkonstrukts.

Hybridsuche (Vektorähnlichkeit + BM25)

In diesem Beispiel kombiniert die Hybridsuche FullTextScore und 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 diesem Beispiel verwendet die Hybridsuche Gewichtungen für die Bewertungsfunktionen.

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 mit zwei FullTextScore-Funktionen

In diesem Beispiel werden zwei FullTextScore-Funktionen miteinander verschmolzen.

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 mit zwei VectorDistance-Funktionen

In diesem Beispiel werden zwei VectorDistance-Funktionen miteinander verschmolzen.

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

Bemerkungen

  • Für diese Funktion ist die Registrierung im Azure Cosmos DB NoSQL Full Text Search-Feature erforderlich.
  • Für die Hybridsuche ist auch die Registrierung in der Azure Cosmos DB NoSQL-Vektorsuche erforderlich.
  • Für diese Funktion ist ein Volltextindex erforderlich.
  • Diese Funktion kann nur in einer ORDER BY RANK Klausel verwendet werden und kann nicht mit ORDER BY anderen Eigenschaftspfaden kombiniert werden.
  • Diese Funktion kann nicht Teil einer Projektion sein (z SELECT FullTextScore(c.text, "keyword") AS Score FROM c . B. ist ungültig).