Feature Request: Support for Financial RAG Dataset Eval Pipelines with Domain-Specific Scorers
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- machine-learning
Direzione di ricerca
Inizia esaminando lo schema EvalCase e le API di registrazione degli scorer descritte nell’issue, quindi confrontale con l’utilizzo esistente di Braintrust Eval. Prima dell’implementazione, l’ambito deve essere ristretto tra il supporto per context, lo scoring dell’equivalenza numerica e la registrazione basata su decorator; done deve essere definito dalla proposta selezionata e dalla copertura della relativa validazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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:
- No built-in support for numerical/unit-aware comparison — financial answers often contain figures like
$3.2Bvs3.2 billion. Current string-match scorers treat these as mismatches. - 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).
- 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
contextfield to the standardEvalCaseschema (alongsideinput,expected,metadata) so retrieved chunks can be passed through to scorers natively. - Provide a
NumericEquivalenceScorerthat 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
LLMTestCasehas aretrieval_contextfield that works similarly
- Lingua principale
- Python
- Stelle
- 20
- Fork
- 18
- Merge medio
- 1g 5h
- PR unite (30g)
- 61
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di braintrustdata/braintrust-sdk-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
braintrustdata/braintrust-sdk-python#797 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
braintrustdata/braintrust-sdk-python#774 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
braintrustdata/braintrust-sdk-python#799 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
braintrustdata/braintrust-sdk-python#798 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
braintrustdata/braintrust-sdk-python#787 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di braintrustdata/braintrust-sdk-python
Issue simili
-
needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
openvinotoolkit/openvino_notebooks#3665 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
benchmark-gap
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno