Visão geral do Model RankerCompatible with Milvus 2.6.x

A pesquisa vetorial tradicional classifica os resultados puramente pela similaridade matemática - a proximidade dos vetores no espaço de alta dimensão. Apesar de eficiente, esta abordagem muitas vezes não tem verdadeira relevância semântica. Considere a pesquisa por "melhores práticas para otimização de bases de dados": poderá receber documentos com elevada semelhança vetorial que mencionam estes termos frequentemente, mas que não fornecem estratégias de otimização acionáveis.

O Model Ranker transforma a pesquisa do Milvus ao integrar modelos de linguagem avançados que compreendem as relações semânticas entre consultas e documentos. Em vez de se basear apenas na semelhança de vectores, avalia o significado e o contexto do conteúdo para fornecer resultados mais inteligentes e relevantes.

Limites

  • Os classificadores de modelos não podem ser utilizados com pesquisas de agrupamento.

  • Os campos usados para classificação de modelos devem ser do tipo texto (VARCHAR).

  • Cada classificador de modelos pode usar apenas um campo VARCHAR de cada vez para avaliação.

Como funciona

Os classificadores de modelos integram capacidades de compreensão de modelos linguísticos no processo de pesquisa do Milvus através de um fluxo de trabalho bem definido:

Model Ranker Overview Visão geral do classificador de modelos

  1. Consulta inicial: A sua aplicação envia uma consulta ao Milvus

  2. Pesquisa vetorial: Milvus efectua uma pesquisa vetorial padrão para identificar documentos candidatos

  3. Recuperação de candidatos: O sistema identifica o conjunto inicial de documentos candidatos com base na semelhança dos vectores

  4. Avaliação de modelos: A função de classificação de modelos processa os pares consulta-documento:

    • Envia a consulta original e os documentos candidatos para um serviço de modelo externo

    • O modelo de linguagem avalia a relevância semântica entre a consulta e cada documento

    • Cada documento recebe uma pontuação de relevância com base na compreensão semântica

  5. Reordenação inteligente: Os documentos são reordenados com base nas pontuações de relevância geradas pelo modelo

  6. Resultados melhorados: A sua aplicação recebe resultados classificados por relevância semântica e não apenas por semelhança de vectores

Escolha um fornecedor de modelos para as suas necessidades

Milvus suporta os seguintes provedores de serviços de modelo para reranking, cada um com caraterísticas distintas:

Provedor

Melhor para

Caraterísticas

Exemplo de caso de uso

vLLM

Aplicações complexas que exigem compreensão semântica profunda e personalização

  • Oferece suporte a vários modelos de linguagem grandes

  • Opções de implantação flexíveis

  • Requisitos computacionais mais altos

  • Maior potencial de personalização

Plataforma de investigação jurídica que implementa modelos específicos do domínio que compreendem a terminologia jurídica e as relações jurisprudenciais

TEI

Implementação rápida com utilização eficiente de recursos

  • Serviço leve optimizado para operações de texto

  • Implementação mais fácil com menores requisitos de recursos

  • Modelos de classificação pré-otimizados

  • Despesas mínimas de infraestrutura

Sistema de gestão de conteúdos que necessita de capacidades de reanálise eficientes com requisitos padrão

Coesão

Aplicações empresariais que dão prioridade à fiabilidade e à facilidade de integração

  • Fiabilidade e escalabilidade de nível empresarial

  • Serviço gerido sem manutenção da infraestrutura

  • Recursos de reanálise em vários idiomas

  • Limitação de taxa e tratamento de erros incorporados

Plataforma de comércio eletrónico que requer pesquisa de alta disponibilidade com desempenho consistente da API e catálogos de produtos multilingues

IA do Voyage

Aplicações RAG com requisitos específicos de desempenho e contexto

  • Modelos especificamente treinados para tarefas de reranking

  • Controlos de truncagem granular para diversos comprimentos de documentos

  • Inferência optimizada para cargas de trabalho de produção

  • Múltiplas variantes de modelos (rerank-2, rerank-lite, etc.)

Base de dados de investigação com diferentes comprimentos de documentos que requerem um controlo de desempenho afinado e uma compreensão semântica especializada

SiliconFlow

Aplicações que processam documentos longos com prioridades de rentabilidade

  • Classificação avançada de documentos em pedaços com sobreposição configurável

  • Pontuação baseada em pedaços (o pedaço com maior pontuação representa o documento)

  • Suporte para diversos modelos de reranking

  • Rentável com variantes de modelo padrão e profissional

Sistema de pesquisa de documentação técnica que processa manuais e documentos extensos que necessitam de segmentação inteligente e controlo de sobreposição

Para obter informações detalhadas sobre a implementação de cada serviço de modelo, consulte a documentação dedicada:

Implementação

Antes de implementar o Model Ranker, certifique-se de que tem

  • Uma coleção Milvus com um campo VARCHAR que contém o texto a ser classificado

  • Um serviço de modelo externo em execução acessível à sua instância Milvus

  • Conectividade de rede adequada entre o Milvus e o serviço de modelo escolhido

Os classificadores de modelos integram-se perfeitamente nas operações de pesquisa vetorial padrão e de pesquisa híbrida. A implementação envolve a criação de um objeto Function que define a sua configuração de classificação e a sua transmissão às operações de pesquisa.

Criar um classificador de modelos

Para implementar a reclassificação de modelos, comece por definir um objeto Function com a configuração adequada. Neste exemplo, usamos o TEI como o provedor de serviços:

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

Parâmetro

Necessário?

Descrição

Valor / Exemplo

name

Sim

Identificador da sua função utilizado na execução de pesquisas.

"semantic_ranker"

input_field_names

Sim

Nome do campo de texto a utilizar para a reclassificação.

Deve ser um campo do tipo VARCHAR.

["document"]

function_type

Sim

Especifica o tipo de função que está a ser criada.

Deve ser definido como RERANK para todos os classificadores de modelos.

FunctionType.RERANK

params

Sim

Um dicionário que contém a configuração para a função de reclassificação baseada em modelos. Os parâmetros disponíveis (chaves) variam consoante o fornecedor de serviços.

{...}

params.reranker

Sim

Tem de ser definido para "model" para ativar a reclassificação de modelos.

"model"

params.provider

Sim

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

"tei"

params.queries

Sim

Lista de cadeias de caracteres de consulta utilizadas pelo modelo de reclassificação para calcular as pontuações de relevância.

O número de cadeias de consulta deve 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.

["search query"]

params.endpoint

Sim

URL do serviço de modelo.

"http://localhost:8080"

max_client_batch_size

Não

Número máximo de documentos a processar num único lote. Valores maiores aumentam o rendimento, mas exigem mais memória.

32 (predefinição)

Depois de definir seu classificador de modelo, é possível aplicá-lo durante as operações de pesquisa passando-o para o parâmetro classificador:

# 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