Author here. I got annoyed that every RAG/vector setup treats retrieved
chunks as equally trustworthy — if a lobby-funded report and an IEA
report disagree, a vector DB just returns both with the same confidence
score. So I built a storage layer that runs an NLI (natural language
inference) check on every insert, flags contradictions mechanically,
and degrades confidence on the source that's out of step with
corroborated data.
Quick example — insert this:
{"claim_text": "North Sea wind capacity reached 35 GW in 2024",
"source": "IEA Energy Report"}
then this:
{"claim_text": "North Sea wind capacity remained below 20 GW in 2024",
"source": "CoalLobby2024"}
and query it back — both come back flagged, with confidence reduced and
the conflict cross-referenced, instead of silently returning both as
equally valid "facts."
It's a single air-gapped Rust binary, no cloud, ships with an MCP
server so Claude/other agents can use it directly. Early/MVP — looking
for people to break it and tell me what's wrong. Repo has a live
in-browser demo if you don't want to install anything locally: [demo link]
Happy to answer anything about the NLI approach, the PFO (Probabilistic
Fact Object) schema, or why I didn't just bolt this onto an existing
vector DB.
Author here. I got annoyed that every RAG/vector setup treats retrieved chunks as equally trustworthy — if a lobby-funded report and an IEA report disagree, a vector DB just returns both with the same confidence score. So I built a storage layer that runs an NLI (natural language inference) check on every insert, flags contradictions mechanically, and degrades confidence on the source that's out of step with corroborated data.
Quick example — insert this: {"claim_text": "North Sea wind capacity reached 35 GW in 2024", "source": "IEA Energy Report"} then this: {"claim_text": "North Sea wind capacity remained below 20 GW in 2024", "source": "CoalLobby2024"} and query it back — both come back flagged, with confidence reduced and the conflict cross-referenced, instead of silently returning both as equally valid "facts."
It's a single air-gapped Rust binary, no cloud, ships with an MCP server so Claude/other agents can use it directly. Early/MVP — looking for people to break it and tell me what's wrong. Repo has a live in-browser demo if you don't want to install anything locally: [demo link]
Happy to answer anything about the NLI approach, the PFO (Probabilistic Fact Object) schema, or why I didn't just bolt this onto an existing vector DB.
What is the minimal difference that it ignores? 3 kilometers and 2 miles are probably good answers to the same question.