Clasificador TEICompatible with Milvus 2.6.x

El clasificador TEI aprovecha el servicio Text Embedding Inference (TEI) de Hugging Face para mejorar la relevancia de las búsquedas mediante la reordenación semántica. Representa un enfoque avanzado de la ordenación de los resultados de búsqueda que va más allá de la similitud vectorial tradicional.

Requisitos previos

Antes de implementar TEI Ranker en Milvus, asegúrese de que dispone de:

  • Una colección Milvus con un campo VARCHAR que contenga el texto a ser reordenado.

  • Un servicio TEI en funcionamiento con capacidades de renumeración. Para instrucciones detalladas sobre cómo configurar un servicio TEI, consulte la documentación oficial de TEI.

Crear una función TEI ranker

Para utilizar TEI Ranker en su aplicación Milvus, cree un objeto Function que especifique cómo debe operar la reordenación. Esta función se pasará a las operaciones de búsqueda de Milvus para mejorar la clasificación de los resultados.

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

Parámetros específicos del clasificador TEI

Los siguientes parámetros son específicos del clasificador TEI:

Parámetro

¿Necesario?

Descripción

Valor / Ejemplo

reranker

Debe establecerse en "model" para habilitar la reordenación de modelos.

"model"

provider

El proveedor de servicios de modelos que se utilizará para la reordenación.

"tei"

queries

Lista de cadenas de consulta utilizadas por el modelo rerank para calcular las puntuaciones de relevancia. El número de cadenas de consulta debe coincidir exactamente con el número de consultas de la operación de búsqueda (incluso cuando se utilizan vectores de consulta en lugar de texto); de lo contrario, se informará de un error.

["consulta de búsqueda"]

endpoint

La URL de su servicio TEI.

"http://localhost:8080"

max_client_batch_size

No

Dado que los servicios modelo pueden no procesar todos los datos a la vez, esto establece el tamaño del lote para acceder al servicio modelo en múltiples peticiones.

32 (por defecto)

truncate

No

Si se truncan las entradas que exceden la longitud máxima de secuencia. Si False, las entradas largas provocan errores.

True o False

truncation_direction

No

Dirección desde la que truncar cuando la entrada es demasiado larga:

  • "Right" (por defecto): Los tokens se eliminan desde el final de la secuencia hasta que se alcanza el tamaño máximo admitido.

  • "Left": Las fichas se eliminan desde el principio de la secuencia.

"Right" o "Left"

Para conocer los parámetros generales compartidos por todos los clasificadores de modelos(por ejemplo, provider, queries), consulte Crear un clasificador de modelos.

Para aplicar TEI Ranker a una búsqueda vectorial estándar:

# 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

¿Fue útil esta página?