So in summary we've covered a lot of ground in this module. So we've returned to this task of retrieving a document of interest. And have formulated this in terms of performing nearest neighbor search. We reviewed our nearest neighbor search algorithms for performing one nearest neighbors search as well as K nearest neighbor search. But we got into some of the nitty-gritty of these algorithms. In particular, thinking about how we represent our data. So we focused here on different representations of documents. But we also talked about the really, really critical idea of, how do we compute distances between two different data points? And we went through a set of different ways to compute these types of distances and discussed the trade-offs that we're faced with. And the fact that there's really no one answer for what's the right data representation and what's the right distance to use. And that's where a lot of domain knowledge comes in. It can have a lot of impact on the performance of the algorithms. And you really have to think very critically there. But then, for the rest of the module we talked about ways to think about performing really efficient in nearest neighbour search to help handle the fact that the brute force search. When you have lots and lots of observations, can be really, really, really computationally intensive. So we talked about KD-trees. That's a very efficient data structure that we can use for performing our nearest neighbor search. And we showed when it can be useful, but we also said that it's struggled in high dimensions. So then we turned to this idea of locality sensitive hashing, which only provides approximate nearest neighbors. But we motivated that that can actually be reasonable in a really large set of different applications. But, this locality sense of hashing is really, really, really simple to implement. And can be very efficient. And provide good approximations that have probabilistic guarantees on their approximations made. So, coming out of this module, you really have some real powerful tools that are useful in just a huge number of retrieval tasks going beyond document retrieval. Lots and lots of applications where you have some query and you want to find some similar object. And all the tools we've discussed in this module generalize to these other applications as well. And so, I'll just leave you with a summary of a set of things that you should be able to do now that you've seen this module. [MUSIC]