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 ¶
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 评估输入
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 指标权重
Click to show internal directories.
Click to hide internal directories.