Sobes.tech
Middle

Как да сравняваме ембедингите на заявки и продукти за търсене на релевантни кандидати?

sobes.tech AI

Отговор от AI

Обикновено за сравняване на вгражданията на заявки и продукти се използват мерки за сходство или разстояние в векторното пространство. Основните подходи:

  • Косинусна сходство (Cosine Similarity): измерва ъгъла между два вектора, игнорирайки тяхната дължина. Често се използва, тъй като добре отразява семантичната близост.

  • Евклидово разстояние (Euclidean Distance): измерва правото разстояние между точките в пространството.

  • Манхатънско разстояние (Manhattan Distance): сумата от абсолютните разлики по всяка координата.

За търсене на релевантни продукти по заявка:

  1. Преобразувайте заявката и продуктите в вграждания с помощта на модел (например, BERT, Word2Vec).
  2. Изчислете косинусната сходство между вграждането на заявката и всяко вграждане на продукт.
  3. Подредете продуктите по намаляващо сходство — най-релевантните ще са горе.

Пример на 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.