Übersicht über den Model RankerCompatible with Milvus 2.6.x
Bei der herkömmlichen Vektorsuche werden Ergebnisse ausschließlich nach mathematischer Ähnlichkeit sortiert – also danach, wie gut Vektoren im hochdimensionalen Raum übereinstimmen. Dieser Ansatz ist zwar effizient, lässt jedoch oft die tatsächliche semantische Relevanz außer Acht. Stellen Sie sich vor, Sie suchen nach „Best Practices für die Datenbankoptimierung“: Möglicherweise erhalten Sie Dokumente mit hoher Vektorähnlichkeit, in denen diese Begriffe häufig vorkommen, die jedoch keine tatsächlich umsetzbaren Optimierungsstrategien bieten.
Model Ranker revolutioniert die Milvus-Suche durch die Integration fortschrittlicher Sprachmodelle, die semantische Beziehungen zwischen Suchanfragen und Dokumenten verstehen. Anstatt sich ausschließlich auf die Vektorähnlichkeit zu stützen, wertet das System die Bedeutung und den Kontext der Inhalte aus, um intelligentere und relevantere Ergebnisse zu liefern.
Einschränkungen
Model Ranker können nicht bei Gruppierungssuchen verwendet werden.
Felder, die für das Modell-Ranking verwendet werden, müssen vom Typ „Text“ sein (
VARCHAR).Jeder Model Ranker kann jeweils nur ein Feld vom Typ „
VARCHAR“ zur Auswertung verwenden.
So funktioniert es
Modell-Ranker integrieren Funktionen zum Verständnis von Sprachmodellen über einen klar definierten Workflow in den Milvus-Suchprozess:
Übersicht über Modell-Ranker
Anfängliche Abfrage: Ihre Anwendung sendet eine Abfrage an Milvus
Vektorsuche: Milvus führt eine Standard-Vektorsuche durch, um Dokumentenkandidaten zu identifizieren
Abruf der Kandidaten: Das System ermittelt anhand der Vektorähnlichkeit eine erste Auswahl an Dokumentenkandidaten
Modellauswertung: Die Model-Ranker-Funktion verarbeitet Abfrage-Dokument-Paare:
Es sendet die ursprüngliche Abfrage und die in Frage kommenden Dokumente an einen externen Modelldienst
Das Sprachmodell bewertet die semantische Relevanz zwischen der Abfrage und jedem Dokument
Jedes Dokument erhält auf der Grundlage des semantischen Verständnisses einen Relevanzwert
Intelligente Neuanordnung: Die Dokumente werden auf der Grundlage der vom Modell generierten Relevanzwerte neu geordnet
Verbesserte Ergebnisse: Ihre Anwendung erhält Ergebnisse, die nach semantischer Relevanz und nicht nur nach Vektorähnlichkeit geordnet sind
Wählen Sie einen Modellanbieter, der Ihren Anforderungen entspricht
Milvus unterstützt die folgenden Modelldienstleister für das Reranking, die jeweils unterschiedliche Eigenschaften aufweisen:
Anbieter |
Am besten geeignet für |
Eigenschaften |
Anwendungsbeispiel |
|---|---|---|---|
vLLM |
Komplexe Anwendungen, die ein tiefes semantisches Verständnis und eine individuelle Anpassung erfordern |
|
Rechtsrechercheplattform, die fachspezifische Modelle einsetzt, die juristische Terminologie und Zusammenhänge in der Rechtsprechung verstehen |
TEI |
Schnelle Implementierung bei effizienter Ressourcennutzung |
|
Content-Management-System, das effiziente Reranking-Funktionen mit Standardanforderungen benötigt |
Cohere |
Unternehmensanwendungen, bei denen Zuverlässigkeit und einfache Integration im Vordergrund stehen |
|
E-Commerce-Plattform, die eine hochverfügbare Suche mit konsistenter API-Leistung und mehrsprachigen Produktkatalogen erfordert |
Voyage AI |
RAG-Anwendungen mit spezifischen Anforderungen an Leistung und Kontext |
|
Forschungsdatenbank mit unterschiedlichen Dokumentlängen, die eine fein abgestimmte Leistungssteuerung und ein spezialisiertes semantisches Verständnis erfordern |
SiliconFlow |
Anwendungen zur Verarbeitung langer Dokumente mit Schwerpunkt auf Kosteneffizienz |
|
Suchsystem für technische Dokumentation zur Verarbeitung umfangreicher Handbücher und Fachartikel, die eine intelligente Segmentierung und Überlappungssteuerung erfordern |
DashScope |
Anwendungen, die Reranking-Modelle von Alibaba Cloud oder Qwen nutzen |
|
RAG-Anwendungen, die Kandidaten mit von Alibaba Cloud gehosteten Reranking-Modellen neu bewerten möchten |
Hugging Face |
Anwendungen, die gehostete Hugging-Face-Modelle zur Satzähnlichkeit nutzen |
|
Anwendungen für die semantische Suche, die Textkandidaten mit einem Hugging-Face-Modell neu bewerten möchten, ohne einen separaten Inferenzdienst zu betreiben |
Ausführliche Informationen zur Implementierung der einzelnen Modelldienste finden Sie in der entsprechenden Dokumentation:
Implementierung
Bevor Sie den Model Ranker implementieren, stellen Sie sicher, dass Sie Folgendes haben:
Eine Milvus-Sammlung mit einem Feld „
VARCHAR“, das den neu zu bewertenden Text enthältEin laufender externer Modelldienst, auf den Ihre Milvus-Instanz zugreifen kann
Eine geeignete Netzwerkverbindung zwischen Milvus und dem von Ihnen gewählten Modelldienst
Model Ranker lassen sich nahtlos sowohl in Standard-Vektorsuchen als auch in hybride Suchvorgänge integrieren. Die Implementierung umfasst die Erstellung eines Function-Objekts, das Ihre Neukonfigurations-Einstellungen definiert, sowie dessen Übergabe an Suchvorgänge.
Erstellen eines Model Rankers
Um das Modell-Ranking zu implementieren, definieren Sie zunächst ein „Function“-Objekt mit der entsprechenden Konfiguration. In diesem Beispiel verwenden wir TEI als Dienstanbieter:
from pymilvus import MilvusClient, Function, FunctionType
# Connect to your Milvus server
client = MilvusClient(
uri="http://localhost:19530" # Replace with your Milvus server URI
)
# Create a model ranker function
model_ranker = Function(
name="semantic_ranker", # Function identifier
input_field_names=["document"], # VARCHAR field to use for reranking
function_type=FunctionType.RERANK, # Must be set to RERANK
params={
"reranker": "model", # Specify model reranker. Must be "model"
"provider": "tei", # Choose provider: "tei", "vllm", etc.
"queries": ["machine learning for time series"], # Query text
"endpoint": "http://model-service:8080", # Model service endpoint
# "maxBatch": 32 # Optional: batch size for processing
}
)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.vector.request.ranker.ModelRanker;
MilvusClientV2 client = new MilvusClientV2(ConnectConfig.builder()
.uri("http://localhost:19530")
.build());
ModelRanker ranker = ModelRanker.builder()
.name("semantic_ranker")
.inputFieldNames(Collections.singletonList("document"))
.provider("tei")
.queries(Collections.singletonList("machine learning for time series"))
.endpoint("http://model-service:8080")
.build();
// nodejs
// go
# restful
Parameter |
Erforderlich? |
Beschreibung |
Wert / Beispiel |
|---|---|---|---|
|
Ja |
Bezeichner für Ihre Funktion, der bei der Durchführung von Suchvorgängen verwendet wird. |
|
|
Ja |
Name des Textfelds, das für die Neugewichtung verwendet werden soll. Muss ein Feld vom Typ „ |
|
|
Ja |
Gibt den Typ der zu erstellenden Funktion an. Muss für alle Modell-Ranker auf „ |
|
|
Ja |
Ein Dictionary, das die Konfiguration für die modellbasierte Reranking-Funktion enthält. Die verfügbaren Parameter (Schlüssel) variieren je nach Dienstanbieter. |
|
|
Ja |
Muss auf „ |
|
|
Ja |
Der Modell-Dienstanbieter, der für das Reranking verwendet werden soll. |
|
|
Ja |
Liste der Suchbegriffe, die vom Neurangordnungsmodell zur Berechnung der Relevanzwerte verwendet werden. Die Anzahl der Suchbegriffe muss exakt mit der Anzahl der Suchanfragen in Ihrem Suchvorgang übereinstimmen (auch bei Verwendung von Suchvektoren anstelle von Text), andernfalls wird ein Fehler gemeldet. |
|
|
Ja |
URL des Modelldienstes. |
|
|
Nein |
Maximale Anzahl der Dokumente, die in einem einzelnen Stapel verarbeitet werden sollen. Höhere Werte erhöhen den Durchsatz, erfordern jedoch mehr Arbeitsspeicher. |
|
Auf die Standard-Vektorsuche anwenden
Nachdem Sie Ihren Modell-Ranker definiert haben, können Sie ihn bei Suchvorgängen anwenden, indem Sie ihn an den Parameter „ranker“ übergeben:
# Use the model ranker in standard vector search
results = client.search(
collection_name,
data=[your_query_vector], # Number of query vectors must match that specified in model_ranker.params["queries"]
anns_field="vector_field",
limit=10,
output_fields=["document"], # Include the text field in outputs
ranker=model_ranker, # Apply the model ranker here
consistency_level="Bounded"
)
import io.milvus.v2.common.ConsistencyLevel;
import io.milvus.v2.service.vector.request.SearchReq;
import io.milvus.v2.service.vector.response.SearchResp;
import io.milvus.v2.service.vector.request.data.EmbeddedText;
SearchReq searchReq = SearchReq.builder()
.collectionName(COLLECTION_NAME)
.data(Collections.singletonList(new EmbeddedText("machine learning for time series")))
.annsField("vector_field")
.limit(10)
.outputFields(Collections.singletonList(document))
.functionScore(FunctionScore.builder()
.addFunction(ranker)
.build())
.consistencyLevel(ConsistencyLevel.BOUNDED)
.build();
SearchResp searchResp = client.search(searchReq);
// nodejs
// go
# restful