| from sentence_transformers import CrossEncoder | |
| import numpy as np | |
| # Let's use a reranker to get better results from our semantic search | |
| def reranker(query, matches): | |
| pairs = [] | |
| for match in matches: | |
| pairs.append([query, match["metadata"]["text"]]) | |
| model = CrossEncoder('cross-encoder/ms-marco-TinyBERT-L-2-v2', max_length = 512) | |
| scores = model.predict(pairs) | |
| top_indices = np.argsort(scores)[::-4] | |
| top_results = ["Class: " + matches[index]["metadata"]["text"] for index in top_indices] | |
| return top_results |