Classificatore TEICompatible with Milvus 2.6.x

Il TEI Ranker sfrutta il servizio Text Embedding Inference (TEI) di Hugging Face per migliorare la rilevanza delle ricerche attraverso una riclassificazione semantica. Rappresenta un approccio avanzato all'ordinamento dei risultati di ricerca che va oltre la tradizionale similarità vettoriale.

Prerequisiti

Prima di implementare TEI Ranker in Milvus, assicurarsi di avere:

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

  • Un servizio TEI funzionante con capacità di reranking. Per istruzioni dettagliate sulla configurazione di un servizio TEI, consultare la documentazione ufficiale TEI.

Creare una funzione TEI Ranker

Per utilizzare TEI 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 TEI Ranker
tei_ranker = Function(
    name="tei_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": "tei",                 # Specifies TEI as the service provider
        "queries": ["renewable energy developments"],  # Query text for relevance evaluation
        "endpoint": "http://localhost:8080",  # Your TEI service URL
        "max_client_batch_size": 32,                    # Optional: batch size for processing (default: 32)
        "truncate": True,                # Optional: Truncate the inputs that are longer than the maximum supported size
        "truncation_direction": "Right",    # Optional: Direction to truncate the inputs
    }
)
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("vllm_semantic_ranker")
        .inputFieldNames(Collections.singletonList(NAME_FIELD))
        .param("reranker", "model")
        .param("provider", "tei")
        .param("queries", "[\"renewable energy developments\"]")
        .param("endpoint", "http://localhost:8080")
        .param("max_client_batch_size", "32")
        .param("truncate", "true")
        .param("truncation_direction", "Right")
        .build();
searchWithRanker(scientists, ranker);
// nodejs
// go
# restful

Parametri specifici del ranker TEI

I seguenti parametri sono specifici del ranker TEI:

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.

"tei"

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"]

endpoint

L'URL del servizio TEI.

"http://localhost:8080"

max_client_batch_size

No

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

32 (predefinito)

truncate

No

Se troncare gli input che superano la lunghezza massima della sequenza. Se False, gli input lunghi generano errori.

True o False

truncation_direction

No

Direzione da cui troncare quando l'input è troppo lungo:

  • "Right" (predefinito): I token vengono rimossi dalla fine della sequenza finché non viene soddisfatta la dimensione massima supportata.

  • "Left": I token vengono rimossi dall'inizio della sequenza.

"Right" o "Left"

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 TEI Ranker a una ricerca vettoriale standard:

# Execute search with vLLM 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=tei_ranker,                         # Apply tei 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?