Paper mapping¶
Section-by-section correspondence between D. Mojila, "LLM Orchestration with Geometry-Aware Memory" (IEEE ICBDML 2026, doi:10.1109/ICBDML68582.2026.11544690) and this package. Equation numbers are the paper's.
| Paper | What it says | Where it lives here |
|---|---|---|
| §I Introduction, §II Related Work | Motivation and context | Home, FAQ |
| §III-A Geometric Knowledge Representation (eq. 1–3) | Poincaré ball, metric tensor, hyperbolic distance | poincare-memory; used through Scenario.build_memory() and Memory.search(mode="subtree") |
| §III-B Metacognitive Control Theory (eq. 4) | Control signal C(t) = F(M(t), G(t), R(t)) |
Orchestrator.run: state = plan and responses, goal = constraints, resources = ControllerPolicy.total_budget |
| §III-B (eq. 5) | Hierarchical decomposition Q → {q_1, …, q_n} |
controller.decompose → Plan.subtasks with depends_on (Controller) |
| §III-C Information-Theoretic Resource Allocation (eq. 6) | I*(q_i) = argmax_I G(q_i, I) / C(I) |
InvestmentScheduler.expected_gain, .allocate (skip rule), .measure_yield, .reinvest (Controller) |
| §III-D Multi-Objective Response Optimization (eq. 7) | max J(R) = Σ w_i f_i(R) s.t. f_j(R) ≥ ε_j |
synthesis.weighted_sum; weights and thresholds are ControllerPolicy.objectives / .constraints (Synthesis) |
| §IV-A Overview | Four components: controller, memory, ensemble, synthesis | controller.py, poincare_memory.Memory, ensemble.py, synthesis.py, wired by orchestrator.py |
| §IV-B Metacognitive Controller: query analysis and intent recognition | Intent, domain requirements, complexity | controller.analyze → QueryAnalysis |
| §IV-B: task decomposition | Sub-tasks with dependencies and execution order | controller.decompose; the dependency-respecting loop in Orchestrator.run |
| §IV-B: capability matching | Static profiles and performance characteristics | CapabilityProfile.fit, role selection in decompose; dynamic health in Router |
| §IV-B: resource allocation ("glycolytic investment cycle") | Invest by expected yield, re-invest | InvestmentScheduler.allocate then .reinvest in the refinement loop |
| §IV-C Geometry-Aware Memory System | Structured representation, temporal context, retrieval, cross-domain integration | Scenario.knowledge → poincare_memory.Memory with a decay policy (ControllerPolicy.decay); Orchestrator._context retrieval order |
| §IV-D Provider-Agnostic LLM Ensemble: capability profiling | Domain expertise, reasoning, creativity, reliability | CapabilityProfile fields of the same names |
| §IV-D: throttling detection and mitigation | Response patterns, computation time, information density | ThrottleDetector signals: refusal, latency, length, density (Ensemble) |
| §IV-D: response standardization | One schema for every model output | schema.AgentResponse, schema.Claim |
| §IV-D: load balancing and failover | Balance across models, fail over on degradation | Router: candidate order, cooldown, failover, provider-exception handling |
| §IV-E Response Synthesis: multi-source integration | Fuse partial results | synthesis.fuse_claims |
| §IV-E: quality assessment | Multiple quality dimensions | the five objectives in synthesis.score_objectives |
| §IV-E: uncertainty quantification | Calibrated uncertainty estimates | SynthesisResult.uncertainty (a proxy, see Synthesis) |
| §IV-E: iterative refinement | Re-process when thresholds fail | the refinement loop in Orchestrator.run (refine_rounds) |
| §V Experimental Evaluation, Table I | Expert-rated accuracy, bits/token, response time, satisfaction | Not reproduced. This package reports facet recall and synthesis scores on its own scenarios (Evaluation) |
| §V-E Failure Mode Analysis | What goes wrong and how it is handled | Skipped sub-tasks, refused responses, throttle events and error: <type> events are all visible in RunResult |
| §VI Discussion, §VII Conclusion | Insights, efficiency, limitations | FAQ |
Equations as quoted in the paper¶
Eq. 5 (hierarchical decomposition):
\[Q \rightarrow \{q_1, q_2, \ldots, q_n\}\]
Eq. 6 (optimal investment per sub-task):
\[I^*(q_i) = \arg\max_{I} \frac{G(q_i, I)}{C(I)}\]
Eq. 7 (weighted sum with epsilon constraints):
\[\max_{R}\; J(R) = \sum_{i=1}^{m} w_i f_i(R) \quad \text{s.t.} \quad f_j(R) \geq \epsilon_j,\ \forall j \in \{1, 2, \ldots, m\}\]
The controller and synthesis pages show how each symbol is instantiated in code.