Middle
Sorğu və məhsul gömme vektorlarını necə müqayisə etmək olar ki, uyğun namizədləri tapmaq üçün?
sobes.tech Süni İntellekt
AI-dan cavab
Sorğu və məhsulun gömmələrini müqayisə etmək üçün adətən vektor məkanında oxşarlıq və ya məsafə ölçüləri istifadə olunur. Əsas yanaşmalar:
-
Kosinus oxşarlığı (Cosine Similarity): iki vektor arasındakı bucağı ölçür, onların uzunluğunu nəzərə almır. Tez-tez istifadə olunur, çünki semantik yaxınlığı yaxşı əks etdirir.
-
Euklid məsafəsi (Euclidean Distance): nöqtələr arasındakı düz məsafəni ölçür.
-
Manhattan məsafəsi (Manhattan Distance): hər bir koordinat üzrə müsbət fərqlərin cəmidir.
Sorğu əsasında uyğun məhsulları tapmaq üçün:
- Sorğu və məhsulları model (məsələn, BERT, Word2Vec) istifadə edərək gömmələrə çevirin.
- Sorğu gömməsi ilə hər bir məhsul gömməsi arasında kosinus oxşarlığını hesablayın.
- Məhsulları azalan oxşarlıq sırasına görə sıralayın — ən uyğunlar yuxarıda olacaq.
Python nümunəsi ilə kosinus oxşarlığını istifadə edərək:
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, məhsul sayı)
# Məhsulları oxşarlığa görə azalan sıralama
sorted_indices = np.argsort(-similarities[0])
print("Əhəmiyyətli məhsullar azalan oxşarlıq sırasına görə:", sorted_indices)
Böyük kolleksiyalarda miqyaslı axtarış üçün FAISS və ya Annoy kimi ixtisaslaşmış kitabxanalar və indekslər istifadə olunur.