import gradio as gr from sentence_transformers import CrossEncoder # Load and optimize the model model = CrossEncoder( "jinaai/jina-reranker-v1-tiny-en", trust_remote_code=True ) # Function to rerank documents def rerank(query, documents): documents = documents.split("&&&") # Use special delimiter inputs = [[query, doc] for doc in documents if doc.strip()] scores = model.predict(inputs) ranked_docs = sorted(zip(documents, scores), key=lambda x: x[1], reverse=True) return [{"document": doc, "score": round(score, 4)} for doc, score in ranked_docs] # Gradio Interface iface = gr.Interface( fn=rerank, inputs=["text", gr.Textbox(label="Documents (Separate with &&&)", placeholder="Doc1 &&& Doc2 &&& Doc3")], outputs="json", title="JinaAI v2 Reranker API (Optimized)", description="Enter a query and documents (separated by '&&&'). The model will rank them based on relevance.", ) iface.launch()