если у меня есть гора эмебедингов SBERT от одного связного большого текста и я хочу свести их к одному эмбедингу, то мне надо смотреть в сторону сверток через CNN? Или есть более изящные способы добиться желаемого?
к одному эмбеддингу привести хочешь чтобы что в итоге с ним делать? для поисковых задач хорошим представлением нескольких эмбеддингов у меня была их сумма
Для поиска по ним входящий коротких запросов
то есть ты хочешь условно страницу текста искать по короткому предложению?
А зачем тебе вообще агрегировать эмбеддинги для этого поиска? Если запрос достаточно простой, такой, что на него отвечает небольшой фрагмент текста (предложение или большой абзац), то проще всего заматчить эмбеддинг вопроса напрямую с эмбеддингом этого фрагмента. А если вопрос достаточно сложный и требует сопоставления информации из нескольких разных фрагментов текста, то скорее всего при вычислении и агрегировании эмбеддингов эта инорфмация потеряется, и ответ удастся найти только приблизительно (скорее всего - с точностью до темы или ключевых слов).
Это вообще отдельная боль - собирать информацию для ответа по разным местам в базе. Embeddings создают только иллюзию работы на простеньких вопросах Какие есть решения, которые нормально работают на практике? Из того, что показывает потенциал пока: (1) выделять ключевые сущности, потом искать по ним, ранжировать найденные фрагменты и последовательно сливать в ответ (answer refinement) (2) делать разные индексы, начиная с FTT и до графов по структуре документа. Потом результаты ранжировать и см пункт 1 (3) ждать обещанного контекста в миллион tokens от OpenAI
А сколько времени на запрос уходит, если не секрет?
Можно выдернуть эмбединги токенов поискового запроса, а потом полученные span.start и span.end кластеризовать на расстоянии от друг друга. И если рядом находятся слова в ответе, то у них разница будет в len() или больше. И если больше, чем len, тогда будет дистанция от центроида
Обсуждают сегодня