Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Cosmos DB in Fabric unterstützt die Hybridsuchfunktion, die die Vektorsuche mit der Full Text Search-Bewertung (BM25) mithilfe der Reziprozienbewertungsfunktion (RRF) kombiniert.
Was ist die Hybridsuche?
Die Hybridsuche verwendet die Stärken von vektorbasierten und herkömmlichen schlüsselwortbasierten Suchmethoden, um relevantere und präzisere Suchergebnisse zu liefern. Die Hybridsuche ist in Cosmos DB in Fabric einfach zu erledigen, da Metadaten und Vektoren im selben Dokument gespeichert werden können.
Die Hybridsuche in Cosmos DB in Fabric integriert zwei unterschiedliche Suchmethoden:
Vektorsuche: Nutzt Machine Learning-Modelle, um die semantische Bedeutung von Abfragen und Dokumenten zu verstehen. Diese Methodik ermöglicht differenzierte und kontextbezogene Suchergebnisse, insbesondere für komplexe Abfragen, bei denen die herkömmliche Schlüsselwortsuche möglicherweise kurz fällt.
Volltextsuche (
BM25): Ein gut etablierter Algorithmus, der Dokumente basierend auf dem Vorhandensein und der Häufigkeit von Wörtern und Ausdrücken bewertet.BM25ist effektiv für einfache Stichwortsuchen, die eine robuste Basislinie für die Relevanz der Suche bereitstellen.
Die Ergebnisse der Vektorsuche und der Volltextsuche werden dann mithilfe der Reciprocal Rank Fusion (RRF)-Funktion kombiniert. RRF ist eine Methode zum Aggregieren von Bewertungen, die die Bewertungen aus mehreren Suchalgorithmen zusammenführt, um eine einzelne, einheitliche Bewertung zu erzeugen. Diese Methode stellt sicher, dass die endgültigen Suchergebnisse von den Stärken beider Suchansätze profitieren und mehrere Vorteile bieten.
Verbesserte Relevanz: Die Hybridsuche liefert relevantere Ergebnisse für eine breite Palette von Abfragen, indem semantisches Verständnis mit Stichwortabgleich kombiniert wird.
Verbesserte Genauigkeit: Die RRF-Funktion stellt sicher, dass die relevantesten Ergebnisse beider Suchmethoden priorisiert werden.
Vielseitigkeit: Geeignet für verschiedene Anwendungsfälle, einschließlich Retrieval Augmented Generation (RAG), um die Antworten zu verbessern, die von einem großen Sprachmodell (LLM) auf der Grundlage Ihrer eigenen Daten generiert werden.
Konfigurieren von Richtlinien und Indizes für die Hybridsuche
Überprüfen Sie diese Beispielindizierungsrichtlinie mit Volltext- und Vektorindizes:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
{
"path": "/vector/*"
}
],
"fullTextIndexes": [
{
"path": "/text"
}
],
"vectorIndexes": [
{
"path": "/vector",
"type": "DiskANN"
}
]
}
Von Bedeutung
Derzeit sind Vektorrichtlinien und Vektorindizes nach der Erstellung unveränderlich. Um Änderungen vorzunehmen, erstellen Sie eine neue Sammlung. Andere Indizes bleiben weiterhin änderbar.
Hybridsuchabfragen
Hybridsuchabfragen können durch die Verwendung der RRF-Systemfunktion in einer ORDER BY RANK-Klausel ausgeführt werden, die sowohl eine VECTORDISTANCE-Funktion als auch FULLTEXTSCORE enthält. Eine parametrisierte Abfrage zum Ermitteln der 1.000 relevantesten Ergebnisse (Top-k) würde z. B. wie folgt aussehen:
SELECT TOP @k
*
FROM
container c
ORDER BY
RANK RRF(VECTORDISTANCE(c.vector, @queryVector), FULLTEXTSCORE(c.content, @searchTerm1, @searchTerm2, ...))
Angenommen, Sie haben ein Dokument mit Vektoreinbettungen, die in jedem Dokument in der c.vector-Eigenschaft gespeichert sind, und Textdaten in der Eigenschaft „c.text“. Um die zehn relevantesten Dokumente mithilfe der Hybridsuche abzurufen, kann die Abfrage wie folgt geschrieben werden:
SELECT TOP 10
*
FROM
container c
ORDER BY
RANK RRF(VECTORDISTANCE(c.vector, [1,2,3]), FULLTEXTSCORE(c.text, "searchable", "text", "goes" ,"here"))
Gewichtete Hybridsuchabfragen
Sie können optional ein Array von Gewichtungen angeben, um zu beeinflussen, wie wichtig jede Komponentenbewertung in der RRF-Funktion ist. Wenn Sie beispielsweise zwei Komponentenbewertungen (VECTORDISTANCE und FULLTEXTSCORE) haben und die Vektorsuche im Gegensatz zur BM25-Bewertung doppelt gewichten möchten, können Sie das Array von Zahlen [2, 1] als letztes Argument zu RRF hinzufügen. So geht‘s:
SELECT TOP 10
*
FROM
container c
ORDER BY
RANK RRF(VECTORDISTANCE(c.vector, [1,2,3]), FULLTEXTSCORE(c.text, "searchable", "text", "goes" ,"here"), [2, 1])