это мне кажется проблема многих. Сделать хороший поиск это очень сложная задача. И на мой взгляд, туда вообще не надо идти. Надо было сразу нарезать всё на категории и давать возможность двигаться по уже сформированным группам/кластерам/категориям. Поиск прятать/убирать
Тогда ты
а) всегда можешь оценить качество нарезанных групп/категорий
б) не ебешь мозги с этим поиском, потому что на таком числе документов недостаточно получить вхождение, нужна ещё релевантность, веса, в общем это сложно
иначе пользователь что-то просил, а результат говно Ответить
это я сейчас много работаю с Claude Design, генерю фронтенд для своих SaaS в области разных данных. И он очень часто на первый же экран херачит поисковую строку для пользователя.
И я всегда думаю, бля, поисковая строка под собой это что? Это опять поднимать эластик, это думать что там будет в результатах, это ебала. Я убираю этот поиск и иду по пути категорийной/кластерной механики, потому что понимаю, что поиск будет убогим (в том числе потому что пользователь спрашивает хуй пойми как)
Но может так только у меня в силу отсутствия опыта в поиске Ответить
раскрыть ветку (17)
Автор канала
Я думаю надо и так и так. Как хочешь так и ищи Ответить
мне кажется под этим кроется не один геморроидальный узел Ответить
раскрыть ветку (13)
Пряный Единорог
На моих проектах работает очень хорошо. Вот буквально вчера запилил поиск на основе faiss+sqlite. Поиск по 100 миллионам поисковых фраз с метриками CPC, Search Volume, Competition Index, High Bid и т.д. Расчет индекса и формирование базы заняло где-то минут 40. Очень удобно и просто получилось. Ответить
раскрыть ветку (12)
Раздражительный Жираф
ну гляну, сохранил в заметки. У меня с поиском плохо, поэтому пока намеренно этот функционал игнорирую. Ответить
Зависит от того, что вы векторизуете. Можно одну фразу, можно целые параграфы. В вашем случае в вектор лучше переводить сразу название+описание. В любом случае вектор будет фиксированной длины - массив из 384, 768 или более чисел. Сам поиск по косинусной близости супер быстрый практически на любом объеме, это очень простая математическая операция. Я пробовал и на 7 миллиардах векторов, тоже работает десятки миллисекунд. Ответить
раскрыть ветку (8)
Раздражительный Жираф
тут 2 вопроса возникает
1. Нам перед векторизацией надо исходник чистить? Например, у нас была html главная страница сайта. Мы её стрипаем просто от html тегов или прогоняем через что-то типа trafilatura, чтобы извлечь только текст?
2. как быстро мы можем преобразовать 250-300 млн таких документов, ну т.е. примерно все главные страницы интернета без поддоменов? Ответить
раскрыть ветку (7)
Пряный Единорог
1. Да, надо векторизовать чистый текст. Если текст большой, его надо резать на чанки с перехлестом на 15-20%.
2. Допустим, на видеокарте 1 миллион векторов размером 384 моделью e5-small-v2 будет считаться 1 минуту. Соответственно, на 300 миллионов векторов потребуется 5 часов. На CPU будет намного дольше, это мазохизм на таких объемах. Ответить
раскрыть ветку (6)
Раздражительный Жираф
ну вот звучит уже непросто, особенно по первому пункту + обработка будет не у себя, т.е. надо будет делать это где-то. Поэтому поиск не кажется простой задачей, это не поиск по wp записям, проще убрать этот функционал и уйти в простую категоризацию, потому что поиск не дает ничего особо по сеошке и выгод коммерческих не чувствуется Ответить
раскрыть ветку (2)
Пряный Единорог
А вам, кстати, не нужны домены с живыми беклинками от Википедии, Форбс, Нью-Йорк таймс? Ответить
раскрыть ветку (1)
Раздражительный Жираф
да у нас этого добра как говна за баней) Но спасибо) Ответить
Комментарии (36)
Рассвет эпохи дотрэфов 🤣
Тогда ты
а) всегда можешь оценить качество нарезанных групп/категорий
б) не ебешь мозги с этим поиском, потому что на таком числе документов недостаточно получить вхождение, нужна ещё релевантность, веса, в общем это сложно
иначе пользователь что-то просил, а результат говно
И я всегда думаю, бля, поисковая строка под собой это что? Это опять поднимать эластик, это думать что там будет в результатах, это ебала. Я убираю этот поиск и иду по пути категорийной/кластерной механики, потому что понимаю, что поиск будет убогим (в том числе потому что пользователь спрашивает хуй пойми как)
Но может так только у меня в силу отсутствия опыта в поиске
типа у нас 100 млн документов
1. Нам перед векторизацией надо исходник чистить? Например, у нас была html главная страница сайта. Мы её стрипаем просто от html тегов или прогоняем через что-то типа trafilatura, чтобы извлечь только текст?
2. как быстро мы можем преобразовать 250-300 млн таких документов, ну т.е. примерно все главные страницы интернета без поддоменов?
2. Допустим, на видеокарте 1 миллион векторов размером 384 моделью e5-small-v2 будет считаться 1 минуту. Соответственно, на 300 миллионов векторов потребуется 5 часов. На CPU будет намного дольше, это мазохизм на таких объемах.