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 |