extractor.py _check_dedup() fires a single LLM call for every ingested fact that has any stored fact with sim>0.30. With 100+ facts stored this is O(N) LLM calls per ingestion. Fix: (1) skip the LLM check when the earlier high-sim dedup branch (>0.90) already handled it; (2) raise the threshold from 0.30 to ~0.50; (3) optionally batch multiple new facts into one LLM call.
extractor.py _check_dedup() fires a single LLM call for every ingested fact that has any stored fact with sim>0.30. With 100+ facts stored this is O(N) LLM calls per ingestion. Fix: (1) skip the LLM check when the earlier high-sim dedup branch (>0.90) already handled it; (2) raise the threshold from 0.30 to ~0.50; (3) optionally batch multiple new facts into one LLM call.