Semantic search overcomes limitations of keyword-based search by using machine learning models like Bi-Encoder and Cross-Encoder in a vector database. Bi-Encoders are fast but less accurate, while Cross-Encoders are more accurate but slower. Combining these two models can improve the search experience by first using Bi-Encoders to retrieve a list of result candidates and then using Cross-Encoders for reranking the most relevant results. This approach benefits from both efficient retrieval and high accuracy, making it suitable for large scale datasets.