We use Google Universal Sentence Encoder which operates on TensorFlow. https://tfhub.dev/google/universal-sentence-encoder/1 It's impressive because it can handle multi-word "keywords", which ends up being forgotten a lot in planning, but critical in actual use. It's pretrained on several languages already by Google so you don't have to look for a source corpus. A lot of alternatives make you go do something like grab a bunch of Wikipedia, or they provide you with English-only source corpus of the top 50,000 articles there. This is way ahead of those approaches.