Spaces:
Sleeping
Sleeping
File size: 1,461 Bytes
fd91b9f b66e253 fd91b9f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
from flask import Flask, request, jsonify
from sentence_transformers import CrossEncoder
app = Flask(__name__)
model_name = "truong1301/reranker" # Replace with your actual model if different
cross_encoder = CrossEncoder(model_name, num_labels=1)
@app.route("/rerank", methods=["POST"])
def rerank():
try:
# Get JSON data from the request (query and list of documents)
data = request.get_json()
query = data.get("query", "")
documents = data.get("documents", [])
if not query or not documents:
return jsonify({"error": "Missing query or documents"}), 400
# Create pairs of query and documents for reranking
query_doc_pairs = [(query, doc) for doc in documents]
# Get reranking scores from the cross-encoder
scores = cross_encoder.predict(query_doc_pairs).tolist()
# Combine documents with their scores and sort
ranked_results = sorted(
[{"document": doc, "score": score} for doc, score in zip(documents, scores)],
key=lambda x: x["score"],
reverse=True
)
return jsonify({"results": ranked_results})
except Exception as e:
return jsonify({"error": str(e)}), 500
@app.route("/", methods=["GET"])
def health_check():
return jsonify({"status": "Server is running"}), 200
if __name__ == "__main__":
app.run(host="0.0.0.0", port=7860) # Default port for Hugging Face Spaces
|