Spaces:
Sleeping
Sleeping
File size: 1,171 Bytes
5e46830 915f0e9 c369d6c 915f0e9 c369d6c 915f0e9 c369d6c 915f0e9 27f5d6e 5e46830 27f5d6e 915f0e9 27f5d6e 5e46830 915f0e9 c369d6c 27f5d6e 5e46830 c369d6c 5e46830 |
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 |
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
from sentence_transformers import CrossEncoder
app = FastAPI()
# Load the CrossEncoder model
model = CrossEncoder(
"jinaai/jina-reranker-v2-base-multilingual",
automodel_args={"torch_dtype": "auto"},
trust_remote_code=True,
)
# Request and response models
class RerankRequest(BaseModel):
query: str
documents: List[str]
class RerankResult(BaseModel):
corpus_id: int
score: float
text: str
class RerankResponse(BaseModel):
query: str
results: List[RerankResult]
# Rerank function using rank()
@app.post("/rerank", response_model=RerankResponse)
def rerank(req: RerankRequest):
query = req.query
documents = req.documents
# Use model.rank() to get rankings based on the query and documents
rankings = model.rank(query, documents, return_documents=True, convert_to_tensor=True)
# Prepare the ranked results
ranked = [
{"corpus_id": ranking['corpus_id'], "score": float(ranking['score']), "text": ranking['text']}
for ranking in rankings
]
return RerankResponse(query=req.query, results=ranked)
|