add timings in knowledge graph

This commit is contained in:
Manoj K 2025-08-26 15:08:20 +05:30
parent d836b2f259
commit ebee1e9331

View File

@ -112,11 +112,8 @@ export class KnowledgeGraphService {
sessionContext, sessionContext,
); );
const relatedEpisodesEntities = await getRelatedEpisodesEntities({ const normalizedTime = Date.now() - startTime;
embedding: await this.getEmbedding(normalizedEpisodeBody), logger.log(`Normalized episode body in ${normalizedTime} ms`);
userId: params.userId,
minSimilarity: 0.7,
});
if (normalizedEpisodeBody === "NOTHING_TO_REMEMBER") { if (normalizedEpisodeBody === "NOTHING_TO_REMEMBER") {
logger.log("Nothing to remember"); logger.log("Nothing to remember");
@ -127,6 +124,15 @@ export class KnowledgeGraphService {
}; };
} }
const relatedEpisodesEntities = await getRelatedEpisodesEntities({
embedding: await this.getEmbedding(normalizedEpisodeBody),
userId: params.userId,
minSimilarity: 0.7,
});
const relatedTime = Date.now() - normalizedTime;
logger.log(`Related episodes entities in ${relatedTime} ms`);
// Step 2: Episode Creation - Create or retrieve the episode // Step 2: Episode Creation - Create or retrieve the episode
const episode: EpisodicNode = { const episode: EpisodicNode = {
uuid: crypto.randomUUID(), uuid: crypto.randomUUID(),
@ -149,6 +155,9 @@ export class KnowledgeGraphService {
previousEpisodes, previousEpisodes,
); );
const extractedTime = Date.now();
logger.log(`Extracted entities in ${extractedTime - relatedTime} ms`);
// Step 3.1: Context-aware entity resolution with preset type evolution // Step 3.1: Context-aware entity resolution with preset type evolution
await this.resolveEntitiesWithContext( await this.resolveEntitiesWithContext(
extractedNodes, extractedNodes,
@ -161,6 +170,9 @@ export class KnowledgeGraphService {
episode, episode,
); );
const expandedTime = Date.now();
logger.log(`Expanded entities in ${expandedTime - extractedTime} ms`);
// Step 4: Statement Extrraction - Extract statements (triples) instead of direct edges // Step 4: Statement Extrraction - Extract statements (triples) instead of direct edges
const extractedStatements = await this.extractStatements( const extractedStatements = await this.extractStatements(
episode, episode,
@ -168,6 +180,11 @@ export class KnowledgeGraphService {
previousEpisodes, previousEpisodes,
); );
const extractedStatementsTime = Date.now();
logger.log(
`Extracted statements in ${extractedStatementsTime - expandedTime} ms`,
);
// Step 5: Entity Resolution - Resolve extracted nodes to existing nodes or create new ones // Step 5: Entity Resolution - Resolve extracted nodes to existing nodes or create new ones
const resolvedTriples = await this.resolveExtractedNodes( const resolvedTriples = await this.resolveExtractedNodes(
extractedStatements, extractedStatements,
@ -175,6 +192,11 @@ export class KnowledgeGraphService {
previousEpisodes, previousEpisodes,
); );
const resolvedTriplesTime = Date.now();
logger.log(
`Resolved Entities in ${resolvedTriplesTime - extractedStatementsTime} ms`,
);
// Step 6: Statement Resolution - Resolve statements and detect contradictions // Step 6: Statement Resolution - Resolve statements and detect contradictions
const { resolvedStatements, invalidatedStatements } = const { resolvedStatements, invalidatedStatements } =
await this.resolveStatements( await this.resolveStatements(
@ -183,12 +205,22 @@ export class KnowledgeGraphService {
previousEpisodes, previousEpisodes,
); );
const resolvedStatementsTime = Date.now();
logger.log(
`Resolved statements in ${resolvedStatementsTime - resolvedTriplesTime} ms`,
);
// Step 7: ADd attributes to entity nodes // Step 7: ADd attributes to entity nodes
const updatedTriples = await this.addAttributesToEntities( const updatedTriples = await this.addAttributesToEntities(
resolvedStatements, resolvedStatements,
episode, episode,
); );
const updatedTriplesTime = Date.now();
logger.log(
`Updated triples in ${updatedTriplesTime - resolvedStatementsTime} ms`,
);
for (const triple of updatedTriples) { for (const triple of updatedTriples) {
const { subject, predicate, object, statement, provenance } = triple; const { subject, predicate, object, statement, provenance } = triple;
const safeTriple = { const safeTriple = {
@ -215,6 +247,9 @@ export class KnowledgeGraphService {
// Save triples in parallel for better performance // Save triples in parallel for better performance
await Promise.all(updatedTriples.map((triple) => saveTriple(triple))); await Promise.all(updatedTriples.map((triple) => saveTriple(triple)));
const saveTriplesTime = Date.now();
logger.log(`Saved triples in ${saveTriplesTime - updatedTriplesTime} ms`);
// Invalidate invalidated statements // Invalidate invalidated statements
await invalidateStatements({ statementIds: invalidatedStatements }); await invalidateStatements({ statementIds: invalidatedStatements });