From c9cbac87acf121b4f8318d25f7c121fb6c8b8ae5 Mon Sep 17 00:00:00 2001 From: Storme-bit Date: Mon, 27 Apr 2026 03:41:56 -0700 Subject: [PATCH] knowledge graph entity fixes --- packages/memory-service/src/entities/extraction.js | 2 +- packages/memory-service/src/entities/index.js | 4 ++-- packages/shared/src/config/constants.js | 11 +++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/memory-service/src/entities/extraction.js b/packages/memory-service/src/entities/extraction.js index ecd11c9..c4dd0e1 100644 --- a/packages/memory-service/src/entities/extraction.js +++ b/packages/memory-service/src/entities/extraction.js @@ -6,7 +6,7 @@ const EXTRACTION_URL = getEnv('EXTRACTION_URL', 'http://localhost:11434'); const EXTRACTION_MODEL = getEnv('EXTRACTION_MODEL', 'qwen2.5:3b'); // ChatML format — see buildExtractionPrompt const EMBEDDING_SERVICE_URL = getEnv('EMBEDDING_SERVICE_URL', SERVICES.EMBEDDING_URL); -const ENTITY_TYPES = ['person', 'place', 'project', 'technology', 'concept', 'organization']; +const ENTITY_TYPES = ENTITIES.TYPES; const IGNORED_NAMES = ['good morning', 'good night', 'hello', 'goodbye', 'thanks', 'thank you']; // NOTE: This prompt uses ChatML format (<|im_start|> / <|im_end|> tags), which is diff --git a/packages/memory-service/src/entities/index.js b/packages/memory-service/src/entities/index.js index fe1de87..ddea3b1 100644 --- a/packages/memory-service/src/entities/index.js +++ b/packages/memory-service/src/entities/index.js @@ -7,8 +7,8 @@ const { parseRow } = require ('@nexusai/shared') function upsertEntity(name, type, notes = null, metadata = null, source = 'extraction') { const db = getDB(); const stmt = db.prepare(` - INSERT INTO entities (name, type, notes, metadata, source) - VALUES (?, ?, ?, ?, ?) + INSERT INTO entities (name, type, notes, metadata, source, last_seen_at) + VALUES (?, ?, ?, ?, ?, unixepoch()) ON CONFLICT(name, type) DO UPDATE SET -- First extraction wins: notes are never overwritten once set. -- Revisit during Memory Consolidation Lifecycle (Phase 2) — once entity diff --git a/packages/shared/src/config/constants.js b/packages/shared/src/config/constants.js index 0bc84db..99c187e 100644 --- a/packages/shared/src/config/constants.js +++ b/packages/shared/src/config/constants.js @@ -83,6 +83,17 @@ const ENTITIES = { THRESHOLD: 0.55, // Minimum confidence score for an extracted entity to be included in the results PROMOTION_THRESHOLD: 3, // mention_count threshold before entity is considered well-established GRAPH_HOP_DEPTH: 1, // Default traversal depth for neighborhood queries + TYPES: [ + 'person', + 'place', + 'project', + 'technology', + 'concept', + 'organization', + 'character', + 'event', + 'topic' + ], } module.exports = {