Model Ranker ÜberblickCompatible with Milvus 2.6.x

Bei der herkömmlichen Vektorsuche werden die Ergebnisse rein nach mathematischer Ähnlichkeit eingestuft, d. h. danach, wie gut die Vektoren im hochdimensionalen Raum übereinstimmen. Dieser Ansatz ist zwar effizient, geht aber oft an der tatsächlichen semantischen Relevanz vorbei. Wenn Sie z. B. nach "Best Practices für die Datenbankoptimierung" suchen, erhalten Sie möglicherweise Dokumente mit hoher Vektorähnlichkeit, in denen diese Begriffe zwar häufig erwähnt werden, die aber keine wirklich umsetzbaren Optimierungsstrategien enthalten.

Model Ranker verändert die Milvus-Suche durch die Integration fortschrittlicher Sprachmodelle, die die semantischen Beziehungen zwischen Abfragen und Dokumenten verstehen. Anstatt sich nur auf die Vektorähnlichkeit zu verlassen, wertet es die Bedeutung des Inhalts und den Kontext aus, um intelligentere, relevante Ergebnisse zu liefern.

Einschränkungen

  • Model Rankers können nicht mit gruppierenden Suchen verwendet werden.

  • Felder, die für Model Ranker verwendet werden, müssen vom Typ Text sein (VARCHAR).

  • Jeder Model Ranker kann jeweils nur ein VARCHAR Feld für die Auswertung verwenden.

Wie funktioniert das?

Model Ranker integrieren die Fähigkeiten zum Verstehen von Sprachmodellen in den Milvus-Suchprozess durch einen genau definierten Arbeitsablauf:

Model Ranker Overview Model Ranker Überblick

  1. Erste Abfrage: Ihre Anwendung sendet eine Anfrage an Milvus

  2. Vektorsuche: Milvus führt eine Standard-Vektorsuche durch, um mögliche Dokumente zu identifizieren

  3. Abruf von Kandidaten: Das System identifiziert den ersten Satz von Kandidatendokumenten auf der Grundlage der Vektorähnlichkeit

  4. Modell-Bewertung: Die Model Ranker Funktion verarbeitet Abfrage-Dokumenten-Paare:

    • Sendet die ursprüngliche Anfrage und die Kandidatendokumente an einen externen Modelldienst

    • Das Sprachmodell bewertet die semantische Relevanz zwischen Abfrage und jedem Dokument

    • Jedes Dokument erhält eine Relevanzbewertung basierend auf dem semantischen Verständnis

  5. Intelligente Neuordnung: Die Dokumente werden auf der Grundlage der vom Modell generierten Relevanzwerte neu geordnet

  6. Verbesserte Ergebnisse: Ihre Anwendung erhält Ergebnisse, die nach semantischer Relevanz und nicht nur nach Vektorähnlichkeit geordnet sind

Wählen Sie einen Modellanbieter für Ihre Bedürfnisse

Milvus unterstützt die folgenden Modelldienstleister für das Reranking, die jeweils unterschiedliche Merkmale aufweisen:

Anbieter

Am besten geeignet für

Merkmale

Beispiel für einen Anwendungsfall

vLLM

Komplexe Anwendungen, die ein tiefes semantisches Verständnis und Anpassungen erfordern

  • Unterstützt verschiedene große Sprachmodelle

  • Flexible Einsatzmöglichkeiten

  • Höhere Anforderungen an die Rechenleistung

  • Größeres Anpassungspotenzial

Juristische Forschungsplattform mit domänenspezifischen Modellen, die juristische Terminologie und Rechtsprechungsbeziehungen verstehen

TEI

Schnelle Implementierung mit effizienter Ressourcennutzung

  • Leichtgewichtiger, für Textoperationen optimierter Dienst

  • Leichtere Bereitstellung mit geringerem Ressourcenbedarf

  • Voroptimierte Reranking-Modelle

  • Minimaler Aufwand für die Infrastruktur

Content-Management-System, das effiziente Reranking-Funktionen mit Standardanforderungen benötigt

Cohere

Unternehmensanwendungen, bei denen Zuverlässigkeit und einfache Integration im Vordergrund stehen

  • Zuverlässigkeit und Skalierbarkeit auf Unternehmensniveau

  • Managed Service ohne Wartung der Infrastruktur

  • Mehrsprachige Reranking-Funktionen

  • Integrierte Ratenbegrenzung und Fehlerbehandlung

E-Commerce-Plattform, die eine hochverfügbare Suche mit konstanter API-Leistung und mehrsprachigen Produktkatalogen erfordert

Voyage AI

RAG-Anwendungen mit spezifischen Leistungs- und Kontextanforderungen

  • Speziell für Reranking-Aufgaben trainierte Modelle

  • Granulare Trunkierungskontrollen für unterschiedliche Dokumentenlängen

  • Optimierte Inferenz für Produktionsworkloads

  • Mehrere Modellvarianten (rerank-2, rerank-lite, etc.)

Forschungsdatenbank mit unterschiedlichen Dokumentenlängen, die eine fein abgestimmte Leistungskontrolle und ein spezielles semantisches Verständnis erfordern

SiliconFlow

Anwendungen, die lange Dokumente mit Kosteneffizienz-Prioritäten verarbeiten

  • Fortschrittliches Chunking von Dokumenten mit konfigurierbarer Überlappung

  • Chunk-basiertes Scoring (der Chunk mit der höchsten Punktzahl repräsentiert das Dokument)

  • Unterstützung für verschiedene Reranking-Modelle

  • Kosteneffizient mit Standard- und Pro-Modell-Varianten

Suchsystem für technische Dokumentationen zur Verarbeitung umfangreicher Handbücher und Dokumente, die eine intelligente Segmentierung und Überlappungssteuerung erfordern

Detaillierte Informationen über die Implementierung der einzelnen Modelldienste finden Sie in der entsprechenden Dokumentation:

Implementierung

Bevor Sie Model Ranker implementieren, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Eine Milvus-Sammlung mit einem VARCHAR -Feld, das den neu zu bewertenden Text enthält

  • Einen laufenden externen Modelldienst, der für Ihre Milvus-Instanz zugänglich ist

  • Geeignete Netzwerkverbindungen zwischen Milvus und dem von Ihnen gewählten Modelldienst

Modell-Ranker lassen sich nahtlos sowohl in die Standard-Vektorsuche als auch in hybride Suchvorgänge integrieren. Die Implementierung umfasst die Erstellung eines Funktionsobjekts, das Ihre Rangordnungskonfiguration definiert, und dessen Übergabe an Suchoperationen.

Erstellen eines Modell-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

name

Ja

Kennung für Ihre Funktion, die bei der Ausführung von Suchen verwendet wird.

"semantic_ranker"

input_field_names

Ja

Name des Textfeldes, das für das Reranking verwendet werden soll.

Muss ein Feld vom Typ VARCHAR sein.

["document"]

function_type

Ja

Gibt den Typ der zu erstellenden Funktion an.

Muss bei allen Modell-Rankern auf RERANK gesetzt werden.

FunctionType.RERANK

params

Ja

Ein Wörterbuch, das die Konfiguration für die modellbasierte Ranglistenfunktion enthält. Die verfügbaren Parameter (Schlüssel) variieren je nach Dienstanbieter.

{...}

params.reranker

Ja

Muss auf "model" gesetzt werden, um modellbasiertes Reranking zu aktivieren.

"model"

params.provider

Ja

Der Modelldienstanbieter, der für das Reranking verwendet werden soll.

"tei"

params.queries

Ja

Liste der Abfrage-Strings, die vom Reranking-Modell zur Berechnung der Relevanzwerte verwendet werden.

Die Anzahl der Abfrage-Strings muss genau mit der Anzahl der Abfragen in Ihrem Suchvorgang übereinstimmen (auch bei Verwendung von Abfrage-Vektoren anstelle von Text), andernfalls wird ein Fehler gemeldet.

["search query"]

params.endpoint

Ja

URL des Modelldienstes.

"http://localhost:8080"

max_client_batch_size

Nein

Maximale Anzahl von Dokumenten, die in einem einzigen Stapel verarbeitet werden. Größere Werte erhöhen den Durchsatz, benötigen aber mehr Speicher.

32 (Standard)

Nachdem Sie Ihren Modell-Ranker definiert haben, können Sie ihn bei Suchvorgängen anwenden, indem Sie ihn an den Ranker-Parameter ü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