# 再順位付け関数

注意

この機能はバージョン1.2.1から利用可能です。

MyScaleのRerank関数は、クエリとの意味的な類似性に基づいて検索結果の関連性を高め、検索補完生成(RAG)におけるコストを削減するために、検索結果の順序を再配置します。これにより、望ましくない結果を除去し、検索の精度をさらに向上させます。HuggingFaceAmazon SageMakerCohereなどのプロバイダをサポートし、特定のニーズに最適なプロバイダを選択する柔軟性を提供します。

構文

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

引数

  • query (String): 検索クエリ、空でない文字列。
  • documents (Array(String)): 再順位付けするドキュメントの文字列のリスト。
  • top_k (UInt32): 最も関連性の高いドキュメントの数。
  • provider (String): 再順位付けモデルのプロバイダである必要があります。大文字小文字を区別しない - HuggingFaceSageMakerCohereのいずれかである必要があります。
  • base_url (String): プロバイダの再順位付けAPIのURL、一部の場合はオプションです。
  • api_key (String): 非空の再順位付けAPIキーで認証します。
  • others (String): JSONマップとして提供する他のプロバイダ固有のパラメータ。詳細はそれぞれの説明に記載されています。

返される値

  • Rerank関数から返される値は、タプルの配列であり、各タプルは3つの要素(インデックス、ドキュメントのテキスト、スコア)で構成されています。この配列はスコアに基づいて降順でソートされており、クエリに最も関連性の高いドキュメントが最初にリストされます。各タプルのインデックスは、入力配列内のドキュメントの元の位置に対応しており、簡単に参照することができます。
  • Array(Tuple(UInt32, String, Float32))

# HuggingFace Rerank

Rerankproviderパラメータを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

RerankproviderパラメータをSageMakerに設定すると、再順位付けにAmazon SageMakerエンドポイント (opens new window)が使用されます。

注意: このプロバイダは、Amazon SageMakerに展開されたモデルに特化しており、HuggingFaceの再順位付けモデルと同じ入力および出力形式を必要とします。

これらの仕様に準拠するモデルは、HuggingFaceで見つけることができます。例えば、BAAI/bge-reranker-base (opens new window)です。また、以下の図に示すように、SageMakerのデプロイコードにアクセスすることもできます:

sagemaker-deploy

プロバイダ固有のパラメータ

  • 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

Rerankproviderパラメータを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)