v1.6.0 — Idempotent MERGE, configurable LLM endpoint, graph name cleanup
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_relationshipusedCREATEunconditionally, so every extractor run added a fresh copy of every edge it detected. Now usesMERGEkeyed 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-codedhttp://localhost:8081/v1as the OpenAI-compatible base URL for relationship classification. Now read from theFAULKNER_LLM_ENDPOINTenv 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/modelsfor health detection and/chat/completionsfor enhancement. - Graph name consistency.
default_graph_nameinconfig/graphiti_config.yamlsaidfaulkner_knowledge_graph(doesn't exist on any running instance);scripts/generate_report.pyhard-codedfaulkner(empty leftover from earlier testing); actual data lives inknowledge_graph. All three now aligned onknowledge_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
CREATEpath, run the extractor once more with--fulland 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), exportFAULKNER_LLM_ENDPOINTbefore running. - Pairs well with Agent Genesis v1.4.0 — its new
sync-and-index.shcan optionally chain into this extractor after nightly indexing completes.
Full Changelog
See CHANGELOG.md for the complete 1.6.0 entry.