DashScope Ranker
DashScope Ranker 支持 Milvus 调用 Alibaba Cloud DashScope reranking 模型,按语义相关性对搜索结果 Reranking。
Prerequisites
在使用 DashScope Ranker 前,请确保你已具备:
-
一个 Milvus Collection,其中包含用于 rerank 的文本的
VARCHAR字段。 -
有效的 DashScope API key。
-
可访问 DashScope reranking model,例如
gte-rerank-v2。
有关可用的 rerank models 和区域 endpoints,请参阅 Alibaba Cloud Model Studio Text Rerank API。
Configure credentials
在 Milvus 向 DashScope 请求 Reranking 之前,Milvus 必须知道你的 DashScope API key。你可以在 milvus.yaml 中配置 API key,也可以通过环境变量进行配置。
选项 1:Configuration file
将 API key 存储在 milvus.yaml 中,并将 DashScope rerank provider 指向该凭证标签。
# milvus.yaml
credential:
dashscope_apikey:
apikey: <YOUR_DASHSCOPE_API_KEY>
function:
rerank:
model:
providers:
ali:
credential: dashscope_apikey
# url: https://dashscope.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank
Option 2: Environment variable
如果在 milvus.yaml 中未配置匹配的凭据,Milvus 可以从以下环境变量读取 DashScope API key:
变量 | 是否必需? | 说明 |
|---|---|---|
| 是 | Milvus 服务调用 Alibaba Cloud DashScope 时使用的 DashScope API key。 |
Create a DashScope ranker function
要使用 DashScope Ranker,请创建一个 Function 对象,用于指定 DashScope reranking model 和查询文本。对于 DashScope reranking,请使用 provider: "ali"。
from pymilvus import Function, FunctionType
dashscope_ranker = Function(
name="dashscope_semantic_ranker",
input_field_names=["document"],
function_type=FunctionType.RERANK,
params={
"reranker": "model",
"provider": "ali",
"model_name": "gte-rerank-v2",
"queries": ["renewable energy developments"],
"max_client_batch_size": 128,
"credential": "dashscope_apikey",
},
)
DashScope ranker-specific parameters
参数 | 是否必需 | 说明 | 值 / 示例 |
|---|---|---|---|
| 是 | 必须设置为 |
|
| 是 | 用于 reranking 的模型服务提供方。对于 DashScope,请使用 |
|
| 是 | 要使用的 DashScope reranking 模型。 |
|
| 是 | 查询字符串列表,rerank 模型会使用这些字符串计算相关性分数。查询字符串的数量必须与 search 请求中的 query 数量一致。 |
|
| 否 | 每次请求发送到模型服务的最大文档数。 |
|
| 否 | 在 |
|
有关所有模型 ranker 共享的通用参数(例如 provider 和 queries),请参阅 创建模型 ranker。
应用于标准向量搜索
要将 DashScope Ranker 应用于标准向量搜索,请将 ranker Function 传入 search()。
results = client.search(
collection_name="your_collection",
data=[your_query_vector],
anns_field="dense_vector",
limit=5,
output_fields=["document"],
ranker=dashscope_ranker,
consistency_level="Bounded",
)