Notes

Content Vector

Strip away everything a recommender has learned from clicks and the item itself remains — its genre, its tags, its price, its language. A content vector is that description written as a row of numbers, so items can be compared by what they are rather than by who has already engaged with them.

Building the row of numbers
Every item is encoded into the same fixed-length vector: one-hot blocks for single-valued categories, multi-hot or TF-IDF-weighted blocks for tags and text, learned embeddings for high-cardinality fields such as brand, and normalised numeric fields for price or duration. Because all items share that space, the cosine between two vectors is a usable measure of resemblance. A user profile lives in the same space — a recency-weighted average of the vectors of items the user engaged with — which reduces profile matching to a single dot product.

Where it earns its place

  • A film uploaded this morning has a complete content vector and zero interactions, so it can be retrieved and scored on day one.
  • Concatenated onto a learned item embedding, it gives a factorisation model something to lean on while interaction signal is still thin.
  • Indexed in FAISS, the vectors turn a similar-items query into an approximate nearest-neighbour lookup instead of a scan over the catalogue.

What it cannot represent
The vector knows only what was recorded. Thin metadata leaves thousands of items with near-identical vectors, and an unnormalised price field will quietly dominate every similarity it enters. More fundamentally it describes items, not taste, so similarity converges on more of the same — the narrowness content-based filtering is known for.

A content vector is one item's attributes encoded as a single fixed-length numeric vector — one-hot and multi-hot categorical blocks, TF-IDF-weighted tags, embeddings for large vocabularies, normalised numeric fields. Because every item and every user profile occupies the same space, scoring reduces to a cosine or dot product. It is the representation that lets an item with no interaction history be retrieved and ranked at all.

Think of a librarian who fills in a small card for every book: subject, language, length, reading level, a few keywords. Two books with near-identical cards are probably alike, even if nobody has borrowed either one.

A content vector is that card, written as numbers so software can compare millions of them in an instant. It lets a system say this is like that without needing anyone's viewing history at all. That matters most for things that have only just arrived. A film released this morning has no viewers yet, but its card is already complete — so it can still be put in front of the people most likely to want it.