# 再順位付け関数
注意
この機能はバージョン1.2.1から利用可能です。
MyScaleのRerank
関数は、クエリとの意味的な類似性に基づいて検索結果の関連性を高め、検索補完生成(RAG)におけるコストを削減するために、検索結果の順序を再配置します。これにより、望ましくない結果を除去し、検索の精度をさらに向上させます。HuggingFace、Amazon SageMaker、Cohere、Jina AI などのプロバイダをサポートし、特定のニーズに最適なプロバイダを選択する柔軟性を提供します。
構文
Rerank(query, documents, top_k, provider, base_url, api_key, others)
引数
query
(String
): 検索クエリ、空でない文字列。documents
(Array(String)
): 再順位付けするドキュメントの文字列のリスト。top_k
(UInt32
): 最も関連性の高いドキュメントの数。provider
(String
): 再順位付けモデルのプロバイダである必要があります。大文字小文字を区別しない -HuggingFace
、SageMaker
、Cohere
、Jina
のいずれかである必要があります。base_url
(String
): プロバイダの再順位付けAPIのURL、一部の場合はオプションです。api_key
(String
): 非空の再順位付けAPIキーで認証します。others
(String
): JSONマップとして提供する他のプロバイダ固有のパラメータ。詳細はそれぞれの説明に記載されています。
返される値
- Rerank関数から返される値は、タプルの配列であり、各タプルは3つの要素(インデックス、ドキュメントのテキスト、スコア)で構成されています。この配列はスコアに基づいて降順でソートされており、クエリに最も関連性の高いドキュメントが最初にリストされます。各タプルのインデックスは、入力配列内のドキュメントの元の位置に対応しており、簡単に参照することができます。
- 型
Array(Tuple(UInt32, String, Float32))
。
# HuggingFace Rerank
Rerank
のprovider
パラメータをHuggingFace
に設定すると、再順位付けにHuggingFaceのInference API (opens new window)またはInference Endpoint (opens new window)が使用されます。
注意: この機能は、特定の入力および出力形式を持つAPI向けに特別に設計されています。期待される入力形式は、"inputs"配列を含むJSONオブジェクトであり、各要素には"text"(クエリ)と"text_pair"(ドキュメント)が含まれています。APIからの出力は、"score"キーと可能な他のデータを持つオブジェクトのリストであることが予想されます。これらの出力は、"inputs"配列内の対応するペアに対応する順序で配置され、各出力スコアは対応する入力要素に関連付けられます。
例えば、サンプルの入力は次のようになります:
{
"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."}
]
}
対応する出力は次のようになります:
[
[
{
"score": 5.5232932936633006e-05
}
],
[
{
"score": 0.6181288361549377
}
]
]
HuggingFaceのモデル、例えばBAAI/bge-reranker-base (opens new window)やamberoad/bert-multilingual-passage-reranking-msmarco (opens new window)と互換性があります。
プロバイダ固有のパラメータ
base_url
: HuggingFace再順位付けAPIのURL。必須です。api_key
: HuggingFace APIキー。必須です。others
:model_args
: 使用しているHuggingFaceモデルに固有のオプションパラメータ。オプションです。
例
デフォルト値を使用する場合:
SELECT Rerank('Query', ['doc', ...], TOP_K, 'HuggingFace', 'HUGGINGFACE_ENDPOINT', 'HUGGINGFACE_API_KEY', '')
カスタム値を使用する場合:
SELECT Rerank('Query', ['doc', ...], TOP_K, 'HuggingFace', 'HUGGINGFACE_ENDPOINT', 'HUGGINGFACE_API_KEY', '{"model_args": {"parameters":{"truncation":true}}}')
カスタム関数を使用した簡略化された使用方法:
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
Rerank
のprovider
パラメータをSageMaker
に設定すると、再順位付けにAmazon SageMakerエンドポイント (opens new window)が使用されます。
注意: このプロバイダは、Amazon SageMakerに展開されたモデルに特化しており、HuggingFaceの再順位付けモデルと同じ入力および出力形式を必要とします。
これらの仕様に準拠するモデルは、HuggingFaceで見つけることができます。例えば、BAAI/bge-reranker-base (opens new window)です。また、以下の図に示すように、SageMakerのデプロイコードにアクセスすることもできます:
プロバイダ固有のパラメータ
base_url
: SageMakerエンドポイント名。必須です。api_key
: AWS secret_access_key。必須です。others
:access_key_id
: AWS access_key_id。必須です。region_name
: AWSリージョン名。必須です。model_args
: 使用しているSageMakerエンドポイントに固有のオプションパラメータ。オプションです。
例
デフォルト値を使用する場合:
SELECT Rerank('Query', ['doc', ...], TOP_K, 'SageMaker', 'SAGEMAKER_ENDPOINT', 'AWS_ACCESS_KEY', '{"region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID"}')
カスタム値を使用する場合:
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}}}')
カスタム関数を使用した簡略化された使用方法:
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
Rerank
のprovider
パラメータをCohere
に設定すると、再順位付けにCohere Rerank API (opens new window)が使用されます。
プロバイダ固有のパラメータ
base_url
: Cohere再順位付けAPIのURL。オプションです。デフォルト値はhttps://api.cohere.ai/v1/rerank (opens new window)です。api_key
: Cohere APIキー。必須です。others
:model
: 使用するモデルID。オプションです。デフォルト値はrerank-english-v2.0
です。max_chunks_per_doc
: ドキュメントから内部的に生成するチャンクの最大数。オプションです。
例
デフォルト値を使用する場合:
SELECT Rerank('Query', ['doc', ...], TOP_K, 'Cohere', '', 'COHERE_API_KEY', '')
カスタム値を使用する場合:
SELECT Rerank('Query', ['doc', ...], TOP_K, 'Cohere', 'YOUR_RERANK_API_URL', 'COHERE_API_KEY', '{"model":"MODEL_ID", "max_chunks_per_doc":CHUNK_NUMBER}')
カスタム関数を使用した簡略化された使用方法:
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
provider
パラメータをJina
に設定すると、リランキングのためにJina AI Rerank API (opens new window)が使用されます。
プロバイダー固有のパラメーター
base_url
: Jina AI Rerank APIのURL。オプション。デフォルト値はhttps://api.jina.ai/v1/rerank (opens new window)api_key
: Jina AIのAPIキー。必須。others
:model
: 使用するモデルID。オプション。デフォルト値はjina-reranker-v1-base-en
例
デフォルト値を使用:
SELECT Rerank('Query', ['doc', ...], TOP_K, 'Jina', '', 'JINAAI_API_KEY', '')
カスタム値を使用:
SELECT Rerank('Query', ['doc', ...], TOP_K, 'Jina', 'YOUR_RERANK_API_URL', 'JINAAI_API_KEY', '{"model":"MODEL_ID"}')
カスタム関数を使用した簡略化:
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)