Views
No views yet
1from itertools import product
2
3import torch.nn.functional as F
4from optimum.onnxruntime import ORTModelForSequenceClassification
5from transformers import AutoTokenizer
6
7sentences = [
8 "The llama (/ˈlɑːmə/) (Lama glama) is a domesticated South American camelid.",
9 "The alpaca (Lama pacos) is a species of South American camelid mammal.",
10 "The vicuña (Lama vicugna) (/vɪˈkuːnjə/) is one of the two wild South American camelids.",
11]
12queries = ["What is a llama?", "What is a harimau?", "How to fly a kite?"]
13pairs = list(product(queries, sentences))
14
15model_name = "EmbeddedLLM/bge-reranker-base-onnx-o3-cpu"
16device = "cpu"
17provider = "CPUExecutionProvider"
18tokenizer = AutoTokenizer.from_pretrained(model_name)
19model = ORTModelForSequenceClassification.from_pretrained(
20 model_name, use_io_binding=True, provider=provider, device_map=device
21)
22inputs = tokenizer(
23 pairs,
24 padding=True,
25 truncation=True,
26 return_tensors="pt",
27 max_length=model.config.max_position_embeddings,
28)
29inputs = inputs.to(device)
30scores = model(**inputs).logits.view(-1).cpu().numpy()
31# Sort most similar to least
32pairs = sorted(zip(pairs, scores), key=lambda x: x[1], reverse=True)
33for ps in pairs:
34 print(ps)