reranker

package
v0.5.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 13, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Package reranker 提供高级重排序算法

Package reranker 提供文档重排序功能

Package reranker 提供文档重排序功能

Package reranker 提供文档重排序功能

Package reranker 提供辅助函数

Package reranker 提供文档重排序功能

Package reranker 提供文档重排序功能

Reranker 用于对检索到的文档进行二次排序,提高结果质量:

  • 提升最相关文档的排名
  • 增加结果多样性
  • 优化上下文利用

Package reranker 提供文档重排序功能

Package reranker 提供文档重排序功能

Package reranker 提供文档重排序功能的类型定义

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChainOption

type ChainOption func(*ChainReranker)

ChainOption ChainReranker 选项函数

func WithChainRerankers

func WithChainRerankers(rerankers ...Reranker) ChainOption

WithChainRerankers 添加重排序器

参数:

  • rerankers: 要添加的重排序器列表

type ChainReranker

type ChainReranker struct {
	// contains filtered or unexported fields
}

ChainReranker 链式组合重排序器

将多个重排序器串联执行,每个重排序器的输出作为下一个的输入。 常用于组合多种重排序策略:

  • 先过滤低分文档
  • 再用高质量模型精排
  • 最后限制返回数量

使用示例:

reranker := NewChainReranker(
    NewScoreReranker(WithScoreMin(0.5)),  // 先过滤低分
    NewCohereReranker("api-key"),          // 再用 Cohere 精排
    NewScoreReranker(WithScoreTopK(5)),    // 最后取 Top 5
)
result, err := reranker.Rerank(ctx, "query", docs)

func NewChainReranker

func NewChainReranker(rerankers ...Reranker) *ChainReranker

NewChainReranker 创建链式重排序器

参数:

  • rerankers: 按执行顺序排列的重排序器

返回:

  • 配置好的 ChainReranker 实例

使用示例:

r := NewChainReranker(
    NewScoreReranker(WithScoreMin(0.3)),
    NewLLMReranker(llm, WithLLMRerankerTopK(10)),
)

func (*ChainReranker) Add

func (c *ChainReranker) Add(reranker Reranker) *ChainReranker

Add 向链中添加重排序器

参数:

  • reranker: 要添加的重排序器

返回:

  • 返回自身,支持链式调用

func (*ChainReranker) Len

func (c *ChainReranker) Len() int

Len 返回链中重排序器的数量

func (*ChainReranker) Name

func (c *ChainReranker) Name() string

Name 返回重排序器名称

返回格式:ChainReranker(A -> B -> C)

func (*ChainReranker) Prepend

func (c *ChainReranker) Prepend(reranker Reranker) *ChainReranker

Prepend 在链头部添加重排序器

参数:

  • reranker: 要添加的重排序器

返回:

  • 返回自身,支持链式调用

func (*ChainReranker) Rerank

func (c *ChainReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 按顺序执行所有重排序器

参数:

  • ctx: 上下文
  • query: 查询字符串
  • docs: 待重排序的文档列表

返回:

  • 重排序后的文档列表
  • 错误信息(遇到第一个错误即返回)

func (*ChainReranker) Rerankers

func (c *ChainReranker) Rerankers() []Reranker

Rerankers 返回链中所有重排序器的副本

type CohereOption

type CohereOption func(*CohereReranker)

CohereOption CohereReranker 选项函数

func WithCohereAPIKey

func WithCohereAPIKey(key string) CohereOption

WithCohereAPIKey 设置 API 密钥(可覆盖构造函数中的密钥)

参数:

  • key: Cohere API 密钥

func WithCohereBaseURL

func WithCohereBaseURL(url string) CohereOption

WithCohereBaseURL 设置 API 基础地址(用于测试或私有部署)

参数:

  • url: API 基础地址

func WithCohereModel

func WithCohereModel(model string) CohereOption

WithCohereModel 设置使用的模型

参数:

  • model: 模型名称,如 "rerank-english-v3.0" 或 "rerank-multilingual-v3.0"

可选模型:

  • rerank-english-v3.0: 英文专用模型
  • rerank-multilingual-v3.0: 多语言模型
  • rerank-english-v2.0: 旧版英文模型
  • rerank-multilingual-v2.0: 旧版多语言模型

func WithCohereTimeout

func WithCohereTimeout(timeout time.Duration) CohereOption

WithCohereTimeout 设置请求超时时间

参数:

  • timeout: 超时时间

func WithCohereTopK

func WithCohereTopK(k int) CohereOption

WithCohereTopK 设置返回数量

参数:

  • k: 返回的最相关文档数量

type CohereReranker

type CohereReranker struct {
	// contains filtered or unexported fields
}

CohereReranker 使用 Cohere API 进行重排序

Cohere Rerank API 是一个高质量的商业重排序服务:

  • 支持多语言(100+ 语言)
  • 高精度的语义相关性评估
  • 简单易用的 REST API

API 文档:https://docs.cohere.com/reference/rerank

使用示例:

reranker := NewCohereReranker("your-api-key",
    WithCohereModel("rerank-multilingual-v3.0"),
    WithCohereTopK(10),
)
result, err := reranker.Rerank(ctx, "query", docs)

func NewCohereReranker

func NewCohereReranker(apiKey string, opts ...CohereOption) *CohereReranker

NewCohereReranker 创建 Cohere 重排序器

参数:

  • apiKey: Cohere API 密钥
  • opts: 可选配置项

返回:

  • 配置好的 CohereReranker 实例

使用示例:

r := NewCohereReranker("your-api-key",
    WithCohereModel("rerank-multilingual-v3.0"),
    WithCohereTopK(10),
)

func (*CohereReranker) Name

func (r *CohereReranker) Name() string

Name 返回重排序器名称

func (*CohereReranker) Rerank

func (r *CohereReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 使用 Cohere API 对文档重排序

参数:

  • ctx: 上下文
  • query: 查询字符串
  • docs: 待重排序的文档列表

返回:

  • 重排序后的文档列表(按相关性降序)
  • 错误信息

type CompressionOption

type CompressionOption func(*ContextualCompressionReranker)

CompressionOption ContextualCompressionReranker 选项

func WithCompressionMinLength

func WithCompressionMinLength(length int) CompressionOption

WithCompressionMinLength 设置最小保留长度

func WithCompressionRate

func WithCompressionRate(rate float32) CompressionOption

WithCompressionRate 设置压缩率

func WithCompressionTopK

func WithCompressionTopK(k int) CompressionOption

WithCompressionTopK 设置返回数量

type ContextualCompressionReranker

type ContextualCompressionReranker struct {
	// contains filtered or unexported fields
}

ContextualCompressionReranker 上下文压缩重排序器

通过 LLM 提取文档中与查询最相关的部分,压缩上下文:

  • 减少 token 使用
  • 提高信息密度
  • 去除无关内容

func NewContextualCompressionReranker

func NewContextualCompressionReranker(llm LLMProvider, opts ...CompressionOption) *ContextualCompressionReranker

NewContextualCompressionReranker 创建上下文压缩重排序器

func (*ContextualCompressionReranker) Name

Name 返回重排序器名称

func (*ContextualCompressionReranker) Rerank

func (r *ContextualCompressionReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 压缩并重排序文档

type CrossEncoderOption

type CrossEncoderOption func(*CrossEncoderReranker)

CrossEncoderOption CrossEncoderReranker 选项函数

func WithCrossEncoderBatchSize

func WithCrossEncoderBatchSize(size int) CrossEncoderOption

WithCrossEncoderBatchSize 设置批处理大小

参数:

  • size: 每批处理的文档数量,默认 32

func WithCrossEncoderModel

func WithCrossEncoderModel(url string) CrossEncoderOption

WithCrossEncoderModel 设置模型服务地址

参数:

func WithCrossEncoderTimeout

func WithCrossEncoderTimeout(timeout time.Duration) CrossEncoderOption

WithCrossEncoderTimeout 设置请求超时时间

参数:

  • timeout: 超时时间,默认 30 秒

func WithCrossEncoderTopK

func WithCrossEncoderTopK(k int) CrossEncoderOption

WithCrossEncoderTopK 设置返回数量

参数:

  • k: 返回的最相关文档数量,默认 10

type CrossEncoderReranker

type CrossEncoderReranker struct {
	// contains filtered or unexported fields
}

CrossEncoderReranker 跨编码器重排序器

跨编码器(Cross-Encoder)是一种高精度的相关性评估模型:

  • 将查询和文档同时输入模型,计算相关性分数
  • 精度高于双塔模型(Bi-Encoder),但速度较慢
  • 适合在检索后对少量候选文档进行精排

使用方式:

  • 需要部署支持 Cross-Encoder 的模型服务(如 sentence-transformers/cross-encoder)
  • 通过 HTTP API 调用外部模型服务

使用示例:

reranker := NewCrossEncoderReranker(
    WithCrossEncoderModel("http://localhost:9000/rerank"),
    WithCrossEncoderTopK(10),
)
result, err := reranker.Rerank(ctx, "query", docs)

func NewCrossEncoderReranker

func NewCrossEncoderReranker(opts ...CrossEncoderOption) *CrossEncoderReranker

NewCrossEncoderReranker 创建跨编码器重排序器

参数:

  • opts: 可选配置项

返回:

  • 配置好的 CrossEncoderReranker 实例

使用示例:

r := NewCrossEncoderReranker(
    WithCrossEncoderModel("http://localhost:9000/rerank"),
    WithCrossEncoderBatchSize(16),
    WithCrossEncoderTopK(5),
)

func (*CrossEncoderReranker) Name

func (r *CrossEncoderReranker) Name() string

Name 返回重排序器名称

func (*CrossEncoderReranker) Rerank

func (r *CrossEncoderReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 使用跨编码器对文档重排序

参数:

  • ctx: 上下文
  • query: 查询字符串
  • docs: 待重排序的文档列表

返回:

  • 重排序后的文档列表(按相关性降序)
  • 错误信息

type DiversityOption

type DiversityOption func(*DiversityReranker)

DiversityOption DiversityReranker 选项

func WithDiversityBalance

func WithDiversityBalance(factor float32) DiversityOption

WithDiversityBalance 设置平衡因子

func WithDiversityThreshold

func WithDiversityThreshold(threshold float32) DiversityOption

WithDiversityThreshold 设置相似度阈值

func WithDiversityTopK

func WithDiversityTopK(k int) DiversityOption

WithDiversityTopK 设置返回数量

type DiversityReranker

type DiversityReranker struct {
	// contains filtered or unexported fields
}

DiversityReranker 多样性重排序器

确保结果集具有多样性,避免返回过于相似的文档。 使用贪心算法选择:

  1. 与查询相关
  2. 与已选文档不太相似

func NewDiversityReranker

func NewDiversityReranker(embedder Embedder, opts ...DiversityOption) *DiversityReranker

NewDiversityReranker 创建多样性重排序器

func (*DiversityReranker) Name

func (r *DiversityReranker) Name() string

Name 返回重排序器名称

func (*DiversityReranker) Rerank

func (r *DiversityReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 多样性重排序

type Embedder

type Embedder interface {
	EmbedOne(ctx context.Context, text string) ([]float32, error)
	Embed(ctx context.Context, texts []string) ([][]float32, error)
}

Embedder 向量嵌入器接口

type LLMProvider

type LLMProvider interface {
	// Complete 完成文本生成
	//
	// 参数:
	//   - ctx: 上下文
	//   - prompt: 提示词
	//
	// 返回:
	//   - 生成的文本
	//   - 错误信息
	Complete(ctx context.Context, prompt string) (string, error)
}

LLMProvider LLM 提供者接口(简化版)

用于重排序器中需要调用 LLM 的场景

type LLMReranker

type LLMReranker struct {
	// contains filtered or unexported fields
}

LLMReranker 使用 LLM 进行重排序

通过让 LLM 评估查询与文档的相关性来实现重排序:

  • 灵活性高,可以理解复杂的语义关系
  • 成本较高,适合少量候选文档的精排
  • 支持并发处理提高效率

注意:为避免过多 LLM 调用,默认最多处理 50 个文档。 可通过 WithLLMRerankerMaxDocuments 调整。

使用示例:

reranker := NewLLMReranker(llm,
    WithLLMRerankerTopK(10),
    WithLLMRerankerConcurrency(5),
)
result, err := reranker.Rerank(ctx, "query", docs)

func NewLLMReranker

func NewLLMReranker(llm LLMProvider, opts ...LLMRerankerOption) *LLMReranker

NewLLMReranker 创建 LLM 重排序器

参数:

  • llm: LLM 提供者实例
  • opts: 可选配置项

返回:

  • 配置好的 LLMReranker 实例

使用示例:

r := NewLLMReranker(llm,
    WithLLMRerankerTopK(5),
    WithLLMRerankerConcurrency(3),
)

func (*LLMReranker) Name

func (r *LLMReranker) Name() string

Name 返回重排序器名称

func (*LLMReranker) Rerank

func (r *LLMReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 使用 LLM 对文档重排序

参数:

  • ctx: 上下文
  • query: 查询字符串
  • docs: 待重排序的文档列表

返回:

  • 重排序后的文档列表(按相关性降序)
  • 错误信息

type LLMRerankerOption

type LLMRerankerOption func(*LLMReranker)

LLMRerankerOption LLMReranker 选项函数

func WithLLMRerankerConcurrency

func WithLLMRerankerConcurrency(c int) LLMRerankerOption

WithLLMRerankerConcurrency 设置并发数

参数:

  • c: 并发处理的文档数量

func WithLLMRerankerMaxDocuments

func WithLLMRerankerMaxDocuments(max int) LLMRerankerOption

WithLLMRerankerMaxDocuments 设置最大处理文档数

超过此数量的文档将被截断(保留前 N 个)。 这是为了避免过多 LLM 调用导致成本过高。

参数:

  • max: 最大文档数,默认 50

func WithLLMRerankerPromptTemplate

func WithLLMRerankerPromptTemplate(template string) LLMRerankerOption

WithLLMRerankerPromptTemplate 设置评分提示词模板

模板中可使用的占位符:

  • {{query}}: 查询字符串
  • {{document}}: 文档内容

参数:

  • template: 提示词模板

func WithLLMRerankerTopK

func WithLLMRerankerTopK(k int) LLMRerankerOption

WithLLMRerankerTopK 设置返回数量

参数:

  • k: 返回的最相关文档数量

type LostInTheMiddleOption

type LostInTheMiddleOption func(*LostInTheMiddleReranker)

LostInTheMiddleOption LostInTheMiddleReranker 选项

func WithLostInTheMiddleStrategy

func WithLostInTheMiddleStrategy(strategy string) LostInTheMiddleOption

WithLostInTheMiddleStrategy 设置重排策略

func WithLostInTheMiddleTopK

func WithLostInTheMiddleTopK(k int) LostInTheMiddleOption

WithLostInTheMiddleTopK 设置返回数量

type LostInTheMiddleReranker

type LostInTheMiddleReranker struct {
	// contains filtered or unexported fields
}

LostInTheMiddleReranker "中间丢失"重排序器

研究表明,LLM 在处理长上下文时,对开头和结尾的信息关注度更高, 而中间部分的信息容易被忽略(Lost in the Middle)。

该重排序器将最重要的文档放在开头和结尾,次重要的放在中间:

位置分布: [最重要, 次重要, ..., 最不重要, ..., 次重要, 重要]

例如,输入 [1, 2, 3, 4, 5, 6] (按相关性降序) 输出: [1, 3, 5, 6, 4, 2]

func NewLostInTheMiddleReranker

func NewLostInTheMiddleReranker(opts ...LostInTheMiddleOption) *LostInTheMiddleReranker

NewLostInTheMiddleReranker 创建"中间丢失"重排序器

func (*LostInTheMiddleReranker) Name

func (r *LostInTheMiddleReranker) Name() string

Name 返回重排序器名称

func (*LostInTheMiddleReranker) Rerank

func (r *LostInTheMiddleReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 重排序以对抗"中间丢失"问题

type MMROption

type MMROption func(*MMRReranker)

MMROption MMRReranker 选项

func WithMMRCache

func WithMMRCache(cache bool) MMROption

WithMMRCache 设置是否缓存嵌入向量

func WithMMREmbedder

func WithMMREmbedder(embedder Embedder) MMROption

WithMMREmbedder 设置嵌入器

func WithMMRLambda

func WithMMRLambda(lambda float32) MMROption

WithMMRLambda 设置相关性权重

func WithMMRTopK

func WithMMRTopK(k int) MMROption

WithMMRTopK 设置返回数量

type MMRReranker

type MMRReranker struct {
	// contains filtered or unexported fields
}

MMRReranker 最大边际相关性重排序器

MMR (Maximal Marginal Relevance) 是一种平衡相关性和多样性的算法:

  • 选择与查询最相关的文档
  • 同时确保文档之间具有多样性(避免冗余)
  • 使用 lambda 参数控制相关性和多样性的权重

算法:

  1. 选择相关性最高的文档加入结果
  2. 对于剩余文档,计算 MMR 分数: MMR = λ × Sim(Doc, Query) - (1-λ) × max(Sim(Doc, Selected))
  3. 选择 MMR 分数最高的文档加入结果
  4. 重复直到达到 TopK

缓存机制:

  • 相似度缓存仅在单次 Rerank 调用期间有效
  • 每次调用 Rerank 时会清空缓存,避免内存无限增长

func NewMMRReranker

func NewMMRReranker(embedder Embedder, opts ...MMROption) *MMRReranker

NewMMRReranker 创建 MMR 重排序器

func (*MMRReranker) Name

func (r *MMRReranker) Name() string

Name 返回重排序器名称

func (*MMRReranker) Rerank

func (r *MMRReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 使用 MMR 算法重排序

type RRFOption

type RRFOption func(*RRFReranker)

RRFOption RRFReranker 选项函数

func WithRRFK

func WithRRFK(k float64) RRFOption

WithRRFK 设置 RRF 参数 k

参数:

  • k: RRF 参数,默认 60。较大的值使排名差异更平滑

推荐值:

  • k=60: 经典设置,适合大多数场景
  • k=1-10: 更强调头部排名
  • k=100+: 更平滑,减少头部优势

func WithRRFTopK

func WithRRFTopK(topK int) RRFOption

WithRRFTopK 设置返回数量

参数:

  • topK: 返回的最相关文档数量

type RRFReranker

type RRFReranker struct {
	// contains filtered or unexported fields
}

RRFReranker 倒数排名融合(Reciprocal Rank Fusion)重排序器

RRF 是一种简单有效的排名融合算法,常用于混合检索场景:

  • 融合来自不同检索系统的结果(如向量检索 + 关键词检索)
  • 不依赖原始分数,只使用排名位置
  • 对异常分数不敏感

算法公式:

RRF(d) = Σ 1/(k + rank(d))

其中 k 是常数(通常为 60),rank(d) 是文档 d 在某个排名列表中的位置。

使用示例:

reranker := NewRRFReranker(
    WithRRFK(60),
    WithRRFTopK(10),
)
// 融合多个排名列表
result := reranker.FuseRankings(vectorResults, keywordResults)

func NewRRFReranker

func NewRRFReranker(opts ...RRFOption) *RRFReranker

NewRRFReranker 创建 RRF 重排序器

参数:

  • opts: 可选配置项

返回:

  • 配置好的 RRFReranker 实例

使用示例:

r := NewRRFReranker(
    WithRRFK(60),
    WithRRFTopK(10),
)

func (*RRFReranker) FuseRankings

func (r *RRFReranker) FuseRankings(rankings ...[]rag.Document) []rag.Document

FuseRankings 融合多个排名列表

这是 RRF 的主要用途:融合来自不同检索系统的结果。

参数:

  • rankings: 多个排名列表,每个列表应该已按相关性降序排列

返回:

  • 融合后的文档列表,按 RRF 分数降序排列

使用示例:

vectorResults := vectorRetriever.Retrieve(ctx, query)
keywordResults := keywordRetriever.Retrieve(ctx, query)
fusedResults := reranker.FuseRankings(vectorResults, keywordResults)

func (*RRFReranker) Name

func (r *RRFReranker) Name() string

Name 返回重排序器名称

func (*RRFReranker) Rerank

func (r *RRFReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 对单个文档列表进行 RRF 重排序

注意:单个列表的 RRF 重排序实际上就是按原始分数排序后应用 RRF 分数。 对于融合多个列表,请使用 FuseRankings 方法。

参数:

  • ctx: 上下文
  • query: 查询字符串(RRF 不使用)
  • docs: 待重排序的文档列表

返回:

  • 重排序后的文档列表
  • 错误信息

type RankedDocument

type RankedDocument struct {
	// 嵌入原始文档
	rag.Document

	// RelevanceScore 与查询的相关性得分
	// 由重排序器计算,范围通常为 [0, 1]
	RelevanceScore float32

	// OriginalRank 原始排名(从 1 开始)
	// 表示文档在重排序前的位置
	OriginalRank int

	// NewRank 新排名(从 1 开始)
	// 表示文档在重排序后的位置
	NewRank int
}

RankedDocument 带排名信息的文档

扩展了 rag.Document,添加了重排序相关的元信息:

  • RelevanceScore: 与查询的相关性得分
  • OriginalRank: 原始排名(重排序前)
  • NewRank: 新排名(重排序后)

使用场景:

  • 追踪文档在重排序过程中的排名变化
  • 调试和分析重排序效果
  • 评估重排序算法的性能

func (RankedDocument) ToDocument

func (rd RankedDocument) ToDocument() rag.Document

ToDocument 将 RankedDocument 转换为普通 Document

注意:转换后会丢失排名信息

type RankedDocuments

type RankedDocuments []RankedDocument

RankedDocuments 是 RankedDocument 的切片类型

func FromDocuments

func FromDocuments(docs []rag.Document) RankedDocuments

FromDocuments 从普通文档列表创建 RankedDocuments

使用原始索引作为 OriginalRank,使用文档 Score 作为 RelevanceScore

func (RankedDocuments) ToDocuments

func (rds RankedDocuments) ToDocuments() []rag.Document

ToDocuments 批量转换为普通文档列表

type Reranker

type Reranker interface {
	// Name 返回重排序器名称
	Name() string

	// Rerank 重排序文档
	//
	// 参数:
	//   - ctx: 上下文
	//   - query: 查询字符串
	//   - docs: 待重排序的文档列表
	//
	// 返回:
	//   - 重排序后的文档列表
	//   - 错误信息
	Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)
}

Reranker 文档重排序器接口

所有重排序器都实现此接口,提供统一的重排序能力

type ScoreOption

type ScoreOption func(*ScoreReranker)

ScoreOption ScoreReranker 选项函数

func WithScoreMin

func WithScoreMin(min float32) ScoreOption

WithScoreMin 设置最小分数阈值

参数:

  • min: 最小分数,低于此分数的文档将被过滤。默认 0(不过滤)

注意:如果同时使用 normalize=true,过滤在归一化之前进行

func WithScoreNormalize

func WithScoreNormalize(normalize bool) ScoreOption

WithScoreNormalize 设置是否归一化分数

参数:

  • normalize: 是否将分数归一化到 [0, 1] 范围

归一化公式:

normalized = (score - min) / (max - min)

其中 min 和 max 是当前结果集中的最小和最大分数

func WithScoreTopK

func WithScoreTopK(k int) ScoreOption

WithScoreTopK 设置返回数量

参数:

  • k: 返回的最相关文档数量

type ScoreReranker

type ScoreReranker struct {
	// contains filtered or unexported fields
}

ScoreReranker 分数过滤重排序器

基于文档原有分数进行过滤和排序:

  • 过滤低于阈值的文档
  • 可选分数归一化
  • 限制返回数量

使用场景:

  • 过滤低相关性结果
  • 统一不同检索系统的分数范围
  • 简单快速的重排序

使用示例:

reranker := NewScoreReranker(
    WithScoreMin(0.5),
    WithScoreTopK(10),
    WithScoreNormalize(true),
)
result, err := reranker.Rerank(ctx, "query", docs)

func NewScoreReranker

func NewScoreReranker(opts ...ScoreOption) *ScoreReranker

NewScoreReranker 创建分数过滤重排序器

参数:

  • opts: 可选配置项

返回:

  • 配置好的 ScoreReranker 实例

使用示例:

r := NewScoreReranker(
    WithScoreMin(0.5),
    WithScoreTopK(10),
    WithScoreNormalize(true),
)

func (*ScoreReranker) Name

func (r *ScoreReranker) Name() string

Name 返回重排序器名称

func (*ScoreReranker) Rerank

func (r *ScoreReranker) Rerank(ctx context.Context, query string, docs []rag.Document) ([]rag.Document, error)

Rerank 基于分数过滤和排序文档

参数:

  • ctx: 上下文
  • query: 查询字符串(ScoreReranker 不使用)
  • docs: 待重排序的文档列表

返回:

  • 重排序后的文档列表
  • 错误信息

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL