 Good afternoon, guys. I hope I sound good because I'm going to sing. No, I'm kidding. My name is Vishwesh Kirtivasan. I'm a machine learning engineer at Mastery Den. I thank my previous speaker for nicely setting up the context for my speech as well. I'm going to be talking about building a search engine that queries a probabilistic graphical model. So as you can see, we have built something ground up, not used something that's been existing off the shelf. It's a lightning talk, so I'm going to walk you through this in five minutes. So let's jump straight into the flow. The search engine itself consists of two components. One is the model, which obviously is the probabilistic graphical model, and the search index as well, which rather the documents will be stored. So we get queries in the form of images. In this case, we have a dress, and our goal is to fill in four shoes, bags, and accessories. So what is really complex that we couldn't use off the shelf algorithms is that it requires us to do association-based search. And the association is not just between the dress here and the shoe, bag, and jewelry individually, but the shoes and the bag need to go well with each other also. So it's a form of a multi-dimensional association problem. So just because if the shoe goes well with the dress, that doesn't mean that the shoe will go well with the bag, so on and so forth. So this is the non-trivial part of the problem that we kind of feel proud about solving. And we also have an online feedback system which constantly changes the model based on feedback from the users, and that will change the results in real time. So in Matsudan, we call this search microservice Batman. And this is in production, and these are the components of Batman, which are pretty comprehensive. Many of these components are common across different search engines that exist. But the four components that I'm going to focus on, which is what differentiates our system for the sake of association, are indexing, search. And with an example, I will be explaining about model and model update. So the documents are indexed as shown here. We have categorical, numerical, and high-dimensional vector data. And we will be performing searches on all three of these data types. And we also do a reverse indexing, similar to many other existing search engines on the categorical data. And our vector data is straightforward Numpy arrays, two-dimensional or multi-dimensional Numpy arrays. And because we have coded all of this in Python ground up, we have a great amount of flexibility in the scoring and searching methods. Some of them are listed out here. And to display the results in ranked order, we use one of three methods. One is you could choose one feature at a time, show results from that feature, and sample across the different features. Another is to actually score the different features that you have and take a linear combination of that. Or we could also do a hierarchical sorting where you would score based on one particular feature and break ties using the scores of another feature. So let's look at the example. Suppose we take the same example that I showed in the first slide. The dress could be represented in some feature space like this. And the model is going to be telling us what shoes, bags, and jewelry, for example, goes well with this dress. And that is also in the same feature space. So the response that the model returns to us would be attributes in the feature space with certain strengths based on the probabilities that drive the model. Now the next job is to actually go from the feature space back into the images. So to index the documents that we have to get the actual shoe product itself from the feature space. So this would be the final step in returning the results. And the real wow factor that we have is also that we can change the model to understand your behavior, the user's behavior, in real time. Because every time you give a feedback on the results, the model will be updated, and that would drive the results that come right after that. So I see that I have finished well before my time. So I would like to just inform you that we have our stall placed right outside, Matt Street Den. You can come and ask us any questions. I hope I have got you guys intrigued about solving an association problem straightforwardly just by using Python. So my email ID is here, and you can come and catch us at the booth outside. Thank you.