eval

package
v1.0.0 Latest Latest
Warning

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

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

Documentation

Overview

Package eval provides a small evaluation harness for measuring retrieval quality (Hit@K, MRR, etc).

Index

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

func Run(ctx context.Context, runner RetrievalRunner, cases []Case, opts Options) (Report, error)

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

func (r Report) MarshalJSON() ([]byte, error)

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 удовлетворяет этому интерфейсу напрямую.

Jump to

Keyboard shortcuts

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