SiliconFlow-RangiererCompatible with Milvus 2.6.x

Der SiliconFlow Ranker nutzt die umfassenden Reranking-Modelle von SiliconFlow zur Verbesserung der Suchrelevanz durch semantisches Reranking. Er bietet flexible Funktionen für das Chunking von Dokumenten und unterstützt eine breite Palette spezialisierter Reranking-Modelle verschiedener Anbieter.

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

  • Hochentwickeltes Dokumenten-Chunking mit konfigurierbarer Überlappung zur Bearbeitung langer Dokumente

  • Zugang zu verschiedenen Reranking-Modellen, einschließlich der BAAI/bge-reranker-Serie und anderer spezialisierter Modelle

  • Flexibles Chunk-basiertes Scoring, bei dem der Chunk mit der höchsten Punktzahl die Bewertung des Dokuments darstellt

  • Kosteneffizientes Reranking mit Unterstützung für Standard- und Pro-Modellvarianten

Voraussetzungen

Bevor Sie den SiliconFlow 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 SiliconFlow-API-Schlüssel mit Zugriff auf die Ranglistenmodelle. Melden Sie sich auf der SiliconFlow-Plattform an, um Ihre API-Anmeldedaten zu erhalten. Sie können entweder:

    • Setzen Sie die Umgebungsvariable SILICONFLOW_API_KEY, oder

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

Erstellen Sie eine SiliconFlow Ranker-Funktion

Um SiliconFlow 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 SiliconFlow Ranker
siliconflow_ranker = Function(
    name="siliconflow_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": "siliconflow",          # Specifies SiliconFlow as the service provider
        "model_name": "BAAI/bge-reranker-v2-m3", # SiliconFlow reranking 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_chunks_per_doc": 5,            # Optional: max chunks per document for supported models
        "overlap_tokens": 50,               # Optional: token overlap between chunks for supported models
        # "credential": "your-siliconflow-api-key" # Optional: if not set, uses SILICONFLOW_API_KEY env var
    }
)
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("siliconflow_semantic_ranker")
                       .inputFieldNames(Collections.singletonList("document"))
                       .param("reranker", "model")
                       .param("provider", "siliconflow")
                       .param("model_name", "BAAI/bge-reranker-v2-m3")
                       .param("queries", "[\"renewable energy developments\"]")
                       .param("endpoint", "http://localhost:8080")
                       .param("max_client_batch_size", "32")
                       .param("max_chunks_per_doc", "5")
                       .param("overlap_tokens", "50")
                       .build();
// nodejs
// go
# restful

SiliconFlow-Ranker-spezifische Parameter

Die folgenden Parameter sind spezifisch für den SiliconFlow 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.

"siliconflow"

model_name

Ja

Das SiliconFlow-Reranking-Modell, das aus den von der SiliconFlow-Plattform unterstützten Modellen verwendet werden soll.

Eine Liste der verfügbaren Reranking-Modelle finden Sie in der SiliconFlow-Dokumentation.

"BAAI/bge-reranker-v2-m3"

queries

Ja

Liste der Abfragezeichenfolgen, die vom Ranglistenmodell 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_chunks_per_doc

Nein

Maximale Anzahl der aus einem Dokument generierten Chunks. Lange Dokumente werden zur Berechnung in mehrere Chunks unterteilt, und die höchste Punktzahl unter den Chunks wird als Punktzahl des Dokuments verwendet. Wird nur von bestimmten Modellen unterstützt: BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, und netease-youdao/bce-reranker-base_v1.

5, 10

overlap_tokens

Keine

Anzahl der Token-Überlappungen zwischen benachbarten Chunks, wenn Dokumente in Chunks unterteilt werden. Dadurch wird die Kontinuität über die Chunk-Grenzen hinweg sichergestellt und ein besseres semantisches Verständnis ermöglicht. Wird nur von bestimmten Modellen unterstützt: BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, und netease-youdao/bce-reranker-base_v1.

50

credential

Nein

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

"ihr-siliconflow-api-schlüssel"

Modellspezifische Funktionsunterstützung: Die Parameter max_chunks_per_doc und overlap_tokens werden nur von bestimmten Modellen unterstützt. Wenn Sie andere Modelle verwenden, werden diese Parameter ignoriert.

Allgemeine Parameter, die von allen Modell-Rankern verwendet werden (z. B. provider, queries), finden Sie unter Erstellen eines Modell-Rankers.

So wenden Sie den SiliconFlow Ranker auf eine Standard-Vektorsuche an:

# Execute search with SiliconFlow 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=siliconflow_ranker,                  # Apply SiliconFlow 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("your_collection")
        .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?