add timings in knowledge graph

This commit is contained in:
Manoj K 2025-08-26 15:08:20 +05:30 committed by Harshith Mullapudi
parent 7205b909a4
commit 1bae793675

View File

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