Descripción general de Model RankerCompatible with Milvus 2.6.x

La búsqueda vectorial tradicional clasifica los resultados basándose exclusivamente en la similitud matemática, es decir, en el grado de coincidencia entre los vectores en un espacio de alta dimensión. Aunque es un método eficaz, a menudo pasa por alto la verdadera relevancia semántica. Imaginemos que buscamos «mejores prácticas para la optimización de bases de datos»: es posible que obtengamos documentos con una alta similitud vectorial que mencionen estos términos con frecuencia, pero que en realidad no ofrezcan estrategias de optimización prácticas.

Model Ranker transforma la búsqueda de 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 y el contexto del contenido para ofrecer resultados más inteligentes y relevantes.

Limitaciones

  • Los clasificadores de modelos no se pueden utilizar con búsquedas agrupadas.

  • Los campos utilizados para la reordenación por modelo deben ser de tipo texto (VARCHAR).

  • Cada «Model Ranker» solo puede utilizar un campo de tipo « VARCHAR » a la vez para la evaluación.

Cómo funciona

Los clasificadores de modelos integran 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 Descripción general del clasificador de modelos

  1. Consulta inicial: tu 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 de candidatos: el sistema identifica el conjunto inicial de documentos candidatos basándose en la similitud vectorial

  4. Evaluación del modelo: la función «Model Ranker» procesa los pares de consulta-documento:

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

    • El modelo de lenguaje 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: tu aplicación recibe resultados ordenados por relevancia semántica, en lugar de solo por similitud vectorial

Elige un proveedor de modelos que se adapte a tus necesidades

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

Proveedor

Ideal para

Características

Ejemplo de caso de uso

vLLM

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

  • Compatible con diversos modelos de lenguaje a gran escala

  • Opciones de implementación flexibles

  • Mayores requisitos computacionales

  • Mayor potencial de personalización

Plataforma de investigación jurídica que utiliza modelos específicos del ámbito jurídico capaces de comprender la terminología jurídica y las relaciones entre la jurisprudencia

TEI

Rápida implementación con un uso eficiente de los recursos

  • Servicio ligero optimizado para operaciones con texto

  • Implementación más sencilla con menores requisitos de recursos

  • Modelos de reordenación preoptimizados

  • Carga mínima de infraestructura

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

Cohere

Aplicaciones empresariales que dan prioridad a la fiabilidad y la facilidad de integración

  • Fiabilidad y escalabilidad de nivel empresarial

  • Servicio gestionado sin mantenimiento de infraestructura

  • Funciones multilingües de reordenación

  • Limitación de tasa 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

Voyage AI

Aplicaciones RAG con requisitos específicos de rendimiento y contexto

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

  • Controles de truncamiento granulares para documentos de diversa longitud

  • Inferencia optimizada para cargas de trabajo en producción

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

Base de datos de investigación con documentos de longitudes variables que requieren un control de rendimiento ajustado y una comprensión semántica especializada

SiliconFlow

Aplicaciones que procesan documentos largos con prioridades de rentabilidad

  • División avanzada de documentos en fragmentos con solapamiento configurable

  • Puntuación basada en fragmentos (el fragmento con mayor puntuación representa el documento)

  • Compatibilidad con diversos modelos de reordenación

  • Rentable, con variantes de modelo estándar y pro

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

DashScope

Aplicaciones que utilizan modelos de reordenación de Alibaba Cloud o Qwen

  • API gestionada de reordenación de DashScope

  • Compatible con modelos de reordenación como gte-rerank-v2

  • Autenticación basada en clave de API

Aplicaciones RAG que deseen reordenar candidatos con modelos de reordenación alojados en Alibaba Cloud

Hugging Face

Aplicaciones que utilizan modelos de similitud de frases de Hugging Face alojados

  • Utiliza el proveedor « hf-inference » alojado

  • Selecciona modelos del Hugging Face Hub

  • Calcula una puntuación de similitud entre frases por cada candidato

  • Utiliza autenticación mediante clave de API

Aplicaciones de búsqueda semántica que desean reordenar los textos candidatos con un modelo de Hugging Face sin tener que gestionar un servicio de inferencia independiente

Para obtener información detallada sobre la implementación de cada servicio de modelo, consulta la documentación específica:

Implementación

Antes de implementar Model Ranker, asegúrate de que dispones de:

  • Una colección de Milvus con un campo « VARCHAR » que contenga el texto que se va a volver a clasificar

  • Un servicio de modelos externo en funcionamiento al que pueda acceder su instancia de Milvus

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

Los «Model Rankers» se integran a la perfección tanto con las operaciones de búsqueda vectorial estándar como con las de búsqueda híbrida. La implementación consiste en crear un objeto «Function» que defina su configuración de reordenación y pasarlo a las operaciones de búsqueda.

Crear un clasificador de modelos

Para implementar la reclasificación mediante modelos, primero defina 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 obligatorio?

Descripción

Valor / Ejemplo

name

Identificador de tu función que se utiliza al realizar búsquedas.

"semantic_ranker"

input_field_names

Nombre del campo de texto que se utilizará para la reclasificación.

Debe ser un campo de tipo « VARCHAR ».

["document"]

function_type

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

Debe establecerse en « RERANK » para todos los clasificadores de modelos.

FunctionType.RERANK

params

Un 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 habilitar la reclasificación basada en modelos.

"model"

params.provider

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

"tei"

params.queries

Lista de cadenas de consulta utilizadas por el modelo de reordenación 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 utilicen vectores de consulta en lugar de texto); de lo contrario, se generará 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 que se pueden procesar en un solo lote. Los valores más altos aumentan el rendimiento, pero requieren más memoria.

32 (por defecto)

Una vez definido el clasificador del modelo, puedes 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

Traducido porDeepL

Prueba Milvus gestionado gratis

Zilliz Cloud no da problemas, funciona con Milvus y es 10 veces más rápido.

Empezar
Feedback

¿Fue útil esta página?