Small decisions. Interesting possibilities.Submit contentSubmit
Graphiti Jev Deduplication preview

Graphiti Jev Deduplication

Use Jev typed decisions to deduplicate graph entities and resolve duplicate or contradictory facts.

Added to Jevfast

How it uses Jev

Graphiti routes its node-deduplication and edge-resolution prompts through a Jev LLM client. For node deduplication, Jev receives the current message, extracted entities, and existing entities, then returns a Choice mapping each new entity to an existing candidate ID or none. For edge resolution, Jev returns Noul answers for duplicate and contradiction checks; the client applies separate 0.7 duplicate and 0.8 contradiction thresholds. The client is scoped to these two prompt names and does not replace Graphiti's general generation client.

What Jev decides

Check whether a new fact duplicates an existing factExample answers · not a recorded Jev response · Source ↗
Question 1 · dup{idx}
YOUR APP
INSTRUCTION

Decide whether an existing fact states the same information as the new fact, including when it contains more detail.

STATE

The state contains the new fact, existing facts, and fact-invalidation candidates. One question is generated for each existing fact using its index.

JEV · NOUL
YesNo

App workflow

  1. Build deduplication questions

    Graphiti renders its existing node or edge prompt, converts the rendered state and candidates into Jev typed questions, and sends only dedupe_nodes.nodes or dedupe_edges.resolve_edge through the Jev client.

  2. Map decisions back to graph results

    For nodes, Graphiti maps the selected candidate ID to an entity resolution, with none represented as -1. For edges, it compares Noul probabilities with the configured duplicate and contradiction thresholds and returns matching fact indices.

Why it is interesting

The integration turns two graph-maintenance judgments into explicit typed decisions while keeping candidate construction, temporal rules, and threshold-based result assembly in Graphiti. It shows how to insert bounded classification into a larger LLM workflow without routing generation through the decision service.