У меня есть относительно большой json файл (4 МБ), который содержит некоторые вложения предложений в 512-мерных векторах. Кроме того, у меня есть поисковая система, в которой я могу ввести предложение запроса, чтобы получить наиболее похожее предложение из файла json. Для этого я должен вычислить косинусное сходство между внедрением предложения запроса и всеми встраиваемыми предложениями в файле json. Пока для каждого вызова API я делаю следующее:
# define USE Model
USE = tf.saved_model.load('/Users/models/5')
embedder = USE
# upload data from json
with open('embeddings.json', 'r') as f:
obj = f.read()
# parse file
data = json.loads(obj)
# get most similar sentence
most_similar = get_similar(query, data)
query
- это переменная, содержащая предложение запроса, а get_similar
- это функция, которая вычисляет косинусное сходство и выполняет некоторые дальнейшие корректировки. Проблема в том, что этот процесс очень медленный. Я думаю, причина в том, что для каждого вызова API файл json считывается и анализируется в переменную. Вероятно, то же самое происходит при инициализации устройства для внедрения ... Например, когда я пишу тот же код в блокноте jupyter и выполняю только функцию get_similar
, я получаю ответ в течение миллисекунд. Есть ли способ сохранить эмбеддер и файл json в памяти или что-то в этом роде?
Спасибо за вашу помощь!