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).

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)
  • Source: knowlytix/gmsh
  • Paper: FinStructBench: Benchmarking Structured Retrieval from Financial Documents

Metadata

Release files for knowlytix-benchmark 2.1.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 2.1.0
File Interpreter ABI Platform
knowlytix_benchmark-2.1.0-py3-none-any.whl Python 3 none any Details

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

Download URL knowlytix_benchmark-2.1.0-py3-none-any.whl
Size 896.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5a3f4de682d0d219f40f6cd1adf9935bf6821eec648af5e8c6bba3ee5b475a17
BLAKE2b-256 checksum
How to use checksums
e34e6ea90b3ee9f959c0ce152b07dc9f7491d0cc8819a4898abfa946c6abad6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Security for knowlytix-benchmark 2.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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