Skip to main content

knowlytix-benchmark

Benchmark for Structured Retrieval from Financial Documents. Auto-generates questions from document-graph topology and scores LLM predictions against a provably correct graph-traversal baseline. (Internally referred to as the FinStructBench module — knowlytix.benchmark.*.)

knowlytix-benchmark is one of four packages in the Geometric Memory Systems family. Use it to answer questions like "how close does my RAG pipeline get to the graph-verified ground truth on this financial report?" — with metrics that resist gaming because the ground truth comes from graph operations, not a held-out human-labeled test set.

  • Package: knowlytix-benchmark
  • License: Apache-2.0
  • Python: 3.12+
  • Status: alpha (v0.x)

Install

pip install knowlytix-benchmark

Depends on knowlytix-core (pinned ~=0.1.0). LLM-mode scoring routes through LiteLLM — set GMS_LLM_MODEL plus your provider's API key and any model works.

Quickstart — score a prediction set

import json
from importlib.resources import files

from knowlytix.benchmark import score_answer

# Smoke fixtures shipped with the wheel:
questions = json.loads((files("knowlytix.benchmark.fixtures.smoke") / "questions.json").read_text())
predictions = json.loads((files("knowlytix.benchmark.fixtures.smoke") / "predictions.json").read_text())

by_id = {p["id"]: p["answer"] for p in predictions["predictions"]}
for q in questions["questions"]:
    result = score_answer(by_id[q["id"]], q["ground_truth"])
    mark = "correct" if result.correct else "wrong"
    print(f"{q['id']}: {mark}  partial={result.partial_score:.2f}  ({result.detail})")

Quickstart — run the full benchmark

from knowlytix.benchmark import Benchmark, get_instance_path

bench = Benchmark(get_instance_path("model_validation"))
result = bench.run()          # graph-only mode (no LLM, no API key needed)
bench.print_results(result)

To evaluate an LLM against the same ground-truth graph:

from knowlytix.benchmark.llm_caller import create_client

client = create_client()       # reads GMS_LLM_MODEL_SCORER → GMS_LLM_MODEL
result = bench.run(llm_client=client)
bench.print_results(result)

CLI

benchmark --instance model_validation
benchmark --instance credit_portfolio --llm-model anthropic/claude-opus-4-6

Configuration

FINSTRUCTBENCH_* — scoring tolerances

Variable Default Meaning
FINSTRUCTBENCH_FLOAT_TOL 1e-6 Absolute tolerance for float comparisons.
FINSTRUCTBENCH_CLOSE_THRESHOLD 0.01 Relative tolerance for "close enough" financial values.
FINSTRUCTBENCH_TUPLE_ELEMENT_TOL 1e-3 Tolerance per element inside tuple answers.

GMS_LLM_* — LLM routing (only needed for LLM-mode scoring)

Variable Meaning
GMS_LLM_MODEL Base LiteLLM model string.
GMS_LLM_MODEL_SCORER Override for scoring calls (recommended).
GMS_LLM_TIMEOUT_SECONDS Per-call timeout. Default 60.

See .env.example in the source repo for the full provider key reference.

Included benchmark instances

Five synthetic financial-domain instances ship with the wheel:

Instance Topic
basel_capital Bank capital adequacy under Basel III
credit_portfolio Credit risk portfolio analysis
fair_lending Fair lending compliance testing
model_validation Model validation report (largest)
stress_test Stress testing scenarios

All synthetic — no real institution, person, or market event is depicted.

Public API

from knowlytix.benchmark import (
    Benchmark, BenchmarkResult,
    DocumentGraph, ENMEntry, ENMKey, PhaseEncoder,
    FinStructBenchSettings,
    GeneratedQuestion, ScoreResult, score_answer,
    default_generators, get_instance_path, ingest_markdown, list_instances,
)

GeneratedQuestion is a stable contract consumed by knowlytix.harness.testing.bridge — don't rename without coordinating (see CLAUDE.md §Coding standards).

Related packages

Package Role
knowlytix-core Geometric memory engine (required runtime dep)
knowlytix-knowledge Document-graph ingest + query front-end
knowlytix-harness DOE-driven testing + runtime governance (consumes GeneratedQuestion)

Links

  • Source: knowlytix/gmsh
  • Paper: FinStructBench: Benchmarking Structured Retrieval from Financial Documents

Metadata

Release files for knowlytix-benchmark 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for knowlytix-benchmark 1.2.0
File Interpreter ABI Platform
knowlytix_benchmark-1.2.0-py3-none-any.whl Python 3 none any Details

Release files / knowlytix_benchmark-1.2.0-py3-none-any.whl

Download URL knowlytix_benchmark-1.2.0-py3-none-any.whl
Size 886.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf813d4683a07dc8fbc689818a7b9d1caf470e0808cd713ee0f9fdeac855dc52
BLAKE2b-256 checksum
How to use checksums
e5dc5e88521fcd674f1610336d00b69ac61733106f6b5f9623b7b0d4e89a2a43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

2.0.1

1 release file

1.5.0

1 release file

1.4.0

1 release file

1.3.0

1 release file

This release

1.2.0 This release

1 release file

1.1.0

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.4.0

1 release file

0.0.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page