Panoramica su Model RankerCompatible with Milvus 2.6.x

La ricerca vettoriale tradizionale ordina i risultati esclusivamente in base alla somiglianza matematica, ovvero al grado di corrispondenza tra i vettori in uno spazio ad alta dimensionalità. Sebbene efficiente, questo approccio spesso trascura la vera rilevanza semantica. Si consideri, ad esempio , la ricerca di "best practice per l'ottimizzazione dei database": si potrebbero ottenere documenti con un'elevata somiglianza vettoriale che menzionano frequentemente questi termini, ma che in realtà non forniscono strategie di ottimizzazione concrete.

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

Limiti

  • I Model Ranker non possono essere utilizzati con le ricerche raggruppate.

  • I campi utilizzati per il riordino dei modelli devono essere di tipo testo (VARCHAR).

  • Ogni Model Ranker può utilizzare un solo campo VARCHAR alla volta per la valutazione.

Come funziona

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

Model Ranker Overview Panoramica sul Model Ranker

  1. Query 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 documenti 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 esterno

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

    • A ciascun documento viene assegnato un punteggio di rilevanza basato sulla comprensione semantica

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

  6. Risultati migliorati: la tua applicazione riceve risultati ordinati in base alla rilevanza semantica anziché alla sola somiglianza vettoriale

Scegli un fornitore di modelli adatto alle tue esigenze

Milvus supporta i seguenti fornitori di servizi di modelli per il riordino, ciascuno con caratteristiche distinte:

Fornitore

Ideale per

Caratteristiche

Caso d'uso esemplificativo

vLLM

Applicazioni complesse che richiedono una comprensione semantica approfondita e personalizzazione

  • Supporta vari modelli linguistici di grandi dimensioni

  • Opzioni di implementazione flessibili

  • Requisiti computazionali più elevati

  • Maggiore potenziale di personalizzazione

Piattaforma di ricerca giuridica che implementa modelli specifici di settore in grado di comprendere la terminologia giuridica e le relazioni tra i precedenti giurisprudenziali

TEI

Implementazione rapida con un uso efficiente delle risorse

  • Servizio leggero ottimizzato per le operazioni sui testi

  • Implementazione più semplice con requisiti di risorse ridotti

  • Modelli di riclassificazione pre-ottimizzati

  • Overhead minimo dell’infrastruttura

Sistema di gestione dei contenuti che necessita di funzionalità di riclassificazione efficienti con requisiti standard

Cohere

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

  • Affidabilità e scalabilità di livello aziendale

  • Servizio gestito senza necessità di manutenzione dell’infrastruttura

  • Funzionalità di riclassificazione 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 prodotti multilingue

Voyage AI

Applicazioni RAG con requisiti specifici in termini di prestazioni e contesto

  • Modelli addestrati specificamente per attività di riclassificazione

  • Controlli granulari di troncamento per documenti di diverse lunghezze

  • Inferenza ottimizzata per i carichi di lavoro in produzione

  • Diverse varianti di modello (rerank-2, rerank-lite, ecc.)

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

SiliconFlow

Applicazioni che elaborano documenti lunghi con priorità di efficienza in termini di costi

  • Segmentazione avanzata dei documenti con sovrapposizione configurabile

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

  • Supporto per diversi modelli di riordino

  • Conveniente grazie alle varianti di modello standard e pro

Sistema di ricerca nella documentazione tecnica per l’elaborazione di manuali e articoli di grandi dimensioni che richiedono una segmentazione intelligente e il controllo delle sovrapposizioni

Hugging Face

Applicazioni che utilizzano i modelli di similarità delle frasi di Hugging Face in hosting

  • Utilizza il provider ospitato hf-inference

  • Seleziona i modelli dall'Hugging Face Hub

  • Calcola un punteggio di similarità tra frasi per ciascun candidato

  • Utilizza l’autenticazione tramite chiave API

Applicazioni di ricerca semantica che desiderano riorganizzare i testi candidati utilizzando un modello Hugging Face senza dover gestire un servizio di inferenza separato

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

Implementazione

Prima di implementare Model Ranker, assicurati di disporre di:

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

  • Un servizio di modelli esterno in esecuzione accessibile alla propria istanza Milvus

  • Una connettività di rete adeguata tra Milvus e il servizio di modelli scelto

I Model Ranker si integrano perfettamente sia con le operazioni di ricerca vettoriale standard che con quelle ibride. L’implementazione prevede la creazione di un oggetto Function che definisce la configurazione di riclassificazione e il suo passaggio alle operazioni di ricerca.

Creazione di un Model Ranker

Per implementare il riclassificatore di modelli, definire innanzitutto un oggetto Function con la configurazione appropriata. In questo esempio, utilizziamo 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

Obbligatorio?

Descrizione

Valore / Esempio

name

Sì

Identificatore della funzione da utilizzare durante l'esecuzione delle ricerche.

"semantic_ranker"

input_field_names

Sì

Nome del campo di testo da utilizzare per il riclassamento.

Deve essere un campo di tipo " VARCHAR ".

["document"]

function_type

Sì

Specifica il tipo di funzione che si sta creando.

Deve essere impostato su " RERANK " per tutti i classificatori del modello.

FunctionType.RERANK

params

Sì

Un dizionario contenente la configurazione per la funzione di riclassificazione basata sul modello. I parametri disponibili (chiavi) variano a seconda del fornitore di servizi.

{...}

params.reranker

Sì

Deve essere impostato su "model" per abilitare il riclassamento basato su modello.

"model"

params.provider

Sì

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

"tei"

params.queries

Sì

Elenco delle stringhe di query utilizzate dal modello di riclassificazione per calcolare i punteggi di rilevanza.

Il numero di stringhe di query deve corrispondere esattamente al numero di query presenti nell’operazione di ricerca (anche quando si utilizzano vettori di query anziché testo); in caso contrario, verrà segnalato un errore.

["search query"]

params.endpoint

Sì

URL del servizio del modello.

"http://localhost:8080"

max_client_batch_size

No

Numero massimo di documenti da elaborare in un singolo batch. Valori più elevati aumentano la produttività ma richiedono più memoria.

32 (impostazione predefinita)

Dopo aver definito il proprio modello di classificazione, è 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

Tradotto daDeepL

Prova Milvus gestito gratuitamente

Zilliz Cloud è senza problemi, basato su Milvus e 10 volte più veloce.

Inizia
Feedback

Questa pagina è stata utile?