Cohere RankerCompatible with Milvus 2.6.x

Der Cohere Ranker nutzt die leistungsstarken Rerank-Modelle von Cohere zur Verbesserung der Suchrelevanz durch semantisches Reranking. Er bietet Reranking-Funktionen auf Unternehmensniveau mit einer robusten API-Infrastruktur und optimierter Leistung für Produktionsumgebungen.

Cohere Ranker ist besonders wertvoll für Anwendungen, die Folgendes erfordern

  • Hochwertiges semantisches Verständnis mit modernsten Rerank-Modellen

  • Zuverlässigkeit und Skalierbarkeit auf Unternehmensebene für Produktionsworkloads

  • Mehrsprachige Reranking-Funktionen für verschiedene Inhaltstypen

  • Konsistente API-Leistung mit integrierter Ratenbegrenzung und Fehlerbehandlung

Voraussetzungen

Bevor Sie Cohere Ranker in Milvus implementieren, müssen Sie sicherstellen, dass Sie über Folgendes verfügen:

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

  • Einen gültigen Cohere-API-Schlüssel mit Zugriff auf die Ranglistenmodelle. Melden Sie sich auf der Plattform von Cohere an, um Ihre API-Zugangsdaten zu erhalten. Sie können entweder:

    • Setzen Sie die Umgebungsvariable COHERE_API_KEY, oder

    • Geben Sie den API-Schlüssel direkt in der credential der Ranker-Konfiguration an.

Erstellen Sie eine Cohere Ranker-Funktion

Um Cohere Ranker in Ihrer Milvus-Anwendung zu verwenden, erstellen Sie ein Function-Objekt, das angibt, wie das Ranking funktionieren soll. Diese Funktion wird an Milvus-Suchoperationen übergeben, um das Ranking der Ergebnisse zu verbessern.

from pymilvus import MilvusClient, Function, FunctionType

# Connect to your Milvus server
client = MilvusClient(
    uri="http://localhost:19530"  # Replace with your Milvus server URI
)

# Configure Cohere Ranker
cohere_ranker = Function(
    name="cohere_semantic_ranker",          # Unique identifier for your ranker
    input_field_names=["document"],         # VARCHAR field containing text to rerank
    function_type=FunctionType.RERANK,      # Must be RERANK for reranking functions
    params={
        "reranker": "model",                # Enables model-based reranking
        "provider": "cohere",               # Specifies Cohere as the service provider
        "model_name": "rerank-english-v3.0", # Cohere rerank model to use
        "queries": ["renewable energy developments"], # Query text for relevance evaluation
        "max_client_batch_size": 128,       # Optional: batch size for model service requests (default: 128)
        "max_tokens_per_doc": 4096,         # Optional: max tokens per document (default: 4096)
        # "credential": "your-cohere-api-key" # Optional: authentication credential for Cohere API
    }
)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.common.clientenum.FunctionType;
import io.milvus.v2.service.collection.request.CreateCollectionReq;

MilvusClientV2 client = new MilvusClientV2(ConnectConfig.builder()
        .uri("http://localhost:19530")
        .build());

CreateCollectionReq.Function ranker = CreateCollectionReq.Function.builder()
                       .functionType(FunctionType.RERANK)
                       .name("cohere_semantic_ranker")
                       .inputFieldNames(Collections.singletonList("document"))
                       .param("reranker", "model")
                       .param("provider", "cohere")
                       .param("model_name", "rerank-english-v3.0")
                       .param("queries", "[\"renewable energy developments\"]")
                       .param("endpoint", "http://localhost:8080")
                       .param("max_client_batch_size", "128")
                       .param("max_tokens_per_doc", "4096")
                       .build();
// nodejs
// go
# restful

Cohere Ranker-spezifische Parameter

Die folgenden Parameter sind spezifisch für den Cohere Ranker:

Parameter

Erforderlich?

Beschreibung

Wert / Beispiel

reranker

Ja

Muss auf "model" gesetzt werden, um das Modell-Reranking zu aktivieren.

"model"

provider

Ja

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

"cohere"

model_name

Ja

Das zu verwendende Cohere-Rerank-Modell aus den unterstützten Modellen der Cohere-Plattform.

Eine Liste der verfügbaren Rerank-Modelle finden Sie in der Cohere-Dokumentation.

"rerank-english-v3.0", "rerank-multilingual-v3.0"

queries

Ja

Liste der Abfrage-Strings, die vom Rerank-Modell zur Berechnung der Relevanzwerte verwendet werden. Die Anzahl der Abfragezeichenfolgen muss genau mit der Anzahl der Abfragen in Ihrem Suchvorgang übereinstimmen (auch bei Verwendung von Abfragevektoren anstelle von Text), andernfalls wird ein Fehler gemeldet.

["Suchanfrage"]

max_client_batch_size

Nein

Da Modelldienste möglicherweise nicht alle Daten auf einmal verarbeiten, wird hier die Stapelgröße für den Zugriff auf den Modelldienst in mehreren Anfragen festgelegt.

128 (Voreinstellung)

max_tokens_per_doc

Nein

Maximale Anzahl von Token pro Dokument. Lange Dokumente werden automatisch auf die angegebene Anzahl von Token gekürzt.

4096 (Voreinstellung)

credential

Nein

Authentifizierungsnachweis für den Zugriff auf Cohere-API-Dienste. Wenn nicht angegeben, sucht das System nach der Umgebungsvariablen COHERE_API_KEY.

"ihr-cohere-api-schlüssel"

Für allgemeine Parameter, die von allen Model Rankern verwendet werden (z.B. provider, queries), siehe Erstellen eines Model Rankers.

So wenden Sie Cohere Ranker auf eine Standard-Vektorsuche an:

# Execute search with Cohere reranking
results = client.search(
    collection_name="your_collection",
    data=[your_query_vector],  # Replace with your query vector
    anns_field="dense_vector",                   # Vector field to search
    limit=5,                                     # Number of results to return
    output_fields=["document"],                  # Include text field for reranking
    ranker=cohere_ranker,                       # Apply Cohere reranking
    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(Arrays.asList(new EmbeddedText("AI Research Progress"), new EmbeddedText("What is AI")))
        .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

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

War diese Seite hilfreich?