Как да сравняваме ембедингите на заявки и продукти за търсене на релевантни кандидати?
sobes.tech AI
Отговор от AI
Обикновено за сравняване на вгражданията на заявки и продукти се използват мерки за сходство или разстояние в векторното пространство. Основните подходи:
-
Косинусна сходство (Cosine Similarity): измерва ъгъла между два вектора, игнорирайки тяхната дължина. Често се използва, тъй като добре отразява семантичната близост.
-
Евклидово разстояние (Euclidean Distance): измерва правото разстояние между точките в пространството.
-
Манхатънско разстояние (Manhattan Distance): сумата от абсолютните разлики по всяка координата.
За търсене на релевантни продукти по заявка:
- Преобразувайте заявката и продуктите в вграждания с помощта на модел (например, BERT, Word2Vec).
- Изчислете косинусната сходство между вграждането на заявката и всяко вграждане на продукт.
- Подредете продуктите по намаляващо сходство — най-релевантните ще са горе.
Пример на Python с използване на косинусна сходност:
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
query_embedding = np.array([[0.1, 0.3, 0.5]])
product_embeddings = np.array([
[0.2, 0.1, 0.4],
[0.9, 0.8, 0.7],
[0.05, 0.3, 0.5]
])
similarities = cosine_similarity(query_embedding, product_embeddings)
# similarities.shape = (1, брой_продукти)
# Индекси на продуктите, сортирани по намаляващо сходство
sorted_indices = np.argsort(-similarities[0])
print("Релевантни продукти по намаляващо сходство:", sorted_indices)
За мащабируемо търсене в големи колекции от вграждания се използват специализирани библиотеки и индекси, например FAISS или Annoy.