Hybrid Scoring¶
How the engine quantifies how relevant a piece of content is to a visitor, combining meaning, knowledge, and metadata.
Relevance is not one thing. A good recommendation can be relevant because it means something similar to what the visitor liked, because it shares people, places, or events with their interests, or because it matches a hard preference like language or media type. Hybrid scoring blends all three kinds of evidence into one number, then lets the system learn how much to trust each kind for each visitor.
The pipeline has two moves:
- Candidate generation: given a query or the last item viewed, pull nearest neighbours in vector space to form a candidate set across modalities and languages.
- Symbolic filtering and grounding: keep or re-rank candidates using Knowledge Graph facts and controlled vocabularies. A candidate close to "ghetto life" is kept only if its linked entities or VHA tags support that theme and its place and time constraints match the visitor's context.
A simple, effective hybrid score for item \(j\) in context \(C\):
| Term | Meaning |
|---|---|
| \(\cos(u, f_\theta(j))\) | similarity between the user behavioral embedding \(u\) and the item embedding \(f_\theta(j)\) |
| \(\Phi_{\mathrm{KG}}(j \mid C)\) | graph-based signal: paths between entities, WO2/VHA tag matches, temporal and geospatial consistency |
| \(\Phi_{\mathrm{meta}}(j \mid C)\) | metadata preferences or constraints (language, medium, sensitivity settings) |
| \(\alpha, \beta, \gamma\) | weights balancing distributional vs symbolic vs metadata evidence |
Weights are learned, not fixed. The weights \(\alpha, \beta, \gamma\) are tuned by framing recommendation as a contextual bandit:
flowchart LR
ctx["context<br/>(profile · session · query)"] --> act["action<br/>(recommendation)"]
act --> rew["reward<br/>implicit: clicks, dwell, returns<br/>explicit: ratings, saves, shares"]
rew --> upd["update weights<br/>maximise cumulative reward"]
upd --> ctx
Each recommendation is an action taken in a context; the system observes a reward from user feedback and updates its parameters to maximise cumulative reward. Over time it learns whether to lean on semantic similarity, symbolic grounding, or metadata filters for a given visitor. Two advantages: it adapts in real time without a full retraining cycle, and the bandit naturally balances exploration (testing less obvious recommendations) with exploitation (favouring likely fits).
The scored candidates then pass through a diversity step before display.
The implemented weighted fusion and the [0,1] scorer contract are in
Ranking.
Math rendering
The score is a weighted sum of three terms: cosine similarity to the user vector, a Knowledge Graph signal, and a metadata-preference signal.