# Reranking-Funktionen

HINWEIS

Diese Funktion ist ab Version 1.2.1 verfügbar.

Die Rerank-Funktion in MyScale verbessert die Relevanz von Suchergebnissen, indem sie sie basierend auf ihrer semantischen Ähnlichkeit zu einer Abfrage neu ordnet. Dadurch wird die Genauigkeit der Abfrage verbessert und die Kosten bei der abfragegestützten Generierung (RAG) durch das Entfernen unerwünschter Ergebnisse reduziert. Sie unterstützt Anbieter wie HuggingFace, Amazon SageMaker und Cohere und bietet Flexibilität bei der Auswahl des am besten geeigneten Anbieters für spezifische Anforderungen.

Syntax

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

Argumente

  • query (String): Die Suchanfrage, nicht leerer String.
  • documents (Array(String)): Eine Liste von Dokumentzeichenketten, die neu geordnet werden sollen.
  • top_k (UInt32): Die Anzahl der relevantesten Dokumente, die zurückgegeben werden sollen.
  • provider (String): Muss einer der folgenden Rerank-Modellanbieter sein, Groß-/Kleinschreibung wird nicht beachtet - HuggingFace, SageMaker, Cohere.
  • base_url (String): Rerank-API-URL des Anbieters, optional für einige Anbieter.
  • api_key (String): Nicht leerer Rerank-API-Schlüssel zur Authentifizierung.
  • others (String): Weitere anbieterspezifische Parameter, die als JSON-Map bereitgestellt werden sollten. Details dazu finden Sie in den entsprechenden Beschreibungen.

Rückgabewert

  • Der Rückgabewert der Rerank-Funktion ist ein Array von Tupeln, wobei jedes Tupel aus drei Elementen besteht: dem Index, dem Dokumenttext und der Punktzahl. Dieses Array ist absteigend nach der Punktzahl sortiert, um sicherzustellen, dass die Dokumente, die am relevantesten für die Abfrage sind, zuerst aufgelistet werden. Der Index jedes Tupels entspricht der ursprünglichen Position des Dokuments im Eingabe-Array, was eine einfache Referenzierung ermöglicht.
  • Typ Array(Tuple(UInt32, String, Float32)).

# HuggingFace Rerank

Wenn der provider-Parameter in Rerank auf HuggingFace gesetzt ist, wird die HuggingFace Inference API (opens new window) oder Inference Endpoint (opens new window) zur Neuanordnung verwendet.

Hinweis: Diese Funktion ist speziell für APIs mit bestimmten Eingabe- und Ausgabeformaten konzipiert. Das erwartete Eingabeformat ist ein JSON-Objekt mit einem "inputs"-Array, bei dem jedes Element einen "text" (Abfrage) und "text_pair" (Dokument in den Dokumenten) enthält. Die Ausgabe der API wird als Liste von Objekten erwartet, von denen jedes einen "score"-Schlüssel und möglicherweise andere Daten enthält. Diese Ausgaben werden in der Reihenfolge angeordnet, die ihren jeweiligen Paaren im "inputs"-Array entspricht, wobei jeder Ausgabewert mit dem entsprechenden Eingabeelement verknüpft ist.

Beispiel für eine Eingabe:

{
  "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."}
  ]
}

Die entsprechende Ausgabe wäre:

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

Modelle wie BAAI/bge-reranker-base (opens new window) und amberoad/bert-multilingual-passage-reranking-msmarco (opens new window) sind kompatibel.

Anbieterspezifische Parameter

  • base_url: HuggingFace Rerank-API-URL. Erforderlich.
  • api_key: HuggingFace-API-Schlüssel. Erforderlich.
  • others :
    • model_args: Optionale Parameter, die spezifisch für das verwendete HuggingFace-Modell sind.

Beispiele

Verwendung der Standardwerte:

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

Verwendung benutzerdefinierter Werte:

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

Vereinfachte Verwendung mit benutzerdefinierter Funktion:

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

Wenn der provider-Parameter in Rerank auf SageMaker gesetzt ist, wird Amazon SageMaker Endpoints (opens new window) zur Neuanordnung verwendet.

Hinweis: Dieser Anbieter ist speziell für Modelle konzipiert, die auf Amazon SageMaker bereitgestellt werden und Eingabe- und Ausgabeformate erfordern, die identisch mit denen der HuggingFace-Rerank-Modelle sind.

Modelle, die diesen Spezifikationen entsprechen, finden Sie auf HuggingFace, wie z.B. BAAI/bge-reranker-base (opens new window). Darüber hinaus können Sie auf den SageMaker-Bereitstellungscode zugreifen, wie im folgenden Bild dargestellt:

sagemaker-deploy

Anbieterspezifische Parameter

  • base_url: SageMaker-Endpunktname. Erforderlich.
  • api_key: AWS secret_access_key. Erforderlich.
  • others:
    • access_key_id: AWS access_key_id. Erforderlich.
    • region_name: AWS-Regionsname. Erforderlich.
    • model_args: Optionale Parameter, die spezifisch für den verwendeten SageMaker-Endpunkt sind.

Beispiele

Verwendung der Standardwerte:

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

Verwendung benutzerdefinierter Werte:

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}}}')

Vereinfachte Verwendung mit benutzerdefinierter Funktion:

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

Wenn der provider-Parameter in Rerank auf Cohere gesetzt ist, wird die Cohere Rerank API (opens new window) zur Neuanordnung verwendet.

Anbieterspezifische Parameter

  • base_url: Cohere Rerank-API-URL. Optional. Standardwert ist https://api.cohere.ai/v1/rerank (opens new window)
  • api_key: Cohere-API-Schlüssel. Erforderlich.
  • others:
    • model: Zu verwendende Modell-ID. Optional. Standardwert ist rerank-english-v2.0
    • max_chunks_per_doc: Die maximale Anzahl von Chunks, die intern aus einem Dokument erzeugt werden sollen. Optional.

Beispiele

Verwendung der Standardwerte:

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

Verwendung benutzerdefinierter Werte:

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

Vereinfachte Verwendung mit benutzerdefinierter Funktion:

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)