Jon Bratseth
Jon Bratseth

Farfetch: Scaling recommendations with Vespa

Farfetch has written a blog post explaining how they use Vespa to scale online recommendations in their e-commerce platform:

One of our major challenges is to do it without increasing our infrastructure indefinitely. To tackle this scalability challenge, we choose to use a vector database and Vespa matches our necessity because of all the available features:

  • Tensor Operations: Dense and sparse vector operations (e.g. map, reduce, slice, etc.).
  • Complex Ranking: Compute different signals (e.g. bm25, dot-product, cosine, etc.) and use them freely to rank document matches.
  • Keyword Search: You can use Vespa like Elasticsearch.
  • LTR: Native model service that can be used for ranking (e.g. LTR).
  • Filtering: Pre and post-filtering that you can tune to fit your use cases.
  • Performance: C++ code optimised to use SIMD operations when possible.

With this, we intend to serve all recommendations for all platforms using Vespa and have no scalability issues when a new online retailer joins our services.

The full post goes on to provide a great explanation of how to leverage Vespa’s support for dense and sparse tensors in combination with vector search to do the large matrix multiplications typical of recommenders without storing large vectors on documents, while also keeping latency below 100 ms. Read it at Farfetch’s blog.