Product search is a critical feature for any e-commerce platform, as it directly impacts sales and revenue. The effectiveness of the search function depends on how well it generates diverse and relevant results based on customer queries that plays a key role in meeting customer needs and driving conversions.
Most of the e-commerce websites are still using old fashioned search that is driven by traditional engine such as solr, elastic search etc. Imagine a smart AI based search portal which is capable to generate much diversified results instead of just relying on product descriptions and other indexed information.
Here is a Proof of Concept (PoC) for an enhanced search portal that acts like a virtual shopkeeper, delivering more diverse and relevant search results by accurately understanding the intent behind each query.
One of the best suitable options available is semantic search There are numerous AI based models to achieve such tasks and sentence transformers are one of those. Sentence Transformers or Sentence BERT has been built on existing transformer models such as BERT (Bidirectional Encoder Representations from Transformers). These models process text using self attention mechanisms to understand the relationships between words in a sentence, regardless of their position. If you want to know more about how BERT works, feature vectors, self attention mechanism etc, please refer other posts on this blog and page Understanding Transformers (BERT & GPT).
Data Setup
First, I would create a sample dataset that includes product name, description and categories those belong to. Clean and accurate data is the first perquisite which the search relevancy depends on.
Create Embeddings
Import required library for sentence transformers. The below code snippet will generate the vector embeddings for the above dataset. Note, in NLPs, the input text is first tokenized and converted in feature vectors(a numeric representation of all tokens) for further processing instead of directly being used. Here I have used the prebuilt sentence transformer (all-MiniLM-L6-v2), but you can always finetune it based on your business needs and have a custom version of it.
Running Search
Once embeddings have been created, you can process those to similarity search algorithms to get the semantic search results. Here, I have used FAISS(Facebook AI Similarity Search) for that purpose. You would need to install it using pip if not available.
I have put a query string "I want some good breakfast options" as search string and I get the below results. These results are searched based on the semantic similarity of search keyword entered. It doesn't need data to be indexed accurately to be pulled up. Sentence Transformer model has been trained with wide variety to text corpuses in such a way that it smartly identifies the contextually relevant data.
If you notice, I have displayed calculated scores as well (calculated based on the cosine similarity algorithm). Higher the score, much similar the results are. We can decide any score threshold saying above this score is directly relevant data and lower score can be some additional suggestions for the search results.
This is a basic application of Sentence Transformer models. These pre-trained models can be further finetuned to align more closely with specific business needs and domains. To explore how finetuning works in detail, please refer
Finetuning of Transformers in Natural Language Processing.
Comments
Post a Comment