Classificador TEICompatible with Milvus 2.6.x

O TEI Ranker utiliza o serviço TEI (Text Embedding Inference) da Hugging Face para melhorar a relevância da pesquisa através da classificação semântica. Ele representa uma abordagem avançada para a ordenação de resultados de pesquisa que vai além da similaridade vetorial tradicional.

Pré-requisitos

Antes de implementar o TEI Ranker no Milvus, certifique-se de que tem:

  • Uma coleção Milvus com um campo VARCHAR contendo o texto a ser classificado

  • Um serviço TEI em execução com capacidades de classificação. Para obter instruções detalhadas sobre como configurar um serviço TEI, consulte a documentação oficial do TEI.

Criar uma função do classificador TEI

Para usar o TEI Ranker na sua aplicação Milvus, crie um objeto Function que especifique como o reranking deve funcionar. Esta função será passada para as operações de pesquisa do Milvus para melhorar a classificação dos 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 do classificador TEI

Os parâmetros seguintes são específicos do classificador TEI:

Parâmetro

Necessário?

Descrição

Valor / Exemplo

reranker

Sim

Tem de ser definido para "model" para permitir a reclassificação do modelo.

"model"

provider

Sim

O fornecedor de serviços de modelos a utilizar para a reclassificação.

"tei"

queries

Sim

Lista de cadeias de consulta utilizadas pelo modelo de reclassificação para calcular as pontuações de relevância. O número de cadeias de caracteres de consulta tem de corresponder exatamente ao número de consultas na sua operação de pesquisa (mesmo quando utiliza vectores de consulta em vez de texto), caso contrário será comunicado um erro.

["consulta de pesquisa"]

endpoint

Sim

O URL do serviço TEI.

"http://localhost:8080"

max_client_batch_size

Não

Uma vez que os serviços modelo podem não processar todos os dados de uma só vez, isto define o tamanho do lote para aceder ao serviço modelo em vários pedidos.

32 (predefinição)

truncate

Não

Se deve truncar as entradas que excedam o comprimento máximo da sequência. Se False, as entradas longas geram erros.

True ou False

truncation_direction

Não

Direção a partir da qual truncar quando a entrada é demasiado longa:

  • "Right" (predefinição): Os tokens são removidos do fim da sequência até que o tamanho máximo suportado seja atingido.

  • "Left": Os símbolos são removidos do início da sequência.

"Right" ou "Left"

Para parâmetros gerais partilhados por todos os classificadores de modelos (por exemplo, provider, queries), consulte Criar um classificador de modelos.

Para aplicar o TEI Ranker a uma pesquisa vetorial padrão:

# 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

Esta página foi útil?