Skip to content

A fact with a value and an undeclared object loses the value #685

Description

@WaylandYang

What happens

When the model writes a fact with both a value and an object that it did not declare as an entity, the whole fact is lost: the value, the object phrase and the evidence.

Seen on the recall bench (NVIDIA corpus, DeepSeek-V3), in the SB Energy exhibit chunk:

{"subject": "SB Energy", "subject_ref": "k2", "predicate": "build",
 "object": "new energy generation", "object_ref": null,
 "value": "at least 10 GW",
 "quote": "SB Energy and SoftBank will build at least 10 GW of new energy generation"}

The same chunk in another round came back as value-only ("value": "at least 10 GW of new energy generation", no object), and those facts landed. So whether "at least 10 GW", "at least $4.2 billion" and "incremental $40 million" reach the graph depends on which of two equally reasonable shapes the model picks. One round lost all three (46/52 → 40/52 on the exhibit alone). The shape shows up in 0–1.5% of facts per round, on builds before and after #637 and #670.

Why

In extraction.rs, the literal branch accepts (value, no object), an object that is itself a quantity, and an undeclared literal-looking object under an unknown predicate. (value, undeclared non-literal object) matches none of those, so the fact goes to the relation path. There its object isn't a declared entity, and it is dropped.

Fix

This is structure only, with no words involved. When a fact carries a value and its object is neither referenced (object_ref) nor declared in the response, the value is the literal. Keep it as a value fact, and carry the object phrase in the surface predicate: build + "new energy generation" is proposed as build new energy generation. The phrase is kept rather than discarded, and the quote stays as evidence. A declared or referenced object keeps the relation path as today.

Test: that exact reply shape lands as a value fact with the phrase in its proposed predicate. A declared object still makes an edge.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions