Documentation
¶
Overview ¶
Package eval provides a small evaluation harness for measuring retrieval quality (Hit@K, MRR, etc).
Index ¶
- func ComputeAnswerRelevance(ctx context.Context, question, answer string, embedder draftrag.Embedder) (float64, error)
- func ComputeContextRelevance(ctx context.Context, question string, contextChunks []string, ...) (float64, error)
- func ComputeFaithfulness(ctx context.Context, answer, contextStr string, ...) (float64, error)
- type Case
- type CaseResult
- type Metrics
- type Options
- type Report
- type RetrievalRunner
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ComputeAnswerRelevance ¶ added in v1.0.0
func ComputeAnswerRelevance(ctx context.Context, question, answer string, embedder draftrag.Embedder) (float64, error)
ComputeAnswerRelevance вычисляет answer relevance score — семантическую близость между ответом и вопросом. @sk-task eval-ragas-metrics#T2.3: ComputeAnswerRelevance (AC-002)
func ComputeContextRelevance ¶ added in v1.0.0
func ComputeContextRelevance(ctx context.Context, question string, contextChunks []string, embedder draftrag.Embedder) (float64, error)
ComputeContextRelevance вычисляет context relevance score вопроса относительно набора чанков контекста. @sk-task eval-ragas-metrics#T2.2: ComputeContextRelevance (AC-003)
func ComputeFaithfulness ¶ added in v1.0.0
func ComputeFaithfulness(ctx context.Context, answer, contextStr string, llmProvider draftrag.LLMProvider) (float64, error)
ComputeFaithfulness вычисляет faithfulness score ответа относительно контекста через LLM-декомпозицию. @sk-task eval-ragas-metrics#T2.1: ComputeFaithfulness (AC-001)
Types ¶
type Case ¶
type Case struct {
// ID — стабильный идентификатор кейса (опционально).
ID string
// Question — текст вопроса, который будет отправлен в retrieval.
Question string
// ExpectedParentIDs — множество “правильных” parent IDs, по которым оценивается hit@k и rank.
ExpectedParentIDs []string
// TopK — topK для retrieval в рамках кейса; 0 означает использование дефолта harness.
TopK int
// @sk-task eval-ragas-metrics#T1.1: Добавить поле ExpectedAnswer для RAGAS-метрик (DM)
ExpectedAnswer string
}
Case описывает один eval-кейс для оценки retrieval.
type CaseResult ¶
type CaseResult struct {
CaseID string
// Found — попадание хотя бы одного ExpectedParentIDs в topK.
Found bool
// Rank — 1..K для первого попадания; 0 если не найдено.
Rank int
// RetrievedParentIDs — parentIDs в порядке ранжирования (для дебага).
RetrievedParentIDs []string
// @sk-task T1.2: Добавить поле NDCG для per-case оценки ранжирования (AC-004)
NDCG float64
// @sk-task T1.2: Добавить поле Precision для per-case оценки точности (AC-004)
Precision float64
// @sk-task T1.2: Добавить поле Recall для per-case оценки полноты (AC-004)
Recall float64
}
CaseResult — подробный результат прогона одного кейса.
type Metrics ¶
type Metrics struct {
TotalCases int
HitAtK float64
MRR float64
// @sk-task T1.1: Добавить поле NDCG для оценки ранжирования с учётом релевантности (AC-001)
NDCG float64
// @sk-task T1.1: Добавить поле Precision для оценки точности поиска (AC-002)
Precision float64
// @sk-task T1.1: Добавить поле Recall для оценки полноты поиска (AC-002)
Recall float64
// @sk-task eval-ragas-metrics#T1.1: Добавить поле Faithfulness для RAGAS-метрик (DM)
Faithfulness float64
// @sk-task eval-ragas-metrics#T1.1: Добавить поле AnswerRelevance для RAGAS-метрик (DM)
AnswerRelevance float64
// @sk-task eval-ragas-metrics#T1.1: Добавить поле ContextRelevance для RAGAS-метрик (DM)
ContextRelevance float64
}
Metrics — агрегированные метрики eval-прогона.
type Options ¶
type Options struct {
// DefaultTopK — topK по умолчанию, если в кейсе TopK=0.
// Если 0, используется 5.
DefaultTopK int
// @sk-task T2.3: Добавить флаг EnableNDCG для включения вычисления NDCG (AC-003)
EnableNDCG bool
// @sk-task T2.3: Добавить флаг EnablePrecision для включения вычисления Precision (AC-003)
EnablePrecision bool
// @sk-task T2.3: Добавить флаг EnableRecall для включения вычисления Recall (AC-003)
EnableRecall bool
// @sk-task eval-ragas-metrics#T1.1: Добавить флаг EnableFaithfulness для RAGAS-метрик (DM)
EnableFaithfulness bool
// @sk-task eval-ragas-metrics#T1.1: Добавить флаг EnableAnswerRelevance для RAGAS-метрик (DM)
EnableAnswerRelevance bool
// @sk-task eval-ragas-metrics#T1.1: Добавить флаг EnableContextRelevance для RAGAS-метрик (DM)
EnableContextRelevance bool
}
Options задаёт параметры запуска harness.
type Report ¶
type Report struct {
Metrics Metrics
Cases []CaseResult
}
Report — агрегированный отчёт по датасету.
func Run ¶
Run прогоняет датасет кейсов и возвращает отчёт с базовыми retrieval-метриками. @sk-task arch-generics#T4.1: nil context guard вместо panic (AC-002)
func RunWithAnswer ¶ added in v1.0.0
func RunWithAnswer(ctx context.Context, runner RetrievalRunner, llm draftrag.LLMProvider, embedder draftrag.Embedder, cases []Case, opts Options) (Report, error)
RunWithAnswer прогоняет датасет кейсов с генерацией ответа LLM и вычислением RAGAS-метрик. @sk-task eval-ragas-metrics#T3.1: RunWithAnswer (AC-004)
func (Report) MarshalJSON ¶
MarshalJSON реализует сериализацию Report в JSON. @sk-task T2.4: MarshalJSON реализует сериализацию Report в JSON (AC-006)
type RetrievalRunner ¶
type RetrievalRunner interface {
Retrieve(ctx context.Context, question string, topK int) (draftrag.RetrievalResult, error)
}
RetrievalRunner — минимальный интерфейс для eval harness. Pipeline удовлетворяет этому интерфейсу напрямую.