{
  "uid": "cogitave.learn.query-the-estate-with-cogitave-query.summary",
  "kind": "moduleUnit",
  "href": "/modules/query-the-estate-with-cogitave-query/summary/",
  "title": "Summary",
  "summary": "",
  "type": null,
  "products": [],
  "roles": [],
  "levels": [],
  "subjects": [],
  "headings": [
    "Next steps"
  ],
  "source": "You now know how a query actually resolves against Core's canonical graph.\n\nIn this module, you:\n\n- Named the **three signals** Cogitave Query fuses - lexical (BM25 over immutable segments), dense (HNSW over per-node embeddings), and graph structure - and why none of them alone is enough for technical or agent queries.\n- Traced the **fusion step**: Reciprocal Rank Fusion, chosen over a weighted linear blend of scores because rank-based fusion sidesteps reconciling BM25's unbounded scores with cosine's bounded range, and lets retrievers change without recalibration.\n- Saw what the **graph-aware rerank** adds once lexical and dense are already fused - a Personalized PageRank structural prior, plus ranking signals for moniker freshness, audience, prerequisite proximity, level fit, and authority - and that facets are graph traversals, not a second taxonomy to maintain.\n- Read the **bounded `query_graph` contract** that lets an agent pattern-match the graph directly: read-only, allowlisted to the 9 edge labels, depth- and row-capped, timed out, and parameterized only - a hard, server-enforced contract rather than advisory guidance.\n\n## Next steps\n\n- @cogitave.learn.native-mcp-interface - the next module in this path, which takes the surfaces this one only named - the native MCP tools and `cogitave://` resources - and teaches the interface itself.\n- The **Cogitave Query** doc, in the estate's core repository, is worth a reread directly; this module followed its section order.\n- **ADR-0002 - Hybrid retrieval** is the decision record behind the fusion choice, with the options that were rejected and why.\n",
  "partOf": "cogitave.learn.query-the-estate-with-cogitave-query",
  "durationInMinutes": 3,
  "quiz": null
}