Skip to Content
v1.33.8 · shipped One-screen report · Looks like your app Read the changelog →
ConceptsKnowledge graph

Knowledge graph

Mushi Mushi maintains a per-project knowledge graph of reports, components, fixes, and the developers who touched them.

Storage

BackendRoleStatus
pgvectorEmbedding-based dedup & similarityPrimary, always-on
Apache AGETrue graph queries (Cypher, paths)Parallel-write (Phase 1)
blast_radius_cache MVPer-component blast radiusRefreshed by pg_cron
intelligence_benchmarks_mvCross-customer (k≥5) benchmarkRefreshed nightly

Why both pgvector and AGE?

pgvector covers the 95% case (semantic dedup, “show me reports like this one”) with no operational extra cost. AGE handles the 5% that requires true graph traversal — “every report on <Checkout/> from the last release that also touched the same Stripe webhook.” AGE is opt-in via the graph_backend project setting; the parallel write keeps both in sync and an age_drift_audit table snapshots any divergence so we can repair it.

Indexing

Report and cluster embeddings use HNSW indexes. Codebase-file embeddings use an IVFFlat index on halfvec(1536). Columns that RLS policies filter on are indexed, because an RLS subquery on an un-indexed column gets slow as tables grow.

Bug Ontology

Tags are drawn from a shared Bug Ontology (bug_ontology), stored on each report as bug_ontology_tags. Because the tag set is shared, the same kind of issue gets the same tag in every project, without any project seeing another project’s reports.

Last updated on