For enterprise developers, the interesting question is not whether a graph makes an answer sound smarter. It is whether the underlying relationships produce better candidates—and whether those candidates remain available, appropriate and accessible to the person asking.
Moving beyond the “everyone buys bananas” problem
Neo4j’s accompanying retail explanation describes a familiar recommendation trap: ranking products by raw co-purchase counts can allow popular staples to dominate. Its illustrative example has a basket containing organic spinach, avocado and peanut butter receiving a banana recommendation because bananas occur so frequently in historical transactions. The vendor proposes comparing product neighborhoods instead, potentially exposing less-obvious affinities such as specialty dips or hot sauce. These are examples, not published customer results.
The technical distinction is useful. Neo4j’s Graph Data Science documentation says Node Similarity compares nodes according to the neighbors they share. It supports Jaccard, Overlap and Cosine similarity metrics, with configuration options for relationship weights and similarity thresholds. Rather than merely asking how often two products appeared together, a modeled graph can support comparisons of their surrounding connections.
However, similarity is not a synonym for suitability. As an implementation consideration, a retailer should distinguish two questions:
- Complement: What would make sense alongside the items already selected?
- Substitute: What could replace an unavailable item while meeting the customer’s requirements?
A high similarity score should generate a candidate, not automatically authorize a replacement. A specialty dip might complement a basket perfectly while being a terrible substitute for its missing peanut butter. The graph needs business rules, not just better mathematics.
Neo4j’s integration is not Microsoft’s native graph service
One important distinction can disappear behind the phrase “native Fabric integration”: Neo4j Graph Intelligence for Microsoft Fabric and Microsoft’s own graph capability are separate offerings.
Neo4j’s product datasheet describes creating graphs from OneLake tables, graph exploration within the Fabric workspace, and scheduled Spark jobs between OneLake and Neo4j AuraDB. It also describes managed Azure operations and a combination of Azure enterprise controls with Neo4j node-level role-based access control. That is a partner workload architecture, with its own graph engine and operational considerations.
Microsoft Learn separately documents graph in Microsoft Fabric as a labeled property graph over structured OneLake data. Microsoft’s service supports GQL and natural-language-to-GQL querying, and its graph-powered reasoning integration with Fabric Data Agent is identified as preview. Those facts should not be used to imply that Neo4j’s Cypher and Graph Data Science workflows are automatically interchangeable with Microsoft’s graph artifacts.
For developers, the practical takeaway is to identify the execution path before designing the agent: which graph engine answers the question, which query language it receives, and which service owns refresh, permissions and consumption.
What the Data Agent documentation actually establishes
Microsoft’s Data Agent documentation provides concrete boundaries for its native graph route. An agent can use a Fabric graph model or graph queryset as a source, execute GQL against the underlying Fabric Graph artifact, and incur graph operation consumption. Microsoft also documents a maximum of five data sources per agent. These are Microsoft-documented capabilities, not confirmation of the precise Neo4j connection demonstrated in the session.
There is also a configuration detail worth administrators’ attention: Microsoft’s graph-source configuration does not allow authors to scope an agent to selected nodes and edges through schema selection. It does support agent instructions, data-source instructions, descriptions and example queries.
The operational implication is to review graph access and exposure deliberately rather than assume that the agent offers the same schema-selection controls as a SQL source.
Neo4j advertises a hands-on walkthrough connecting graph datasets to Fabric Data Agents, but the public session page does not expose a reproducible configuration procedure. Exact connector settings, authentication steps and working queries cannot responsibly be reconstructed from that description alone.
“Real-time” needs two separate measurements
The session’s real-time framing deserves a careful distinction between data freshness and response latency.
Neo4j’s datasheet explicitly describes scheduled synchronization between OneLake and AuraDB. It does not establish a refresh interval or end-to-end freshness guarantee. Consequently, a fast graph response alone would not prove that a substitution reflects the latest inventory change.
Algorithm computation also needs its own budget. Neo4j’s Node Similarity documentation lists time complexity of O(n³) and space complexity of O(n²), and recommends checking memory requirements. It notes that limiting per-node output with topK does not eliminate the underlying computation. This is a useful counterweight to any assumption that calculating recommendations across a large graph is automatically a constant-time operation.
An architectural inference follows: teams should evaluate computing similarity candidates separately from serving them conversationally. Precomputed candidates may support a responsive agent, but their freshness must still be measured.
A practical evaluation plan
For organizations exploring this scenario, the following is a proposed validation checklist—not a claim about features demonstrated in the video:
- Define the task. Separate basket expansion from out-of-stock substitution.
- Specify the relationships. Decide which customer, order, product and inventory connections should influence candidates.
- Apply eligibility rules. Check availability, product attributes, price constraints and customer restrictions before presenting a replacement.
- Measure freshness and latency independently. Record when source data changed, when the graph reflected it and how long the answer took.
- Compare against a baseline. Test graph-generated candidates against the existing recommendation method rather than assuming improvement.
- Test permissions and failure behavior. Include unauthorized questions, missing inventory information and cases where no acceptable substitute exists.
Success should mean more than a fluent answer. It should mean an eligible recommendation, supported by identifiable data, delivered within a measured operational window.
The bottom line
Neo4j’s Fabric session presents a concrete enterprise-AI use case: using connected business data and neighborhood similarity to ground conversational recommendations and substitutions. Its strongest supported value is the architecture and method, not a proven accuracy uplift.
The sensible approach is to treat the graph as a source of recommendation evidence—not a replacement for inventory checks, access controls or evaluation. A copilot that understands relationships is promising. One that can explain its suggestion, respect constraints and decline a bad substitution is the more useful destination.
References
- Building Graph-Grounded Copilots with Neo4j in Fabric: Real-Time Recommendations & Substitutions Neo4j · 2026-10-02T15:19:53
- Beyond the Banana: Driving real-time recommendations with graph-grounded Copilots in Microsoft Fabric neo4j.com
- Add a data source to Data Agent - Microsoft Fabric | Microsoft Learn learn.microsoft.com