rag

package
v0.5.12 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: 4 Imported by: 0

Documentation

Overview

Package rag 提供 RAG 系统评估指标

本包实现了完整的 RAG 评估指标体系:

  • Faithfulness(忠实度):回答是否基于检索到的上下文
  • Relevancy(相关性):回答是否与问题相关
  • Context Precision(上下文精度):检索到的上下文是否精确
  • Context Recall(上下文召回):是否检索到所有相关上下文
  • Answer Correctness(答案正确性):答案是否正确
  • Hallucination(幻觉检测):是否包含虚构内容

设计借鉴:

  • RAGAS: RAG 评估框架
  • LlamaIndex: 评估指标
  • TruLens: RAG 三角评估

使用示例:

evaluator := rag.NewEvaluator(llmProvider)
result, err := evaluator.Evaluate(ctx, &EvaluationInput{
    Question: "What is AI?",
    Answer: "AI is artificial intelligence...",
    Contexts: []string{"AI stands for..."},
})

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrEvaluationFailed 评估失败
	ErrEvaluationFailed = errors.New("evaluation failed")

	// ErrNoLLMProvider 未提供 LLM Provider
	ErrNoLLMProvider = errors.New("no LLM provider")

	// ErrInvalidInput 无效输入
	ErrInvalidInput = errors.New("invalid evaluation input")
)

Functions

This section is empty.

Types

type BatchEvaluationResult

type BatchEvaluationResult struct {
	// Results 各项结果
	Results []*EvaluationResult `json:"results"`

	// AverageScores 平均得分
	AverageScores *EvaluationResult `json:"average_scores"`

	// TotalSamples 总样本数
	TotalSamples int `json:"total_samples"`

	// SuccessCount 成功数
	SuccessCount int `json:"success_count"`

	// FailureCount 失败数
	FailureCount int `json:"failure_count"`
}

BatchEvaluationResult 批量评估结果

type EvaluationInput

type EvaluationInput struct {
	// Question 用户问题
	Question string `json:"question"`

	// Answer 生成的回答
	Answer string `json:"answer"`

	// Contexts 检索到的上下文
	Contexts []string `json:"contexts"`

	// GroundTruth 真实答案(可选,用于答案正确性评估)
	GroundTruth string `json:"ground_truth,omitempty"`

	// GroundTruthContexts 真实相关上下文(可选,用于召回评估)
	GroundTruthContexts []string `json:"ground_truth_contexts,omitempty"`
}

EvaluationInput 评估输入

func (*EvaluationInput) Validate

func (input *EvaluationInput) Validate() error

Validate 验证输入

type EvaluationResult

type EvaluationResult struct {
	// Faithfulness 忠实度得分 (0-1)
	Faithfulness float64 `json:"faithfulness"`

	// Relevancy 相关性得分 (0-1)
	Relevancy float64 `json:"relevancy"`

	// ContextPrecision 上下文精度 (0-1)
	ContextPrecision float64 `json:"context_precision"`

	// ContextRecall 上下文召回 (0-1)
	ContextRecall float64 `json:"context_recall"`

	// AnswerCorrectness 答案正确性 (0-1)
	AnswerCorrectness float64 `json:"answer_correctness,omitempty"`

	// Hallucination 幻觉得分 (0-1,越低越好)
	Hallucination float64 `json:"hallucination"`

	// OverallScore 综合得分 (0-1)
	OverallScore float64 `json:"overall_score"`

	// Details 详细信息
	Details map[string]any `json:"details,omitempty"`
}

EvaluationResult 评估结果

func (*EvaluationResult) CalculateOverall

func (r *EvaluationResult) CalculateOverall(weights *MetricWeights)

CalculateOverall 计算综合得分

type Evaluator

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

Evaluator RAG 评估器

func NewEvaluator

func NewEvaluator(llm LLMProvider, config ...*EvaluatorConfig) *Evaluator

NewEvaluator 创建评估器

func (*Evaluator) Evaluate

func (e *Evaluator) Evaluate(ctx context.Context, input *EvaluationInput) (*EvaluationResult, error)

Evaluate 执行完整评估

func (*Evaluator) EvaluateBatch

func (e *Evaluator) EvaluateBatch(ctx context.Context, inputs []*EvaluationInput) (*BatchEvaluationResult, error)

EvaluateBatch 批量评估

func (*Evaluator) WithWeights

func (e *Evaluator) WithWeights(weights *MetricWeights) *Evaluator

WithWeights 设置权重

type EvaluatorConfig

type EvaluatorConfig struct {
	// EnableDetailedAnalysis 启用详细分析
	EnableDetailedAnalysis bool

	// ParallelEvaluation 并行评估
	ParallelEvaluation bool

	// Timeout 超时时间(秒)
	Timeout int
}

EvaluatorConfig 评估器配置

func DefaultEvaluatorConfig

func DefaultEvaluatorConfig() *EvaluatorConfig

DefaultEvaluatorConfig 默认评估器配置

type LLMProvider

type LLMProvider interface {
	// Complete 执行补全
	Complete(ctx context.Context, prompt string) (string, error)
}

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

type MetricWeights

type MetricWeights struct {
	Faithfulness      float64 `json:"faithfulness"`
	Relevancy         float64 `json:"relevancy"`
	ContextPrecision  float64 `json:"context_precision"`
	ContextRecall     float64 `json:"context_recall"`
	AnswerCorrectness float64 `json:"answer_correctness"`
}

MetricWeights 指标权重

func DefaultMetricWeights

func DefaultMetricWeights() *MetricWeights

DefaultMetricWeights 默认权重

Jump to

Keyboard shortcuts

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