Middle+
16
Как проранжировать извлечённые чанки по релевантности к запросу?
Companies where asked
Сбербанк
Answer from AI
sobes.tech AI
Ранжирование извлечённых чанков по релевантности к запросу обычно основано на вычислении меры сходства между векторным представлением запроса и каждого чанка. Часто используют косинусное сходство между эмбеддингами текста. Чем выше значение сходства, тем более релевантен чанк.
Пример подхода:
- Преобразовать запрос и каждый чанк в вектор с помощью модели эмбеддингов (например, BERT, Sentence Transformers).
- Вычислить косинусное сходство между вектором запроса и каждым вектором чанка.
- Отсортировать чанки по убыванию сходства.
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)]
Можно также учитывать дополнительные факторы, например, частоту ключевых слов, длину чанка или метаданные.