# 重新排序函数
注意
此功能从版本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
):提供者的Rerank API URL,某些情况下可选。api_key
(String
):非空的Rerank API密钥用于身份验证。others
(String
):应提供为JSON映射的其他特定于提供者的参数。详细信息在各自的描述中提供。
返回值
- Rerank函数的返回值是一个元组数组,每个元组由三个元素组成:索引、文档文本和分数。该数组根据分数按降序排序,确保与查询最相关的文档首先列出。每个元组的索引对应于输入数组中文档的原始位置,便于引用。
- 类型
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"(文档在documents中)。预期的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
}
]
]
兼容的模型有BAAI/bge-reranker-base (opens new window)和amberoad/bert-multilingual-passage-reranking-msmarco (opens new window)。
提供者特定参数
base_url
:HuggingFace Rerank 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 Endpoints (opens new window)进行重新排序。
注意:此提供者专为在Amazon SageMaker上部署的模型设计,需要与HuggingFace重新排序模型使用的输入和输出格式相同。
您可以在HuggingFace上找到符合这些规范的模型,例如BAAI/bge-reranker-base (opens new window)。此外,您可以访问SageMaker部署代码,如下图所示:
提供者特定参数
base_url
:SageMaker Endpoint名称。必填。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 Rerank 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
将 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 密钥。必填。其他
: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)