Semantic Caching For Faster, Smarter LLM Applications