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

TEI Ranker

TEI Ranker 利用来自 Hugging Face 的文本嵌入推理(TEI)服务,通过语义重排序来提高搜索相关性。它代表了一种超越传统向量相似度的高级搜索结果排序方法。

前提条件

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

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

  • 具备重排序功能的正在运行的 TEI 服务。有关设置 TEI 服务的详细说明,请参阅 TEI 官方文档

创建一个 TEI Ranker 函数

要在您的 Zilliz Cloud 应用程序中使用 TEI 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 TEI Ranker
tei_ranker = Function(
name="tei_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": "tei", # Specifies TEI as the service provider
"queries": ["renewable energy developments"], # Query text for relevance evaluation
"endpoint": "http://localhost:8080", # Your TEI service URL
"max_client_batch_size": 32, # Optional: batch size for processing (default: 32)
"truncate": True, # Optional: Truncate the inputs that are longer than the maximum supported size
"truncation_direction": "Right", # Optional: Direction to truncate the inputs
}
)

TEI Ranker 特有参数

以下参数是 TEI Ranker 特有的:

参数

必选?

描述

值 / 示例

reranker

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

"model"

provider

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

"tei"

queries

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

["search query"]

endpoint

您的 TEI 服务URL。

"http://localhost:8080"

max_client_batch_size

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

32 (默认)

truncate

是否截断超过最大序列长度的输入。如果为 False,长输入将引发错误。

True or False

truncation_direction

输入过长时的截断方向:

  • "Right"(默认):从序列末尾移除标记,直到达到最大支持大小。

  • "Left":从序列开头移除标记。

"Right" or "Left"

📘注释

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

将 TEI Ranker 应用于标准向量搜索:

# Execute search with vLLM reranking
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=tei_ranker, # Apply tei reranking
consistency_level="Bounded"
)

TEI 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 vLLM reranking
hybrid_results = client.hybrid_search(
collection_name="your_collection",
[dense_search, sparse_search], # Multiple search requests
# highlight-next-line
ranker=tei_ranker, # Apply tei reranking to combined results
limit=5, # Final number of results
output_fields=["document"]
)