Classificatore SiliconFlowCompatible with Milvus 2.6.x

SiliconFlow Ranker sfrutta i modelli di reranking completi di SiliconFlow per migliorare la rilevanza della ricerca attraverso il reranking semantico. Offre funzionalità flessibili di chunking dei documenti e supporta un'ampia gamma di modelli di reranking specializzati di vari fornitori.

SiliconFlow Ranker è particolarmente utile per le applicazioni che richiedono:

  • chunking avanzato dei documenti con sovrapposizione configurabile per la gestione di documenti lunghi

  • Accesso a diversi modelli di reranking, tra cui la serie BAAI/bge-reranker e altri modelli specializzati

  • Punteggio flessibile basato sui chunk, in cui il chunk con il punteggio più alto rappresenta il punteggio del documento

  • Reranking conveniente con il supporto di varianti di modelli standard e pro.

Prerequisiti

Prima di implementare SiliconFlow Ranker in Milvus, assicurarsi di disporre di:

  • Una raccolta Milvus con un campo VARCHAR contenente il testo da rerankizzare

  • Una chiave API SiliconFlow valida con accesso ai modelli di reranking. Registrarsi sulla piattaforma di SiliconFlow per ottenere le credenziali API. È possibile scegliere tra:

    • Impostare la variabile d'ambiente SILICONFLOW_API_KEY, oppure

    • Specificare la chiave API direttamente nella configurazione del ranker.

Creare una funzione ranker di SiliconFlow

Per utilizzare SiliconFlow Ranker nella vostra applicazione Milvus, create un oggetto Function che specifichi come deve funzionare il reranking. Questa funzione verrà passata alle operazioni di ricerca di Milvus per migliorare la classificazione dei risultati.

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

Parametri specifici del ranker SiliconFlow

I seguenti parametri sono specifici del ranker SiliconFlow:

Parametro

Richiesto?

Descrizione

Valore / Esempio

reranker

Deve essere impostato su "model" per abilitare il reranking del modello.

"model"

provider

Il fornitore di servizi del modello da usare per il reranking.

"siliconflow"

model_name

Il modello di reranking SiliconFlow da utilizzare tra i modelli supportati dalla piattaforma SiliconFlow.

Per un elenco dei modelli di reranking disponibili, consultare la documentazione di SiliconFlow.

"BAAI/bge-reranker-v2-m3"

queries

Elenco delle stringhe di query utilizzate dal modello di reranking per calcolare i punteggi di rilevanza. Il numero di stringhe di query deve corrispondere esattamente al numero di query dell'operazione di ricerca (anche quando si usano vettori di query al posto del testo), altrimenti verrà segnalato un errore.

["query di ricerca"]

max_client_batch_size

No

Poiché i servizi modello non possono elaborare tutti i dati in una sola volta, si imposta la dimensione del batch per accedere al servizio modello in più richieste.

128 (predefinito)

max_chunks_per_doc

No

Numero massimo di chunk generati all'interno di un documento. I documenti lunghi vengono divisi in più pezzi per il calcolo e il punteggio più alto tra i pezzi viene preso come punteggio del documento. Supportato solo da modelli specifici: BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, e netease-youdao/bce-reranker-base_v1.

5, 10

overlap_tokens

No

Numero di sovrapposizioni di token tra chunk adiacenti quando i documenti sono raggruppati in chunk. Questo garantisce la continuità tra i confini dei chunk per una migliore comprensione semantica. Supportato solo da modelli specifici: BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, e netease-youdao/bce-reranker-base_v1.

50

credential

No

Credenziale di autenticazione per l'accesso ai servizi SiliconFlow API. Se non viene specificata, il sistema cercherà la variabile d'ambiente SILICONFLOW_API_KEY.

"your-siliconflow-api-key"

Supporto di funzionalità specifiche del modello: I parametri max_chunks_per_doc e overlap_tokens sono supportati solo da modelli specifici. Quando si utilizzano altri modelli, questi parametri vengono ignorati.

Per i parametri generali condivisi da tutti i classificatori di modelli (ad esempio, provider, queries), fare riferimento a Creare un classificatore di modelli.

Per applicare SiliconFlow Ranker a una ricerca vettoriale standard:

# 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

Questa pagina è stata utile?