Visión general del clasificador de modelosCompatible with Milvus 2.6.x

La búsqueda vectorial tradicional clasifica los resultados exclusivamente por similitud matemática, es decir, por la coincidencia de los vectores en un espacio de alta dimensión. A pesar de su eficacia, este enfoque suele pasar por alto la verdadera relevancia semántica. Considere la búsqueda de "mejores prácticas para la optimización de bases de datos": podría recibir documentos con alta similitud vectorial que mencionan estos términos con frecuencia, pero que en realidad no proporcionan estrategias de optimización procesables.

Model Ranker transforma la búsqueda en Milvus al integrar modelos lingüísticos avanzados que comprenden las relaciones semánticas entre las consultas y los documentos. En lugar de basarse únicamente en la similitud vectorial, evalúa el significado del contenido y el contexto para ofrecer resultados más inteligentes y relevantes.

Límites

  • Los clasificadores por modelos no pueden utilizarse con búsquedas agrupadas.

  • Los campos utilizados para el reranking de modelos deben ser de tipo texto (VARCHAR).

  • Cada clasificador de modelos sólo puede utilizar un campo VARCHAR a la vez para la evaluación.

Funcionamiento

Los clasificadores de modelos integran las capacidades de comprensión de modelos lingüísticos en el proceso de búsqueda de Milvus a través de un flujo de trabajo bien definido:

Model Ranker Overview Visión general del clasificador de modelos

  1. Consulta inicial: Su aplicación envía una consulta a Milvus

  2. Búsqueda vectorial: Milvus realiza una búsqueda vectorial estándar para identificar los documentos candidatos

  3. Recuperación decandidatos: El sistema identifica el conjunto inicial de documentos candidatos basándose en la similitud vectorial

  4. Evaluación de modelos: La función de clasificación de modelos procesa los pares consulta-documento:

    • Envía la consulta original y los documentos candidatos a un servicio de modelos externo

    • El modelo lingüístico evalúa la relevancia semántica entre la consulta y cada documento.

    • Cada documento recibe una puntuación de relevancia basada en la comprensión semántica.

  5. Reordenación inteligente: Los documentos se reordenan en función de las puntuaciones de relevancia generadas por el modelo.

  6. Resultados mejorados: Su aplicación recibe resultados clasificados por relevancia semántica en lugar de sólo por similitud vectorial.

Elija un proveedor de modelos que se adapte a sus necesidades

Milvus admite los siguientes proveedores de servicios de modelos para la reordenación, cada uno con características distintas:

Proveedor

Mejor para

Características

Ejemplo de uso

vLLM

Aplicaciones complejas que requieren una profunda comprensión semántica y personalización

  • Admite varios modelos lingüísticos de gran tamaño

  • Opciones de despliegue flexibles

  • Mayores requisitos computacionales

  • Mayor potencial de personalización

Plataforma de investigación jurídica que despliega modelos específicos de dominio que comprenden la terminología jurídica y las relaciones jurisprudenciales

TEI

Implementación rápida con un uso eficiente de los recursos

  • Servicio ligero optimizado para operaciones de texto

  • Despliegue más sencillo con menores requisitos de recursos

  • Modelos de reordenación preoptimizados

  • Gastos de infraestructura mínimos

Sistema de gestión de contenidos que necesita capacidades de reordenación eficientes con requisitos estándar

Cohere

Aplicaciones empresariales que priorizan la fiabilidad y la facilidad de integración

  • Fiabilidad y escalabilidad de nivel empresarial

  • Servicio gestionado sin mantenimiento de infraestructura

  • Capacidad de reordenación multilingüe

  • Limitación de velocidad y gestión de errores integradas

Plataforma de comercio electrónico que requiere una búsqueda de alta disponibilidad con un rendimiento constante de la API y catálogos de productos multilingües

Inteligencia Artificial Voyage

Aplicaciones RAG con requisitos específicos de rendimiento y contexto

  • Modelos específicamente entrenados para tareas de reordenación

  • Controles de truncamiento granular para diversas longitudes de documentos

  • Inferencia optimizada para cargas de trabajo de producción

  • Múltiples variantes del modelo (rerank-2, rerank-lite, etc.)

Base de datos de investigación con documentos de longitud variable que requieren un control de rendimiento preciso y una comprensión semántica especializada

SiliconFlow

Aplicaciones que procesan documentos largos con prioridades de rentabilidad

  • Chunking avanzado de documentos con solapamiento configurable

  • Puntuación basada en trozos (el trozo con mayor puntuación representa al documento)

  • Compatibilidad con diversos modelos de reordenación

  • Rentabilidad con variantes de modelos estándar y pro

Sistema de búsqueda de documentación técnica que procesa manuales y documentos extensos que requieren segmentación inteligente y control de solapamiento

Para obtener información detallada sobre la implementación de cada modelo de servicio, consulte la documentación correspondiente:

Implementación

Antes de implementar Model Ranker, asegúrese de que dispone de:

  • Una colección Milvus con un campo VARCHAR que contenga el texto que se va a clasificar.

  • Un servicio de modelo externo en ejecución accesible a su instancia Milvus

  • Una conectividad de red adecuada entre Milvus y el servicio de modelos elegido.

Los clasificadores de modelos se integran perfectamente tanto con la búsqueda vectorial estándar como con las operaciones de búsqueda híbrida. La implementación implica crear un objeto Function que defina su configuración de reordenación y pasarlo a las operaciones de búsqueda.

Creación de un clasificador de modelos

Para implementar la reordenación de modelos, defina primero un objeto Function con la configuración adecuada. En este ejemplo, utilizamos TEI como proveedor de servicios:

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

¿Es necesario?

Descripción

Valor / Ejemplo

name

Identificador de su función utilizado al ejecutar búsquedas.

"semantic_ranker"

input_field_names

Nombre del campo de texto a utilizar para la reordenación.

Debe ser un campo de tipo VARCHAR.

["document"]

function_type

Especifica el tipo de función que se está creando.

Debe ser RERANK para todos los modelos de clasificación.

FunctionType.RERANK

params

Diccionario que contiene la configuración de la función de reordenación basada en modelos. Los parámetros disponibles (claves) varían en función del proveedor de servicios.

{...}

params.reranker

Debe establecerse en "model" para activar la reordenación basada en modelos.

"model"

params.provider

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

"tei"

params.queries

Lista de cadenas de consulta utilizadas por el modelo reranking 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 notificará un error.

["search query"]

params.endpoint

URL del servicio del modelo.

"http://localhost:8080"

max_client_batch_size

No

Número máximo de documentos a procesar en un único lote. Los valores más altos aumentan el rendimiento pero requieren más memoria.

32 (por defecto)

Después de definir su ranker de modelo, puede aplicarlo durante las operaciones de búsqueda pasándolo al parámetro 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