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 搜索操作,以增强结果排序。
- Python
 - Java
 - NodeJS
 - Go
 - cURL
 
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
    }
)
// java
// nodejs
// go
# restful
TEI Ranker 特有参数
以下参数是 TEI Ranker 特有的:
参数  | 必选?  | 描述  | 值 / 示例  | 
|---|---|---|---|
  | 是  | 必须设置为  | 
  | 
  | 是  | 用于重排序的模型服务提供商。  | 
  | 
  | 是  | 重排模型用于计算相关性得分的查询字符串列表。查询字符串的数量必须与搜索操作中的查询数量完全匹配(即使使用查询向量而非文本),否则将报错。  | ["search query"]  | 
  | 是  | 您的 TEI 服务URL。  | |
  | 否  | 由于模型服务可能无法一次性处理所有数据,因此这设置了在多个请求中访问模型服务的批量大小。  | 
  | 
  | 否  | 是否截断超过最大序列长度的输入。如果为   | 
  | 
  | 否  | 输入过长时的截断方向: 
  | 
  | 
对于所有 Model Ranker 共享的通用参数(例如,provider、queries),请参考创建 Model Ranker。
在标准向量搜索中使用
将 TEI Ranker 应用于标准向量搜索:
- Python
 - Java
 - NodeJS
 - Go
 - cURL
 
# 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"
)
// java
// nodejs
// go
# restful
在混合搜索中使用
TEI Ranker 也可与混合搜索结合使用,以融合稠密和稀疏搜索:
- Python
 - Java
 - NodeJS
 - Go
 - cURL
 
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"]
)
// java
// nodejs
// go
# restful