# 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, Cohere und Jina AI 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
,Jina
.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:
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 istrerank-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)
# Jina AI Rerank
Das Setzen des provider
-Parameters auf Jina
in Rerank
verwendet die Jina AI Rerank API (opens new window) für das Neuranking.
Anbieterspezifische Parameter
base_url
: Jina AI Rerank API URL. Optional. Standardwert ist https://api.jina.ai/v1/rerank (opens new window)api_key
: Jina AI API-Schlüssel. Erforderlich.others
:model
: Modell-ID, die verwendet werden soll. Optional. Standardwert istjina-reranker-v1-base-en
Beispiele
Verwendung der Standardwerte:
SELECT Rerank('Query', ['doc', ...], TOP_K, 'Jina', '', 'JINAAI_API_KEY', '')
Verwendung benutzerdefinierter Werte:
SELECT Rerank('Query', ['doc', ...], TOP_K, 'Jina', 'YOUR_RERANK_API_URL', 'JINAAI_API_KEY', '{"model":"MODEL_ID"}')
Vereinfachte Verwendung mit benutzerdefinierter Funktion:
CREATE FUNCTION JinaAIRerank ON CLUSTER '{cluster}' AS (x,y,z) -> Rerank(x, y, z, 'Jina', 'YOUR_RERANK_API_URL', 'JINAAI_API_KEY', '')
SELECT JinaAIRerank('Query', ['doc', ...], TOP_K)