Présentation de Model RankerCompatible with Milvus 2.6.x

La recherche vectorielle traditionnelle classe les résultats uniquement en fonction de la similarité mathématique, c'est-à-dire du degré de correspondance entre les vecteurs dans un espace à haute dimension. Bien qu'efficace, cette approche passe souvent à côté de la véritable pertinence sémantique. Prenons l'exemple d'une recherche sur les « meilleures pratiques d'optimisation des bases de données » : vous pourriez obtenir des documents présentant une forte similarité vectorielle et mentionnant fréquemment ces termes, mais qui ne fournissent pas réellement de stratégies d'optimisation exploitables.

Model Ranker transforme la recherche Milvus en intégrant des modèles linguistiques avancés qui comprennent les relations sémantiques entre les requêtes et les documents. Au lieu de se fier uniquement à la similitude vectorielle, il évalue le sens et le contexte du contenu pour fournir des résultats plus intelligents et plus pertinents.

Limites

  • Les classements par modèle ne peuvent pas être utilisés avec les recherches groupées.

  • Les champs utilisés pour le reclassement par modèle doivent être de type texte (VARCHAR).

  • Chaque « Model Ranker » ne peut utiliser qu’un seul champ de type « VARCHAR » à la fois pour l’évaluation.

Fonctionnement

Les classificateurs de modèles intègrent des capacités de compréhension des modèles linguistiques au processus de recherche Milvus via un workflow bien défini :

Model Ranker Overview Présentation des classificateurs de modèles

  1. Requête initiale: votre application envoie une requête à Milvus

  2. Recherche vectorielle: Milvus effectue une recherche vectorielle standard pour identifier les documents candidats

  3. Récupération des documents candidats: le système identifie l'ensemble initial de documents candidats en fonction de la similarité vectorielle

  4. Évaluation du modèle: la fonction « Model Ranker » traite les paires requête-document :

    • Envoie la requête d’origine et les documents candidats à un service de modèle externe

    • Le modèle linguistique évalue la pertinence sémantique entre la requête et chaque document

    • Chaque document se voit attribuer un score de pertinence basé sur la compréhension sémantique

  5. Réclassement intelligent: les documents sont réorganisés en fonction des scores de pertinence générés par le modèle

  6. Résultats améliorés: votre application reçoit des résultats classés par pertinence sémantique plutôt que par simple similarité vectorielle

Choisissez un fournisseur de modèles adapté à vos besoins

Milvus prend en charge les fournisseurs de services de modèles suivants pour le reclassement, chacun présentant des caractéristiques distinctes :

Fournisseur

Idéal pour

Caractéristiques

Exemple d'utilisation

vLLM

Applications complexes nécessitant une compréhension sémantique approfondie et une personnalisation poussée

  • Prend en charge divers modèles linguistiques de grande envergure

  • Options de déploiement flexibles

  • Exigences de calcul plus élevées

  • Potentiel de personnalisation accru

Plateforme de recherche juridique déployant des modèles spécifiques au domaine qui comprennent la terminologie juridique et les relations entre les jurisprudences

TEI

Mise en œuvre rapide avec une utilisation efficace des ressources

  • Service léger optimisé pour les opérations sur le texte

  • Déploiement simplifié avec des besoins en ressources réduits

  • Modèles de reclassement pré-optimisés

  • Charge d'infrastructure minimale

Système de gestion de contenu nécessitant des capacités de reclassement efficaces répondant à des exigences standard

Cohere

Applications d’entreprise privilégiant la fiabilité et la facilité d’intégration

  • Fiabilité et évolutivité de niveau entreprise

  • Service géré sans maintenance de l’infrastructure

  • Fonctionnalités de reclassement multilingues

  • Limitation de débit et gestion des erreurs intégrées

Plateforme de commerce électronique nécessitant une recherche à haute disponibilité avec des performances API constantes et des catalogues de produits multilingues

Voyage AI

Applications RAG présentant des exigences spécifiques en matière de performances et de contexte

  • Modèles spécialement entraînés pour les tâches de reclassement

  • Contrôles granulaires de troncature pour des documents de longueurs variées

  • Inférence optimisée pour les charges de travail en production

  • Plusieurs variantes de modèles (rerank-2, rerank-lite, etc.)

Base de données de recherche comportant des documents de longueurs variables, nécessitant un contrôle précis des performances et une compréhension sémantique spécialisée

SiliconFlow

Applications traitant de longs documents avec des priorités en matière de rentabilité

  • Segmentation avancée des documents avec chevauchement configurable

  • Notation par segments (le segment ayant le score le plus élevé représente le document)

  • Prise en charge de divers modèles de reclassement

  • Rentable grâce à des variantes de modèles standard et pro

Système de recherche de documentation technique traitant des manuels et des articles volumineux nécessitant une segmentation intelligente et un contrôle des chevauchements

DashScope

Applications utilisant les modèles de reclassement d’Alibaba Cloud ou de Qwen

  • API de reclassement DashScope gérée

  • Prend en charge les modèles de reclassement tels que gte-rerank-v2

  • l’authentification par clé API

Applications RAG souhaitant reclasser des candidats à l’aide de modèles de reclassement hébergés sur Alibaba Cloud

Hugging Face

Applications utilisant les modèles de similarité de phrases hébergés par Hugging Face

  • Utilise le fournisseur hébergé « hf-inference »

  • Sélectionne des modèles à partir du Hugging Face Hub

  • Calcule un score de similarité de phrases par candidat

  • Utilise l'authentification par clé API

Applications de recherche sémantique souhaitant reclasser des textes candidats à l’aide d’un modèle Hugging Face sans avoir à exploiter un service d’inférence distinct

Pour plus d'informations sur la mise en œuvre de chaque service de modèle, consultez la documentation dédiée :

Mise en œuvre

Avant de mettre en œuvre Model Ranker, assurez-vous de disposer des éléments suivants :

  • Une collection Milvus comportant un champ « VARCHAR » contenant le texte à reclasser

  • Un service de modèle externe en cours d’exécution et accessible depuis votre instance Milvus

  • Une connectivité réseau appropriée entre Milvus et le service de modèle de votre choix

Les « Model Rankers » s’intègrent de manière transparente aussi bien aux opérations de recherche vectorielle standard qu’aux opérations de recherche hybride. La mise en œuvre consiste à créer un objet Function qui définit votre configuration de reclassement, puis à le transmettre aux opérations de recherche.

Créer un « Model Ranker »

Pour implémenter le reclassement par modèle, définissez d’abord un objet Function avec la configuration appropriée. Dans cet exemple, nous utilisons TEI comme fournisseur de services :

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

Paramètre

Obligatoire ?

Description

Valeur / Exemple

name

Oui

Identifiant de votre fonction utilisé lors des recherches.

"semantic_ranker"

input_field_names

Oui

Nom du champ de texte à utiliser pour le reclassement.

Doit être un champ de type « VARCHAR ».

["document"]

function_type

Oui

Spécifie le type de fonction en cours de création.

Doit être défini sur « RERANK » pour tous les classements de modèles.

FunctionType.RERANK

params

Oui

Dictionnaire contenant la configuration de la fonction de reclassement basée sur un modèle. Les paramètres (clés) disponibles varient en fonction du fournisseur de services.

{...}

params.reranker

Oui

Doit être défini sur « "model" » pour activer le reclassement par modèle.

"model"

params.provider

Oui

Le fournisseur de services de modèles à utiliser pour le reclassement.

"tei"

params.queries

Oui

Liste des chaînes de requête utilisées par le modèle de reclassement pour calculer les scores de pertinence.

Le nombre de chaînes de requête doit correspondre exactement au nombre de requêtes de votre opération de recherche (même lorsque vous utilisez des vecteurs de requête à la place du texte), sinon une erreur sera signalée.

["search query"]

params.endpoint

Oui

URL du service de modèle.

"http://localhost:8080"

max_client_batch_size

Non

Nombre maximal de documents à traiter en un seul lot. Des valeurs plus élevées augmentent le débit mais nécessitent davantage de mémoire.

32 (par défaut)

Après avoir défini votre modèle de classement, vous pouvez l'appliquer lors des opérations de recherche en le transmettant au paramètre « 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

Traduit parDeepL

Essayez Milvus géré gratuitement

Zilliz Cloud est sans souci, propulsé par Milvus et 10 fois plus rapide.

Commencer
Feedback

Cette page a-t - elle été utile ?