How to determine semantic differences in NLP
Out of the box, something like Google's Universal Sentence Encoder (USE) may work for your use-case. Many of the common NLP embedding techniques nowadays work on individual words and so creating sentence-level embeddings means averaging multiple word-level vectors together. USE was built to operate at the sentence level, so you may find it better.
The original paper can be found here:
https://arxiv.org/abs/1803.11175
An example blog post leveraging USE:
https://medium.com/@gaurav5430/universal-sentence-encoding-7d440fd3c7c7