Clasificador SiliconFlowCompatible with Milvus 2.6.x

El clasificador SiliconFlow aprovecha los completos modelos de reordenación de SiliconFlow para mejorar la relevancia de las búsquedas mediante la reordenación semántica. Proporciona capacidades flexibles de fragmentación de documentos y admite una amplia gama de modelos de reordenación especializados de diversos proveedores.

SiliconFlow Ranker es particularmente valioso para aplicaciones que requieren:

  • Chunking avanzado de documentos con solapamiento configurable para el manejo de documentos largos.

  • Acceso a diversos modelos de reordenación, incluida la serie BAAI/bge-reranker y otros modelos especializados

  • Puntuación flexible basada en trozos, en la que el trozo de mayor puntuación representa la puntuación del documento.

  • Reranking rentable con soporte para variantes de modelos estándar y pro.

Requisitos previos

Antes de implementar SiliconFlow Ranker en Milvus, asegúrese de que dispone de:

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

  • Una clave API SiliconFlow válida con acceso a los modelos reranking. Regístrese en la plataforma de SiliconFlow para obtener sus credenciales API. Puede:

    • Establecer la variable de entorno SILICONFLOW_API_KEY, o

    • Especificar la clave API directamente en la configuración del ranker

Crear una función SiliconFlow ranker

Para utilizar SiliconFlow Ranker en su aplicación Milvus, cree un objeto Function que especifique cómo debe operar el reranking. Esta función se pasará a las operaciones de búsqueda de Milvus para mejorar la clasificación de los resultados.

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

Parámetros específicos del ranker SiliconFlow

Los siguientes parámetros son específicos del clasificador SiliconFlow:

Parámetro

¿Requerido?

Descripción

Valor / Ejemplo

reranker

Debe establecerse en "model" para habilitar la reordenación de modelos.

"model"

provider

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

"siliconflow"

model_name

El modelo SiliconFlow reranking a utilizar de los modelos soportados en la plataforma SiliconFlow.

Para obtener una lista de los modelos de reordenación disponibles, consulte la documentación de SiliconFlow.

"BAAI/bge-reranker-v2-m3"

queries

Lista de cadenas de consulta utilizadas por el modelo de clasificació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 utilizan vectores de consulta en lugar de texto); de lo contrario, se notificará un error.

["consulta de búsqueda"]

max_client_batch_size

No

Dado que los servicios modelo pueden no procesar todos los datos a la vez, esto establece el tamaño del lote para acceder al servicio modelo en múltiples peticiones.

128 (por defecto)

max_chunks_per_doc

No

Número máximo de chunks generados dentro de un documento. Los documentos largos se dividen en varios trozos para el cálculo, y la puntuación más alta entre los trozos se toma como la puntuación del documento. Sólo se admite en determinados modelos: BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, y netease-youdao/bce-reranker-base_v1.

5, 10

overlap_tokens

No

Número de tokens que se solapan entre trozos adyacentes cuando los documentos están divididos en trozos. Esto garantiza la continuidad a través de los límites de los trozos para una mejor comprensión semántica. Sólo se admite en determinados modelos: BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, y netease-youdao/bce-reranker-base_v1.

50

credential

No

Credencial de autenticación para acceder a los servicios de la API SiliconFlow. Si no se especifica, el sistema buscará la variable de entorno SILICONFLOW_API_KEY.

"su-siliconflow-api-key"

Soporte de características específicas del modelo: Los parámetros max_chunks_per_doc y overlap_tokens sólo son compatibles con modelos específicos. Cuando se utilicen otros modelos, estos parámetros serán ignorados.

Para conocer los parámetros generales compartidos por todos los clasificadores de modelos (por ejemplo, provider, queries), consulte Crear un clasificador de modelos.

Para aplicar SiliconFlow Ranker a una búsqueda vectorial estándar:

# 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

¿Fue útil esta página?