feat: fix verb storage pipeline and implement relationship-aware neural clustering
- Add atomic verb saving with rollback on metadata creation failures - Implement missing getVerbsForNoun() method required by neural APIs - Fix broken FileSystemStorage filter methods that returned empty arrays - Add scalable clustersWithRelationships() method with batching for millions of nodes - Enhance error handling and logging throughout verb storage pipeline - Add comprehensive relationship analysis with intra/inter-cluster edges - Improve API consistency between noun and verb methods 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
455689f8fd
commit
3f0c587cb1
5 changed files with 339 additions and 17 deletions
|
|
@ -152,9 +152,34 @@ export abstract class BaseStorage extends BaseStorageAdapter {
|
|||
embedding: verb.embedding
|
||||
}
|
||||
|
||||
// Save both the HNSWVerb and metadata
|
||||
await this.saveVerb_internal(hnswVerb)
|
||||
await this.saveVerbMetadata(verb.id, metadata)
|
||||
// Save both the HNSWVerb and metadata atomically
|
||||
try {
|
||||
console.log(`[DEBUG] Saving verb ${verb.id}: sourceId=${verb.sourceId}, targetId=${verb.targetId}`)
|
||||
|
||||
// Save the HNSWVerb first
|
||||
await this.saveVerb_internal(hnswVerb)
|
||||
console.log(`[DEBUG] Successfully saved HNSWVerb file for ${verb.id}`)
|
||||
|
||||
// Then save the metadata
|
||||
await this.saveVerbMetadata(verb.id, metadata)
|
||||
console.log(`[DEBUG] Successfully saved metadata file for ${verb.id}`)
|
||||
|
||||
} catch (error) {
|
||||
console.error(`[ERROR] Failed to save verb ${verb.id}:`, error)
|
||||
|
||||
// Attempt cleanup - remove verb file if metadata failed
|
||||
try {
|
||||
const verbExists = await this.getVerb_internal(verb.id)
|
||||
if (verbExists) {
|
||||
console.log(`[CLEANUP] Attempting to remove orphaned verb file ${verb.id}`)
|
||||
await this.deleteVerb_internal(verb.id)
|
||||
}
|
||||
} catch (cleanupError) {
|
||||
console.error(`[ERROR] Failed to cleanup orphaned verb ${verb.id}:`, cleanupError)
|
||||
}
|
||||
|
||||
throw new Error(`Failed to save verb ${verb.id}: ${error instanceof Error ? error.message : String(error)}`)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue