# Funciones de Reordenamiento

NOTA

Esta función está disponible a partir de la versión 1.2.1.

La función Rerank en MyScale mejora la relevancia de los resultados de búsqueda reordenándolos en función de su similitud semántica con una consulta, mejorando aún más la precisión de recuperación y reduciendo el costo en la generación con recuperación mejorada (RAG) al eliminar resultados no deseados. Admite proveedores como HuggingFace, Amazon SageMaker y Cohere, ofreciendo flexibilidad para elegir el proveedor más adecuado para necesidades específicas.

Sintaxis

Rerank(query, documents, top_k, provider, base_url, api_key, others)

Argumentos

  • query (String): La consulta de búsqueda, una cadena no vacía.
  • documents (Array(String)): Una lista de cadenas de documentos para reordenar.
  • top_k (UInt32): El número de documentos más relevantes que se devolverán.
  • provider (String): Debe ser uno de los siguientes proveedores de modelos de reordenamiento, sin distinguir mayúsculas y minúsculas: HuggingFace, SageMaker, Cohere.
  • base_url (String): URL de la API de reordenamiento del proveedor, opcional para algunos.
  • api_key (String): Clave de API de reordenamiento no vacía para la autenticación.
  • others (String): Parámetros adicionales específicos del proveedor que deben proporcionarse como un mapa JSON. Los detalles se proporcionan en sus respectivas descripciones.

Valor devuelto

  • El valor devuelto de la función Rerank es una matriz de tuplas, cada tupla consta de tres elementos: el índice, el texto del documento y la puntuación. Esta matriz se ordena en orden descendente según la puntuación, asegurando que los documentos más relevantes para la consulta se enumeren primero. El índice de cada tupla corresponde a la posición original del documento en la matriz de entrada, lo que permite una fácil referencia.
  • Tipo Array(Tuple(UInt32, String, Float32)).

# HuggingFace Rerank

Establecer el parámetro provider en HuggingFace en Rerank utiliza la API de Inferencia de HuggingFace (opens new window) o el Punto final de Inferencia de HuggingFace (opens new window) para el reordenamiento.

Nota: Esta función está diseñada específicamente para API con formatos de entrada y salida particulares. El formato de entrada esperado es un objeto JSON con una matriz "inputs", donde cada elemento contiene un "text" (consulta) y "text_pair" (documento en documentos). Se espera que la salida de la API sea una lista de objetos, cada uno con una clave "score" y posiblemente otros datos. Estas salidas se organizan en el orden correspondiente a sus respectivos pares en la matriz "inputs", donde cada puntuación de salida se asocia con el elemento de entrada respectivo.

Por ejemplo, una entrada de muestra podría ser:

{
  "inputs": [
    {"text": "what is a panda?", "text_pair": "hi."},
    {"text": "what is a panda?", "text_pair": "Giant panda is characterized by its bold black-and-white coat and rotund body."}
  ]
}

La salida correspondiente sería:

[
    [
        {
            "score": 5.5232932936633006e-05
        }
    ],
    [
        {
            "score": 0.6181288361549377
        }
    ]
]

Los modelos como BAAI/bge-reranker-base (opens new window) y amberoad/bert-multilingual-passage-reranking-msmarco (opens new window) son compatibles.

Parámetros específicos del proveedor

  • base_url: URL de la API de reordenamiento de HuggingFace. Requerido.
  • api_key: Clave de API de HuggingFace. Requerido.
  • others :
    • model_args: Parámetros opcionales específicos del modelo de HuggingFace que se está utilizando.

Ejemplos

Usando valores predeterminados:

SELECT Rerank('Query', ['doc', ...], TOP_K, 'HuggingFace', 'HUGGINGFACE_ENDPOINT', 'HUGGINGFACE_API_KEY', '')

Usando valores personalizados:

SELECT Rerank('Query', ['doc', ...], TOP_K, 'HuggingFace', 'HUGGINGFACE_ENDPOINT', 'HUGGINGFACE_API_KEY', '{"model_args": {"parameters":{"truncation":true}}}')

Uso simplificado con función personalizada:

CREATE FUNCTION HuggingFaceRerank ON CLUSTER '{cluster}' AS (x,y,z) -> Rerank(x, y, z, 'HuggingFace', 'HUGGINGFACE_ENDPOINT', 'HUGGINGFACE_API_KEY', '')
SELECT HuggingFaceRerank('Query', ['doc', ...], TOP_K)

# Amazon SageMaker Rerank

Establecer el parámetro provider en SageMaker en Rerank utiliza los Puntos finales de Amazon SageMaker (opens new window) para el reordenamiento.

Nota: Este proveedor está diseñado específicamente para modelos implementados en Amazon SageMaker, que requieren formatos de entrada y salida idénticos a los utilizados por los modelos de reordenamiento de HuggingFace.

Puede encontrar modelos que cumplen con estas especificaciones en HuggingFace, como BAAI/bge-reranker-base (opens new window). Además, puede acceder al código de implementación de SageMaker como se ilustra en la siguiente imagen:

sagemaker-deploy

Parámetros específicos del proveedor

  • base_url: Nombre del punto final de SageMaker. Requerido.
  • api_key: AWS secret_access_key. Requerido.
  • others:
    • access_key_id: AWS access_key_id. Requerido.
    • region_name: Nombre de la región de AWS. Requerido.
    • model_args: Parámetros opcionales específicos del punto final de SageMaker que se está utilizando.

Ejemplos

Usando valores predeterminados:

SELECT Rerank('Query', ['doc', ...], TOP_K, 'SageMaker', 'SAGEMAKER_ENDPOINT', 'AWS_ACCESS_KEY', '{"region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID"}')

Usando valores personalizados:

SELECT Rerank('Query', ['doc', ...], TOP_K, 'SageMaker', 'SAGEMAKER_ENDPOINT', 'SAGEMAKER_API_KEY', '{"region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID", "model_args": {"parameters":{"truncation":true}}}')

Uso simplificado con función personalizada:

CREATE FUNCTION SageMakerRerank ON CLUSTER '{cluster}' AS (x,y,z) -> Rerank(x, y, z, 'SageMaker', 'SAGEMAKER_ENDPOINT', 'SAGEMAKER_API_KEY', '{"region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID"}')
SELECT SageMakerRerank('Query', ['doc', ...], TOP_K)

# Cohere Rerank

Establecer el parámetro provider en Cohere en Rerank utiliza la API de reordenamiento de Cohere (opens new window) para el reordenamiento.

Parámetros específicos del proveedor

  • base_url: URL de la API de reordenamiento de Cohere. Opcional. El valor predeterminado es https://api.cohere.ai/v1/rerank (opens new window)
  • api_key: Clave de API de Cohere. Requerido.
  • others:
    • model: ID del modelo a utilizar. Opcional. El valor predeterminado es rerank-english-v2.0
    • max_chunks_per_doc: El número máximo de fragmentos que se generarán internamente a partir de un documento. Opcional.

Ejemplos

Usando valores predeterminados:

SELECT Rerank('Query', ['doc', ...], TOP_K, 'Cohere', '', 'COHERE_API_KEY', '')

Usando valores personalizados:

SELECT Rerank('Query', ['doc', ...], TOP_K, 'Cohere', 'YOUR_RERANK_API_URL', 'COHERE_API_KEY', '{"model":"MODEL_ID", "max_chunks_per_doc":CHUNK_NUMBER}')

Uso simplificado con función personalizada:

CREATE FUNCTION CohereRerank ON CLUSTER '{cluster}' AS (x,y,z) -> Rerank(x, y, z, 'Cohere', 'YOUR_RERANK_API_URL', 'COHERE_API_KEY', '')
SELECT CohereRerank('Query', ['doc', ...], TOP_K)