вектора влияет на точность СТС? Хочу переехать с 1024 на 512, а то индекс занимает много памяти
Ну и наверное инференс чуть быстрее будет?
У меня есть предположение, что чем компактнее вектор, тем он точнее сохраняет смысл. Все руки не дойдут проверить )
Интуитивно кажется что наоборот ))
Как такое может быть? 🤨 Ну, то есть, не могут же все ошибаться ...или таки могут?)) Наверное это вопрос к математикам, которые понимают в чем соль косинусного и иных видов расстояния между векторами. Я соль не понимаю, признаюсь честно ☺️
Не совсем)) Думаю здесь есть какая-то золотая середина, которая рознится от текста к тексту в зависимости от его обьема и тематики 🤷♀️
Вот что говорит Биг Браза: #### Высказывание: "У меня есть предположение, что чем компактнее вектор, тем он точнее сохраняет смысл." Анализ: 1. Определение "компактности" вектора: В контексте машинного обучения и вычислительной лингвистики, "компактность" вектора может обозначать низкоразмерное пространство признаков или сокращение размерности вектора. 2. Предполагаемые преимущества "компактных" векторов: - Снижение вычислительных затрат: Меньшая размерность может ускорить вычисления. - Предотвращение переобучения: В некоторых случаях, сокращение размерности может помочь уменьшить риск переобучения. - Визуализация: Низкоразмерные пространства легче визуализировать. 3. Потенциальные проблемы "компактных" векторов: - Потеря информации: Сокращение размерности может привести к потере информации. Некоторые детали или нюансы могут быть утеряны. - Искажение отношений: В некоторых методах уменьшения размерности, таких как PCA или t-SNE, отношения между точками могут искажаться. Рекомендации: 1. Проверка гипотезы: Прежде чем принимать такое предположение на веру, его следует проверить на практике. Вы можете обучить модели с различной размерностью эмбеддингов и сравнить их производительность на задаче нахождения степени сходства. 2. Исследование оптимальной размерности: Вместо того чтобы просто минимизировать размерность, следует исследовать, при какой размерности вектора достигается наилучший баланс между сохранением информации и вычислительной эффективностью. 3. Использование подходящих методов уменьшения размерности: Если решено уменьшать размерность, следует использовать методы, которые сохраняют отношения между точками, такие как UMAP или t-SNE (для визуализации), или автоэнкодеры (для обучения). Заключение: Компактность вектора может иметь свои преимущества, однако утверждение о том, что чем компактнее вектор, тем он точнее сохраняет смысл, требует экспериментальной проверки. Оптимальная размерность вектора будет зависеть от конкретной задачи и данных.
косинусу плевать на размерность вектора, в этом его прелесть. Я про наполнение самого вектора
По своему субьективному. Если гонишь в длинный вектор длинный текст это хорошо. Если мелочь в длинный текст это хуже. Если потом пытаешься симилярити короткого текста в длинном векторе с длинным текстом в длинном векторе это хуже. Если длинный текст в длинном векторе с таким же это благо.
"точность CTC" - ctc loss имеется ввиду? а что за downstream задача? dimension это просто грубо говоря, сколько фичей данная модель "экстрактит" . можно на нейронку в несколько слоев в конце повесить линейный слой с 1024. будет ли это хорошая сетка? неизвестно (скорее всего нет). видимо у вас какая-то берт-подобная модель , судя по dimension. ну надо сделать бенчмарк, померить качество на вашей же задаче. а еще лучше в дополнение - сделать probing тесты. т.е. сделать пару-тройку моделей, на основне конечной данной, который должны предсказывать или классифицировать какое-то нужное вам свойство (не знаю, длина текста например , если кажется, что данное свойство модели для удачного решения конечной задачи нужно). все остальное - это скорее похоже на гадание... короткие тексты или длинные
Не, прошу прощения за неоднозначность, лень было на англ переключать )) STS - semantic textual similarity конечно же имел ввиду. Задача классическая - поиск по векторам. Просто с 1024 вектором очень уж большой индекс получается (в редисе около 80гб заняло на 20 миллионов документов), вычислительная сложность высокая Думаю если взять вектора на 512 измерений (модель переделать или там снижение размерности), то и инференс побыстрее будет и места занимать в векторной бд будут меньше. Вот только вопрос насколько качество поиска упадет?
ничего страшного, - теперь понятно, а то до этого думал причем тут CTC вообще. это надо мерить. зависит от текста и конечных целевых метрик (важны ли там позиции или не важны, и т.п.) у меня была задача поиска людей и организаций. там вообще LSTM + dim=100 хватало. также был семантический поиск, хватало обычного берта. есть MTEB - это не только лидербоард, это еще и пакет, который довольно легко кастомизировать (отнаследовать классы) и добавить свой бенчмарк и прогнать. (если ванговать : я подозреваю что не упадет, если грамотно модель натренировать, я использую натюненую под свою задачу sentence transfomers мультиязыковую модель там ЕМНИП 384 измерений, прекрасно работает на STS)
Это нормально, там дело не в размере, а в используемом алгоритме. Например, если не хранить в Redis, а в Weaviate или Milvus, то можно будет использовать ANN алгоритм (быстрый), вместо KNN.
В редисе тоже анн есть - HNSW
У меня кстати в Elastic примерно так и выходит, но там raw text, а не эмбеддинги. Точно не помню, но на 40М текста примерно 200 Гб на диске.
Обсуждают сегодня