跳转至

Reranker 精排

示例代码: examples/knowledge/reranker

Reranker 用于对检索出的候选结果进行精排,提升相关性。可与任何向量存储搭配使用,通过 knowledge.WithReranker 注入。

支持的 Reranker

TopK(简单截断)

最基础的精排方式,仅按检索分数截取前 K 条。

1
2
3
4
5
import "trpc.group/trpc-go/trpc-agent-go/knowledge/reranker/topk"

rerank := topk.New(
    topk.WithK(3), // 返回前 3 条(默认 -1,返回全部)
)
配置项 说明 必填
WithK(int) 返回结果数量,默认 -1(返回全部)

Cohere(SaaS Rerank)

使用 Cohere 提供的 Rerank 服务

import (
    "log"

    "trpc.group/trpc-go/trpc-agent-go/knowledge/reranker/cohere"
)

rerank, err := cohere.New(
    cohere.WithAPIKey("your-api-key"),       // 必填:Cohere API Key
    cohere.WithModel("rerank-english-v3.0"), // 模型名称(默认 rerank-english-v3.0)
    cohere.WithTopN(5),                      // 返回结果数量
    cohere.WithEndpoint("https://..."),      // 可选:自定义端点(默认 https://api.cohere.ai/v1/rerank)
    cohere.WithHTTPClient(customClient),     // 可选:自定义 HTTP 客户端
)
if err != nil {
    log.Fatalf("Failed to create reranker: %v", err)
}
配置项 说明 必填
WithAPIKey(string) Cohere API Key
WithModel(string) 模型名称,默认 rerank-english-v3.0
WithTopN(int) 返回结果数量
WithEndpoint(string) 自定义端点 URL
WithHTTPClient(*http.Client) 自定义 HTTP 客户端

Infinity / TEI(标准 Rerank API)

术语说明

  • Infinity: 开源高性能推理引擎,支持多种 Reranker 模型
  • TEI (Text Embeddings Inference): Hugging Face 官方推理引擎,专为 Embedding 和 Rerank 优化

trpc-agent-go 的 Infinity Reranker 实现可以连接任何兼容标准 Rerank API 的服务,包括使用 Infinity/TEI 自建的服务、Hugging Face Inference Endpoints 托管服务等。

使用方式

import (
    "log"

    "trpc.group/trpc-go/trpc-agent-go/knowledge/reranker/infinity"
)

rerank, err := infinity.New(
    infinity.WithEndpoint("http://localhost:7997/rerank"), // 必填:服务端点
    infinity.WithModel("BAAI/bge-reranker-v2-m3"),         // 可选:模型名称
    infinity.WithTopN(5),                                  // 可选:返回结果数量(默认 -1,返回全部)
    infinity.WithAPIKey("your-api-key"),                   // 可选:API Key(用于需认证的服务)
    infinity.WithHTTPClient(customClient),                 // 可选:自定义 HTTP 客户端
)
if err != nil {
    log.Fatalf("Failed to create reranker: %v", err)
}
配置项 说明 必填
WithEndpoint(string) 服务端点 URL
WithModel(string) 模型名称
WithTopN(int) 返回结果数量,默认 -1(返回全部)
WithAPIKey(string) API Key(用于需认证的服务)
WithHTTPClient(*http.Client) 自定义 HTTP 客户端

详细的服务部署方法和示例请参考 examples/knowledge/reranker/infinity/ 目录。

注入 Knowledge

1
2
3
4
5
6
import "trpc.group/trpc-go/trpc-agent-go/knowledge"

kb := knowledge.New(
    knowledge.WithReranker(rerank),
    // ... 其他配置(VectorStore、Embedder、Sources 等)
)

注意事项

  • Cohere 需提供有效的 API Key。
  • Infinity/TEI 需保证端点可达、模型已加载;WithModel 可选,但建议与服务端模型一致。
  • TopK 无需额外依赖,适合离线或受限环境。