Feature Request: Support for Financial RAG Dataset Eval Pipelines with Domain-Specific Scorers

Abierto
#492 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Necesita aclaración
Estado de actividad
Tranquilo
Stack tecnológico
python

Línea de trabajo

Empieza revisando el esquema de EvalCase y las API de registro de scorers descritas en el issue, y luego compáralas con el uso existente de Braintrust Eval. Antes de la implementación, hay que acotar el alcance entre la compatibilidad con context, la evaluación de equivalencia numérica y el registro basado en decoradores; done debe definirse mediante la propuesta seleccionada y la cobertura de su validación.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

I've been building a financial RAG evaluation framework (FinRAG-Eval) and ran into friction when trying to use braintrust-sdk-python for domain-specific eval pipelines over financial documents (10-Ks, earnings transcripts, SEC filings).

Problem

When running evals on financial RAG outputs, the default scorer setup doesn't map well to domain-specific correctness signals. Specifically:

  1. No built-in support for numerical/unit-aware comparison — financial answers often contain figures like $3.2B vs 3.2 billion. Current string-match scorers treat these as mismatches.
  2. No dataset schema for context-grounded financial Q&A — when loading eval datasets from Braintrust's dataset store, there's no documented convention for attaching retrieved context chunks (needed for faithfulness scoring).
  3. Custom scorer registration is verbose — adding a domain scorer (e.g., a ROUGE-F1 scorer or a financial entity extractor) requires wrapping functions manually with no type hints or schema validation.

Proposed Solution

  • Add a context field to the standard EvalCase schema (alongside input, expected, metadata) so retrieved chunks can be passed through to scorers natively.
  • Provide a NumericEquivalenceScorer that normalizes units (B/M/K, $, %) before comparing.
  • Allow scorer registration via a decorator pattern (@braintrust.scorer) similar to how pytest fixtures work — this would reduce boilerplate significantly.

Example Use Case

@braintrust.scorer
def financial_faithfulness(output: str, context: list[str]) -> Score:
    # Check if numerical claims in output are grounded in context
    ...
    return Score(name="financial_faithfulness", score=0.87)

await Eval(
    "FinRAG-Eval",
    data=financial_qa_dataset,
    task=rag_pipeline,
    scores=[financial_faithfulness, NumericEquivalenceScorer()],
)

Context

I'm building this as part of finrag-eval, a framework for evaluating LLM outputs over financial documents. Happy to contribute a PR for the scorer decorator pattern or the context field addition if the team is open to it.

References

  • Braintrust Eval Docs
  • Related: DeepEval's LLMTestCase has a retrieval_context field that works similarly
Lenguaje dominante
Python
Estrellas
19
Forks
17
Merge medio
22 h 50 min
PR fusionados (30 d)
51

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de braintrustdata/braintrust-sdk-python

Todos los issues de braintrustdata/braintrust-sdk-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.