Similarity Search for Product Matching @ Semantics3
One of the major offerings of Semantics3 is our universal product data catalog gathered through large scale indexing of the public web. For each catalog, duplicated entries of the same product across multiple retailers need to be merged/removed. In this talk, we will go through the technical challenges in such a large scale “product matching” system, where millions of products are often compared against millions of others (leading to trillions of pair-wise comparisons). Both traditional and state-of-the-art approaches will be discussed in solving this task.
Introduction [~ 5 mins]
This section will present an overview of the problem, the use cases that motivate it and establish the tone for the rest of the presentation.
- Product Matching: What is it and Why is it important?
- Similarity Search for Product Matching: What is it and how does it speed up matching?
- Example Case for Similarity Search: Sample product document and sample query document to explain the following sections.
Traditional Text Search Approaches [~ 5 mins]
This section will cover our intial attempt at the similarity search problem using traditional text based methods largely leveraging elasticsearch.
- Overview of how we set up the problem
- Bottlenecks we hit and available tuning options
- Examples of real queries
Lessons from Traditional Text Search Approaches [~ 5 mins]
This section will cover some of the key insights we gleaned from traditional text approaches and how we needed to reframe the problem.
- The nature of our data/problem and why elasticsearch wasn’t a good fit.
- Need for indexing multi-modal data
- Examples of failed cases
- Search is only as good as the document’s representation.
Representation Learning [~ 10 mins]
This section would cover how we reframed this as a representation learning problem and the different network architectures we tried, how we suited it to our needs, what worked/didn’t work and the challenges we faced along the way.
- How we reframed the problem
- Different network architectures we tried and their results.
- Examples of success cases which had failed previously.
- Infrastructure and scaling challenges
Infrastructure Challenges [~ 5 mins]
Solving the representation problem didn’t necessarily solve the similarity search problem. We only had a way to sufficiently represent all the product information on the vector space. This section will cover the infrastructure challenges, the options we considered and how we ended up choosing FAISS.
- Challenges, Constraints
- Re-evaluating Elasticsearch
- Evaluating FAISS
- Key bencmarks
Conlusion [~ 2 mins]
Familiarity with text search paradigms will be a good-to-have (not essential).
Abishek is a member of the data science team at Semantics3, which offers data and AI solutions for ecommerce marketplaces (catalog generation & enrichment, seller on-boarding) and logistics companies (HTS/tariff classification, attribute enrichment). Among these, Abishek is the lead data scientist working on product matching and catalog generation.
- FAISS: https://github.com/facebookresearch/faiss
- Billion Scale Similarity Search: https://arxiv.org/pdf/1702.08734.pdf
- Talk on Product Matching at Fifth Elephant 2017: https://www.youtube.com/watch?v=6XaGsDqT_m4
- LinkedIn: https://www.linkedin.com/in/abishek-bhat-a5985616/
- GitHub: http://github.com/abishekk92
- Blog: https://www.semantics3.com/blog/author/abishek/