Files
wehub-resource-sync a06f331eb8
CI / benchmark (push) Has been skipped
install-script / posix-syntax (push) Successful in 6m1s
CI / build-onnx (push) Failing after 6m43s
init-smoke / dry-run (push) Failing after 15m57s
security / govulncheck (push) Has been cancelled
security / trivy-fs (push) Has been cancelled
CI / test (1.26, ubuntu-latest) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
CI / test (1.26, macos-latest) (push) Has been cancelled
CI / build-windows (push) Has been cancelled
CI / lint (push) Has been cancelled
install-script / powershell-syntax (push) Has been cancelled
install-script / install (macos-14) (push) Has been cancelled
install-script / install (ubuntu-latest) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:33:42 +08:00

81 lines
3.0 KiB
Go

// eval_baselines.go — wires `gortex eval baselines` to the
// bench/baselines/ harness. Same shell-out pattern as eval_tokens
// so the harness stays the source of truth.
package main
import (
"fmt"
"os"
"os/exec"
"github.com/spf13/cobra"
)
var (
evalBaselinesRepo string
evalBaselinesQueries string
evalBaselinesGroundtruth string
evalBaselinesAgainst string
evalBaselinesTopK int
evalBaselinesFormat string
evalBaselinesOut string
evalBaselinesJSON string
evalBaselinesSmoke bool
)
var evalBaselinesCmd = &cobra.Command{
Use: "baselines",
Short: "Per-baseline NDCG@10 + latency across retrieval adapters (ripgrep, probe, colgrep, grepai, coderankembed, semble)",
Long: `Runs the same query set through each registered baseline
adapter and reports NDCG@10 + median latency in a side-by-side
table. Per-adapter Available() checks let the harness skip
baselines whose external deps aren't installed locally — useful
in CI where the heavy Python ones (colgrep / grepai /
coderankembed / semble) typically aren't.
Use --smoke to just probe availability without running anything.
Substrate: bench/baselines/. See bench/baselines/README.md for
install instructions per adapter.`,
RunE: runEvalBaselines,
}
func init() {
evalBaselinesCmd.Flags().StringVar(&evalBaselinesRepo, "repo", ".", "indexed corpus path")
evalBaselinesCmd.Flags().StringVar(&evalBaselinesQueries, "queries", "bench/baselines/queries.json", "JSON query set")
evalBaselinesCmd.Flags().StringVar(&evalBaselinesGroundtruth, "groundtruth", "bench/baselines/groundtruth.json", "JSON per-query expected file paths")
evalBaselinesCmd.Flags().StringVar(&evalBaselinesAgainst, "against", "ripgrep,probe,colgrep,grepai,coderankembed,semble", "comma-separated adapter names")
evalBaselinesCmd.Flags().IntVar(&evalBaselinesTopK, "top-k", 10, "top-K per query (matches NDCG@10)")
evalBaselinesCmd.Flags().StringVar(&evalBaselinesFormat, "format", "markdown", "markdown | json")
evalBaselinesCmd.Flags().StringVar(&evalBaselinesOut, "out", "", "primary output path (default stdout)")
evalBaselinesCmd.Flags().StringVar(&evalBaselinesJSON, "json", "", "companion JSON metrics output")
evalBaselinesCmd.Flags().BoolVar(&evalBaselinesSmoke, "smoke", false, "skip runs; only probe Available() for each adapter")
evalCmd.AddCommand(evalBaselinesCmd)
}
func runEvalBaselines(cmd *cobra.Command, _ []string) error {
args := []string{
"run", "./bench/baselines",
"-repo", evalBaselinesRepo,
"-queries", evalBaselinesQueries,
"-groundtruth", evalBaselinesGroundtruth,
"-against", evalBaselinesAgainst,
"-top-k", fmt.Sprintf("%d", evalBaselinesTopK),
"-format", evalBaselinesFormat,
}
if evalBaselinesOut != "" {
args = append(args, "-out", evalBaselinesOut)
}
if evalBaselinesJSON != "" {
args = append(args, "-json", evalBaselinesJSON)
}
if evalBaselinesSmoke {
args = append(args, "-smoke")
}
subproc := exec.Command("go", args...)
subproc.Stdin = os.Stdin
subproc.Stdout = cmd.OutOrStdout()
subproc.Stderr = cmd.ErrOrStderr()
return subproc.Run()
}