reranker.go 975 B

1234567891011121314151617181920212223242526272829
  1. package rag
  2. import (
  3. "context"
  4. )
  5. // Reranker 重排序器接口
  6. type Reranker interface {
  7. Rerank(ctx context.Context, query string, results []SearchResult) ([]SearchResult, error)
  8. }
  9. // SimpleReranker 简单重排序器(按分数排序)
  10. type SimpleReranker struct{}
  11. // NewSimpleReranker 创建简单重排序器
  12. func NewSimpleReranker() *SimpleReranker {
  13. return &SimpleReranker{}
  14. }
  15. // Rerank 重排序结果(当前实现仅按分数排序,预留扩展接口)
  16. func (r *SimpleReranker) Rerank(ctx context.Context, query string, results []SearchResult) ([]SearchResult, error) {
  17. // 当前实现:按分数降序排序(分数越高越好)
  18. // 注意:Milvus 使用 IP 或 L2 距离,分数越小表示相似度越高
  19. // 这里假设已经转换为相似度分数(越大越好)
  20. // 实际使用时,可能需要根据 metric type 调整排序逻辑
  21. // 简单实现:保持原有顺序(Milvus 已经按相似度排序)
  22. return results, nil
  23. }