
Recommendation patterns
A map from the recommendation you want to the signals that build it.
More like this — text
One embedding signal over the item's description; drop the seed; cut off below ~0.65. The single-signal Similar lookup is enough.
People also bought — graph A PageSpace (graph-embeddings) signal: items bought by behaviourally-similar customers. Text is irrelevant — topology carries the recommendation.
Personalised feed — graph + history
Content-similarity signals plus a low-weight positive signal on the user's own interactions, and a negative signal demoting already-seen items (combined with FuseFinal(Fusion.Discount)). Always FilterAsUser(CurrentUser).
Duplicate detection — text Before creating a new ticket, check for a near-duplicate. Seed by query text → embedding similarity → return results above 0.85, surfaced before the user submits.
Similar accounts — graph + graph
Two graph signals — shared product mix and shared segment — each scored by reciprocal rank and summed, scoped with FilterAsUser. The engine behind "accounts like this one" in a CRM:
var result = await scope.Graph.Query()
.StartAt(seed)
.ToSimilarity(o => o.MaxCandidates(count))
.AddSignal("by-product-mix", s => s.Weight(2.0f).UsingReciprocalRankFusion().From(ctx => ctx.Graph.Query()
.StartAt(seed).Out(N.Product.Type, E.Purchased).Out(N.Account.Type, E.Purchased)
.Except(ctx.Graph.Query().StartAt(seed))))
.AddSignal("by-segment", s => s.Weight(1.0f).UsingReciprocalRankFusion().From(ctx => ctx.Graph.Query()
.StartAt(seed).Out(N.Segment.Type, E.InSegment).Out(N.Account.Type, E.InSegment)
.Except(ctx.Graph.Query().StartAt(seed))))
.Fuse(Fusion.Sum)
.FilterAsUser(scope.CurrentUser)
.ExecuteAsync(scope.CancellationToken);
RAG candidate generation — text
Before sending context to an LLM, retrieve the most relevant chunks. StartAtSimilarTextAsync with the user's query as seed; top-k = 8 is a common starting point.
Going further: feed many similarity results into a WeightedGraph, extract clusters, and render them with ForceGraphView to visualise the recommendation neighbourhood. And once a recommendation tool exists, an agent can call it mid-conversation.