Panoramica del Model RankerCompatible with Milvus 2.6.x

La ricerca vettoriale tradizionale classifica i risultati esclusivamente in base alla somiglianza matematica, ovvero alla corrispondenza dei vettori nello spazio ad alta densità. Sebbene sia efficiente, questo approccio spesso non tiene conto della vera rilevanza semantica. Considerate la ricerca di "best practice per l'ottimizzazione dei database": potreste ricevere documenti con un'elevata somiglianza vettoriale che menzionano frequentemente questi termini, ma che in realtà non forniscono strategie di ottimizzazione attuabili.

Model Ranker trasforma la ricerca Milvus integrando modelli linguistici avanzati che comprendono le relazioni semantiche tra query e documenti. Invece di basarsi esclusivamente sulla somiglianza vettoriale, valuta il significato e il contesto dei contenuti per fornire risultati più intelligenti e pertinenti.

Limiti

  • I classificatori di modelli non possono essere utilizzati con le ricerche di raggruppamento.

  • I campi utilizzati per il model reranking devono essere di tipo testo (VARCHAR).

  • Ogni classificatore di modelli può utilizzare solo un campo VARCHAR alla volta per la valutazione.

Come funziona

I Model Ranker integrano le capacità di comprensione dei modelli linguistici nel processo di ricerca Milvus attraverso un flusso di lavoro ben definito:

Model Ranker Overview Panoramica del Model Ranker

  1. Interrogazione iniziale: L'applicazione invia una query a Milvus.

  2. Ricerca vettoriale: Milvus esegue una ricerca vettoriale standard per identificare i documenti candidati.

  3. Recupero dei candidati: Il sistema identifica l'insieme iniziale di documenti candidati in base alla somiglianza vettoriale.

  4. Valutazione del modello: La funzione Model Ranker elabora le coppie query-documento:

    • Invia la query originale e i documenti candidati a un servizio di modelli esterni.

    • Il modello linguistico valuta la rilevanza semantica tra la query e ciascun documento

    • Ogni documento riceve un punteggio di rilevanza basato sulla comprensione semantica.

  5. Riordino intelligente: I documenti vengono riordinati in base ai punteggi di rilevanza generati dal modello

  6. Risultati migliorati: L'applicazione riceve risultati classificati in base alla rilevanza semantica anziché alla sola somiglianza vettoriale.

Scegliete un fornitore di modelli per le vostre esigenze

Milvus supporta i seguenti fornitori di servizi di modello per il reranking, ciascuno con caratteristiche diverse:

Fornitore

Migliore per

Caratteristiche

Esempio di caso d'uso

vLLM

Applicazioni complesse che richiedono una profonda comprensione semantica e personalizzazione

  • Supporta diversi modelli linguistici di grandi dimensioni

  • Opzioni di distribuzione flessibili

  • Requisiti computazionali più elevati

  • Maggiore potenziale di personalizzazione

Piattaforma di ricerca legale che distribuisce modelli specifici per il dominio che comprendono la terminologia legale e le relazioni con la giurisprudenza

TEI

Implementazione rapida con utilizzo efficiente delle risorse

  • Servizio leggero ottimizzato per le operazioni sul testo

  • Implementazione più semplice con minori requisiti di risorse

  • Modelli di reranking pre-ottimizzati

  • Minimo sovraccarico dell'infrastruttura

Sistema di gestione dei contenuti che necessita di efficienti capacità di ricanalizzazione con requisiti standard

Cohere

Applicazioni aziendali che danno priorità all'affidabilità e alla facilità di integrazione

  • Affidabilità e scalabilità di livello enterprise

  • Servizio gestito senza manutenzione dell'infrastruttura

  • Funzionalità di ricanalizzazione multilingue

  • Limitazione della velocità e gestione degli errori integrate

Piattaforma di e-commerce che richiede una ricerca ad alta disponibilità con prestazioni API costanti e cataloghi di prodotti multilingue

Voyage AI

Applicazioni RAG con requisiti specifici di prestazioni e contesto

  • Modelli specificamente addestrati per le attività di reranking

  • Controlli di troncamento granulari per documenti di diversa lunghezza

  • Inferenza ottimizzata per i carichi di lavoro di produzione

  • Varianti multiple del modello (rerank-2, rerank-lite, ecc.)

Database di ricerca con documenti di lunghezza variabile che richiedono un controllo preciso delle prestazioni e una comprensione semantica specializzata.

SiliconFlow

Applicazioni che elaborano documenti lunghi con priorità di economicità

  • Chunking avanzato dei documenti con sovrapposizione configurabile

  • Punteggio basato sui chunk (il chunk con il punteggio più alto rappresenta il documento)

  • Supporto per diversi modelli di reranking

  • Conveniente con le varianti standard e pro del modello

Sistema di ricerca di documentazione tecnica per l'elaborazione di manuali e documenti lunghi che necessitano di una segmentazione intelligente e di un controllo della sovrapposizione.

Per informazioni dettagliate sull'implementazione di ciascun modello di servizio, consultare la documentazione dedicata:

Implementazione

Prima di implementare Model Ranker, assicurarsi di disporre di:

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

  • Un servizio di modelli esterni in esecuzione accessibile alla vostra istanza Milvus

  • Una connettività di rete appropriata tra Milvus e il servizio di modello scelto.

I classificatori di modelli si integrano perfettamente con le operazioni di ricerca vettoriale standard e di ricerca ibrida. L'implementazione prevede la creazione di un oggetto Function che definisce la configurazione del reranking e la sua trasmissione alle operazioni di ricerca.

Creare un classificatore di modelli

Per implementare il reranking dei modelli, occorre innanzitutto definire un oggetto Function con la configurazione appropriata. In questo esempio, usiamo TEI come fornitore di servizi:

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

Parametro

Richiesto?

Descrizione

Valore / Esempio

name

Identificatore della funzione utilizzata per l'esecuzione delle ricerche.

"semantic_ranker"

input_field_names

Nome del campo di testo da utilizzare per la riclassificazione.

Deve essere un campo di tipo VARCHAR.

["document"]

function_type

Specifica il tipo di funzione creata.

Deve essere impostato su RERANK per tutti i classificatori di modelli.

FunctionType.RERANK

params

Un dizionario contenente la configurazione della funzione di reranking basata su modelli. I parametri disponibili (chiavi) variano a seconda del fornitore di servizi.

{...}

params.reranker

Deve essere impostato su "model" per abilitare il reranking basato sui modelli.

"model"

params.provider

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

"tei"

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

["search query"]

params.endpoint

URL del servizio del modello.

"http://localhost:8080"

max_client_batch_size

No

Numero massimo di documenti da elaborare in un singolo batch. Valori maggiori aumentano il throughput ma richiedono più memoria.

32 (predefinito)

Dopo aver definito il ranker del modello, è possibile applicarlo durante le operazioni di ricerca passandolo al parametro ranker:

# 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