Sobes.tech
Middle+
16

Как проранжировать извлечённые чанки по релевантности к запросу?

Companies where asked
Сбербанк

Answer from AI

sobes.tech AI

Ранжирование извлечённых чанков по релевантности к запросу обычно основано на вычислении меры сходства между векторным представлением запроса и каждого чанка. Часто используют косинусное сходство между эмбеддингами текста. Чем выше значение сходства, тем более релевантен чанк.

Пример подхода:

  1. Преобразовать запрос и каждый чанк в вектор с помощью модели эмбеддингов (например, BERT, Sentence Transformers).
  2. Вычислить косинусное сходство между вектором запроса и каждым вектором чанка.
  3. Отсортировать чанки по убыванию сходства.
from sklearn.metrics.pairwise import cosine_similarity

query_vec = embed(query_text)
chunk_vecs = [embed(chunk) for chunk in chunks]
scores = cosine_similarity([query_vec], chunk_vecs)[0]
ranked_chunks = [chunk for _, chunk in sorted(zip(scores, chunks), reverse=True)]

Можно также учитывать дополнительные факторы, например, частоту ключевых слов, длину чанка или метаданные.