Возможно использование с LM Studio.
1import numpy as np
2import requests
3import json
4
5def embeding(text):
6 url = 'http://127.0.0.1:8080/v1/embeddings'
7 headers = {"Content-Type": "application/json", "Authorization": "no-key"}
8 data={"input": text,
9 "model": "rubert-mini-uncased",
10 "encoding_format": "float"}
11 r = requests.post(url, headers=headers, data=json.dumps(data))
12 emb = np.array([np.array(s['embedding']) for s in r.json()['data']])
13 return emb
14
15inputs = [
16 #
17 "paraphrase: В Ярославской области разрешили работу бань, но без посетителей",
18 "categorize_entailment: Женщину доставили в больницу, за ее жизнь сейчас борются врачи.",
19 "search_query: Сколько программистов нужно, чтобы вкрутить лампочку?",
20 #
21 "paraphrase: Ярославским баням разрешили работать без посетителей",
22 "categorize_entailment: Женщину спасают врачи.",
23 "search_document: Чтобы вкрутить лампочку, требуется три программиста: один напишет программу извлечения лампочки, другой — вкручивания лампочки, а третий проведет тестирование."
24]
25
26embeddings = embeding(inputs)
27sim_scores = embeddings[:3] @ embeddings[3:].T
28print(sim_scores.diagonal().tolist())
29
30# [0.9365279201944358, 0.8030448289720129, 0.6826768729478850] - rubert-mini-uncased-f32
31# [0.9365603574226906, 0.8029491439999603, 0.6826115652313832] - rubert-mini-uncased-f16
32# [0.9362014453563489, 0.8019812246234975, 0.6823210638303931] - rubert-mini-uncased-q8_0
33
34# [0.9366128444671631, 0.8030662536621094, 0.6826460957527161] - rubert-mini-uncased (torch)
35# [0.9360030293464661, 0.8591322302818298, 0.7285830378532410] - FRIDA