跳到主要内容
版本:BYOC 开发指南

Voyage AI Ranker

Voyage AI Ranker 利用 Voyage AI 的专业 Reranker,通过语义重排来提高搜索相关性。它提供了针对检索增强生成(RAG)和搜索应用程序优化的高性能重排功能。

Voyage AI Ranker 对于需要以下条件的应用程序特别有价值:

  • 通过专门为重排序任务训练的模型实现高级语义理解

  • 针对生产工作负载进行优化推理的高性能处理

  • 灵活的截断控制,用于处理不同长度的文档

  • 不同模型变体(rerank-2、rerank-lite等)的微调性能

前提条件

在 Zilliz Cloud 中实现 Voyage AI Ranker之前,请确保您具备以下条件:

  • 一个 Zilliz Cloud Collection,其中包含一个 VARCHAR 字段,该字段包含待重排序的文本

  • 一个有权限访问 Reranker 的有效 Voyage AI API 密钥。在 Voyage AI平台注册以获取您的 API 凭证。您可以选择以下方式之一:

    • 设置 VOYAGE_API_KEY 环境变量,或者

    • 直接在 Ranker 配置中指定 API 密钥

创建一个Voyage AI Ranker 函数

要在您的 Zilliz Cloud 应用程序中使用 Voyage AI Ranker,请创建一个 Function(函数)对象,该对象指定重排序应如何操作。此函数将被传递给Zilliz Cloud 搜索操作,以增强结果排序。

from pymilvus import MilvusClient, Function, FunctionType

# Connect to your Milvus server
client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT" # Replace with your Milvus server URI
)

# Configure Voyage AI Ranker
voyageai_ranker = Function(
name="voyageai_semantic_ranker", # Unique identifier for your ranker
input_field_names=["document"], # VARCHAR field containing text to rerank
function_type=FunctionType.RERANK, # Must be RERANK for reranking functions
params={
"reranker": "model", # Enables model-based reranking
"provider": "voyageai", # Specifies Voyage AI as the service provider
"model_name": "rerank-2.5", # Voyage AI reranker to use
"queries": ["renewable energy developments"], # Query text for relevance evaluation
"max_client_batch_size": 128, # Optional: batch size for model service requests (default: 128)
"truncation": True, # Optional: enable input truncation (default: True)
# "credential": "your-voyage-api-key" # Optional: if not set, uses VOYAGE_API_KEY env var
}
)

Voyage AI Ranker 特有参数

以下参数是 Voyage AI Ranker 特有的:

参数

必选?

描述

值 / 示例

reranker

必须设置为 "model" 才能启用模型重排序。

"model"

provider

用于重排序的模型服务提供商。

"voyageai"

model_name

要使用的 Voyage AI Reranker,来自Voyage AI 平台上支持的模型。

如需查看可用的 Reranker 列表,请参考 Voyage AI 文档

"rerank-2.5"

queries

重排序模型用来计算相关性得分的查询字符串列表。查询字符串的数量必须与搜索操作中的查询数量完全匹配(即使使用查询向量而非文本),否则将报错。

["search query"]

max_client_batch_size

由于模型服务可能无法一次性处理所有数据,因此这里设置了在多次请求中访问模型服务的批量大小。

128 (默认)

truncation

是否截断输入以满足查询和文档的“上下文长度限制”。

  • 如果为 True,查询和文档将被截断以适应上下文长度限制,然后再由重排器模型进行处理。

  • 如果为 False,当查询超过 rerank-2.5rerank-2.5-lite 的 8000 个 Token、rerank-2 的 4000 个 Token、rerank-2-litererank-1的 2000 个 Token、rerank-lite-1 的 1000 个 Token,或者查询中的标记数与任何单个文档中的标记数之和超过 rerank-2 的 16000 个 Token、rerank-2-litererank-1 的 8000 个 Token、rerank-lite-1 的 4000 个 Token 时,将引发错误。

True (默认) 或 False

credential

用于访问 Voyage AI API 服务的认证凭证。如果未指定,系统将查找 VOYAGE_API_KEY 环境变量。

"your-voyage-api-key"

📘注释

对于所有 Model Ranker 共享的通用参数(例如,providerqueries),请参考创建 Model Ranker

要将 Voyage AI Ranker 应用于标准向量搜索:

# Execute search with Voyage AI reranker
results = client.search(
collection_name="your_collection",
data=["AI Research Progress", "What is AI"], # Search queries
anns_field="dense_vector", # Vector field to search
limit=5, # Number of results to return
output_fields=["document"], # Include text field for reranking
# highlight-next-line
ranker=voyageai_ranker, # Apply Voyage AI reranker
consistency_level="Bounded"
)

Voyage AI Ranker 也可与混合搜索结合使用,以融合稠密和稀疏向量搜索:

from pymilvus import AnnSearchRequest

# Configure dense vector search
dense_search = AnnSearchRequest(
data=["AI Research Progress", "What is AI"],
anns_field="dense_vector",
param={},
limit=5
)

# Configure sparse vector search
sparse_search = AnnSearchRequest(
data=["AI Research Progress", "What is AI"],
anns_field="sparse_vector",
param={},
limit=5
)

# Execute hybrid search with Voyage AI reranker
hybrid_results = client.hybrid_search(
collection_name="your_collection",
[dense_search, sparse_search], # Multiple search requests
# highlight-next-line
ranker=voyageai_ranker, # Apply Voyage AI reranker to combined results
limit=5, # Final number of results
output_fields=["document"]
)