I was struggling with a bug (manipulating arrays) in the code available here em013 Doing and Embedded Semantic Search - YouTube
It works better using
df['similarities'] = df.ada_embedding.apply(lambda x: np.dot(x, searchvector) / (np.linalg.norm(x) * np.linalg.norm(searchvector)))
Than
df['similarities'] = df.ada_embedding.apply(lambda x: cosine_similarity(x, searchvector))
Cheers