Ü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:

Model Ranker Overview Übersicht über Modell-Ranker

  1. Anfängliche Abfrage: Ihre Anwendung sendet eine Abfrage an Milvus

  2. Vektorsuche: Milvus führt eine Standard-Vektorsuche durch, um Dokumentenkandidaten zu identifizieren

  3. Abruf der Kandidaten: Das System ermittelt anhand der Vektorähnlichkeit eine erste Auswahl an Dokumentenkandidaten

  4. 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

  5. Intelligente Neuanordnung: 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, 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

  • Unterstützt verschiedene große Sprachmodelle

  • Flexible Bereitstellungsoptionen

  • Höhere Rechenanforderungen

  • Größeres Potenzial zur Anpassung

Rechtsrechercheplattform, die fachspezifische Modelle einsetzt, die juristische Terminologie und Zusammenhänge in der Rechtsprechung verstehen

TEI

Schnelle Implementierung bei effizienter Ressourcennutzung

  • Leichter, für Textoperationen optimierter Dienst

  • Einfachere Bereitstellung mit geringerem Ressourcenbedarf

  • Voroptimierte Reranking-Modelle

  • Minimaler Infrastrukturaufwand

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 Wartungsaufwand für die Infrastruktur

  • Mehrsprachige Funktionen zur Neugewichtung

  • Integrierte Ratenbegrenzung und Fehlerbehandlung

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

  • Modelle, die speziell für Reranking-Aufgaben trainiert wurden

  • Detaillierte Trunkierungssteuerung für unterschiedliche Dokumentlängen

  • Optimierte Inferenz für Produktions-Workloads

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

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

  • Erweiterte Dokumentaufteilung in Blöcke mit konfigurierbarer Überlappung

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

  • Unterstützung für verschiedene Reranking-Modelle

  • Kosteneffizient dank Standard- und Pro-Modellvarianten

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

  • Verwaltete DashScope-Reranking-API

  • Unterstützt Reranking-Modelle wie gte-rerank-v2

  • API-Key-basierte Authentifizierung

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

  • Verwendet den gehosteten „ hf-inference “-Anbieter

  • Wählt Modelle aus dem Hugging Face Hub aus

  • Berechnet einen Satzähnlichkeitswert pro Kandidaten

  • Verwendet die Authentifizierung per API-Schlüssel

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ält

  • Ein 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

name

Ja

Bezeichner für Ihre Funktion, der bei der Durchführung von Suchvorgängen verwendet wird.

"semantic_ranker"

input_field_names

Ja

Name des Textfelds, das für die Neugewichtung verwendet werden soll.

Muss ein Feld vom Typ „ VARCHAR “ sein.

["document"]

function_type

Ja

Gibt den Typ der zu erstellenden Funktion an.

Muss für alle Modell-Ranker auf „ RERANK “ gesetzt sein.

FunctionType.RERANK

params

Ja

Ein Dictionary, das die Konfiguration für die modellbasierte Reranking-Funktion enthält. Die verfügbaren Parameter (Schlüssel) variieren je nach Dienstanbieter.

{...}

params.reranker

Ja

Muss auf „ "model" “ gesetzt werden, um das modellbasierte Reranking zu aktivieren.

"model"

params.provider

Ja

Der Modell-Dienstanbieter, der für das Reranking verwendet werden soll.

"tei"

params.queries

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.

["search query"]

params.endpoint

Ja

URL des Modelldienstes.

"http://localhost:8080"

max_client_batch_size

Nein

Maximale Anzahl der Dokumente, die in einem einzelnen Stapel verarbeitet werden sollen. Höhere Werte erhöhen den Durchsatz, erfordern jedoch mehr Arbeitsspeicher.

32 (Standard)

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

Übersetzt vonDeepL

Verwaltetes Milvus kostenlos testen

Zilliz Cloud ist unkompliziert, basiert auf Milvus und ist 10-mal schneller.

Loslegen
Feedback

War diese Seite hilfreich?