Classeur SiliconFlowCompatible with Milvus 2.6.x

Le SiliconFlow Ranker s'appuie sur les modèles complets de reranking de SiliconFlow pour améliorer la pertinence des recherches grâce au reranking sémantique. Il offre des capacités flexibles de découpage des documents et prend en charge une large gamme de modèles de classement spécialisés provenant de divers fournisseurs.

SiliconFlow Ranker est particulièrement utile pour les applications qui nécessitent :

  • un découpage avancé des documents avec un chevauchement configurable pour traiter les longs documents

  • L'accès à divers modèles de repositionnement, y compris la série BAAI/bge-reranker et d'autres modèles spécialisés.

  • Une notation flexible basée sur les morceaux, où le morceau ayant obtenu le meilleur score représente le score du document.

  • Reranking rentable grâce à la prise en charge des variantes du modèle standard et du modèle pro.

Conditions préalables

Avant de mettre en œuvre SiliconFlow Ranker dans Milvus, assurez-vous que vous disposez des éléments suivants

  • une collection Milvus avec un champ VARCHAR contenant le texte à reclasser

  • Une clé API SiliconFlow valide avec accès aux modèles de reranking. Inscrivez-vous sur la plateforme SiliconFlow pour obtenir vos identifiants API. Vous pouvez soit :

    • définir la variable d'environnement SILICONFLOW_API_KEY, ou

    • Spécifier la clé API directement dans la configuration du ranker.

Créer une fonction SiliconFlow Ranker

Pour utiliser SiliconFlow Ranker dans votre application Milvus, créez un objet Function qui spécifie le mode de fonctionnement du reclassement. Cette fonction sera transmise aux opérations de recherche Milvus pour améliorer le classement des résultats.

from pymilvus import MilvusClient, Function, FunctionType

# Connect to your Milvus server
client = MilvusClient(
    uri="http://localhost:19530"  # Replace with your Milvus server URI
)

# Configure SiliconFlow Ranker
siliconflow_ranker = Function(
    name="siliconflow_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": "siliconflow",          # Specifies SiliconFlow as the service provider
        "model_name": "BAAI/bge-reranker-v2-m3", # SiliconFlow reranking model to use
        "queries": ["renewable energy developments"], # Query text for relevance evaluation
        "max_client_batch_size": 128,       # Optional: batch size for model service requests (default: 128)
        "max_chunks_per_doc": 5,            # Optional: max chunks per document for supported models
        "overlap_tokens": 50,               # Optional: token overlap between chunks for supported models
        # "credential": "your-siliconflow-api-key" # Optional: if not set, uses SILICONFLOW_API_KEY env var
    }
)
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("siliconflow_semantic_ranker")
                       .inputFieldNames(Collections.singletonList("document"))
                       .param("reranker", "model")
                       .param("provider", "siliconflow")
                       .param("model_name", "BAAI/bge-reranker-v2-m3")
                       .param("queries", "[\"renewable energy developments\"]")
                       .param("endpoint", "http://localhost:8080")
                       .param("max_client_batch_size", "32")
                       .param("max_chunks_per_doc", "5")
                       .param("overlap_tokens", "50")
                       .build();
// nodejs
// go
# restful

Paramètres spécifiques au classeur SiliconFlow

Les paramètres suivants sont spécifiques au classificateur SiliconFlow :

Paramètre

Nécessaire ?

Description du paramètre

Valeur / Exemple

reranker

Oui

Doit être défini sur "model" pour activer le reclassement des modèles.

"model"

provider

Oui

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

"siliconflow"

model_name

Oui

Le modèle de reclassement SiliconFlow à utiliser parmi les modèles pris en charge sur la plateforme SiliconFlow.

Pour obtenir la liste des modèles de reclassement disponibles, reportez-vous à la documentation SiliconFlow.

"BAAI/bge-reranker-v2-m3"

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 dans votre opération de recherche (même si vous utilisez des vecteurs de requête au lieu de texte), sinon une erreur sera signalée.

["search query"]

max_client_batch_size

Non

Étant donné que les services de modélisation peuvent ne pas traiter toutes les données en même temps, cette option définit la taille du lot pour l'accès au service de modélisation en plusieurs requêtes.

128 (par défaut)

max_chunks_per_doc

Non

Nombre maximal de morceaux générés à partir d'un document. Les documents longs sont divisés en plusieurs morceaux pour le calcul, et le score le plus élevé parmi les morceaux est considéré comme le score du document. Pris en charge uniquement par certains modèles : BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, et netease-youdao/bce-reranker-base_v1.

5, 10

overlap_tokens

Non

Nombre de chevauchements de jetons entre les blocs adjacents lorsque les documents sont divisés en blocs. Cela permet d'assurer la continuité à travers les limites des morceaux pour une meilleure compréhension sémantique. Pris en charge uniquement par des modèles spécifiques : BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, et netease-youdao/bce-reranker-base_v1.

50

credential

Non

Certificat d'authentification pour l'accès aux services API de SiliconFlow. S'il n'est pas spécifié, le système recherchera la variable d'environnement SILICONFLOW_API_KEY.

"your-siliconflow-api-key" (votre clé Siliconflow-api)

Prise en charge des fonctionnalités spécifiques au modèle: Les paramètres max_chunks_per_doc et overlap_tokens ne sont pris en charge que par certains modèles. Lors de l'utilisation d'autres modèles, ces paramètres seront ignorés.

Pour les paramètres généraux partagés par tous les classeurs de modèles (par exemple, provider, queries), reportez-vous à la section Créer un classeur de modèles.

Pour appliquer SiliconFlow Ranker à une recherche vectorielle standard :

# Execute search with SiliconFlow 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=siliconflow_ranker,                  # Apply SiliconFlow 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

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