Skip to content

v1.6.0 — Idempotent MERGE, configurable LLM endpoint, graph name cleanup

Choose a tag to compare

@Platano78 Platano78 released this 23 Apr 05:44
· 20 commits to main since this release

Faulkner-DB v1.6.0 — Three Extraction-Pipeline Fixes

This release is three targeted fixes in the relationship extraction pipeline. The MERGE fix is the important one — before this change, re-running the extractor (manually or via a nightly cron) created duplicate edges every time, silently inflating the graph.

Fixed

  • Idempotent edge creation. FalkorDBAdapter.create_relationship used CREATE unconditionally, so every extractor run added a fresh copy of every edge it detected. Now uses MERGE keyed on a 16-character content fingerprint: sha256(from_id|to_id|rel_type|evidence)[:16]. Re-runs with identical inputs are now idempotent. Legitimately distinct same-type edges (different evidence payloads) are preserved because their fingerprints differ. Behavioural fix only — no schema migration needed. Existing graphs continue to work; new duplicates simply will not be created on subsequent extractor runs.
  • Configurable LLM endpoint. RelationshipExtractor.__init__ previously hard-coded http://localhost:8081/v1 as the OpenAI-compatible base URL for relationship classification. Now read from the FAULKNER_LLM_ENDPOINT env var with the same localhost default. Override to any OpenAI-compatible endpoint — llama.cpp, vLLM, LM Studio, NVIDIA NIM, etc. Pass the BASE URL only (e.g. host:port/v1); the extractor appends /models for health detection and /chat/completions for enhancement.
  • Graph name consistency. default_graph_name in config/graphiti_config.yaml said faulkner_knowledge_graph (doesn't exist on any running instance); scripts/generate_report.py hard-coded faulkner (empty leftover from earlier testing); actual data lives in knowledge_graph. All three now aligned on knowledge_graph.

Upgrade Notes

  • No data migration. The MERGE change takes effect on new edges. Existing edges remain; if you want to deduplicate historical edges inserted under the old CREATE path, run the extractor once more with --full and then a Cypher pass to drop duplicates without a fingerprint property.
  • LLM endpoint default unchanged. If you were relying on the hard-coded localhost:8081, no change needed. If you want the extractor to hit a different host (common now that llama.cpp servers often live on a dedicated LAN box), export FAULKNER_LLM_ENDPOINT before running.
  • Pairs well with Agent Genesis v1.4.0 — its new sync-and-index.sh can optionally chain into this extractor after nightly indexing completes.

Full Changelog

See CHANGELOG.md for the complete 1.6.0 entry.