eolas / .github /workflows /eval.yml
rahulraj1406's picture
v0.4.0-alpha: cross-encoder reranking + eval harness with CI gate
310c2f8
Raw
History Blame Contribute Delete
1.68 kB
name: Eval gate
on:
pull_request:
paths:
- "app/**"
- "ingest/**"
- "eval/**"
- "pyproject.toml"
- ".github/workflows/eval.yml"
workflow_dispatch:
jobs:
retrieval-metrics:
runs-on: ubuntu-latest
timeout-minutes: 12
env:
EVAL_CI_GATE: "1"
# Retrieval is the only thing scored in CI — no LLM keys needed, no rate
# limits, fully deterministic. Generation is graded offline pre-release.
LLM_PROVIDER: gemini
GEMINI_API_KEY: ""
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
- name: Install deps
run: |
pip install --upgrade pip
pip install \
"httpx>=0.27" "lancedb>=0.13" "fastembed>=0.4" "flashrank>=0.2" \
"rank-bm25>=0.2" "fastapi>=0.111" "uvicorn[standard]>=0.30" \
"python-dotenv>=1.0" "sse-starlette>=2.1" "slowapi>=0.1.9" \
"google-genai>=0.3" "groq>=0.11" "openai>=1.40" "anthropic>=0.34" \
"tiktoken>=0.7" pylance
- name: Verify LanceDB index is present
run: |
test -d data/lancedb || (echo "data/lancedb missing — LFS pull failed" && exit 1)
du -sh data/lancedb
- name: Run retrieval eval (CI gate: Recall@5 0.85, OOC refusal 0.90)
run: |
python -m eval.run_full --out eval/baselines/ci-latest.json
- name: Upload eval artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: eval-results
path: eval/baselines/ci-latest.json