With the success of ChatGPT, many companies are building their own applications powered by Large Language Model embeddings, with purposes ranging from semantic search, to language generation to vertical chatbots. To do these you need an efficient way to store the LLM embeddings and find the best matches. There are now a myriad of vector databases (Pinecone, Weaviate, Milvus and many more), each with their own strengths for various purposes. More importantly as an emerging category its not clear what the best practices are for using them. When is a vector database alone enough to power the storage and retrieval needs for your app? When should it be combined with a conventional relational database? When is it enough to use a vector storage addon to an existing relational DB? We will finish with a tutorial of setting up a vector DB, storing some content and performing a semantic search.