Вы знаете, что заметка есть. Вы написали её три месяца назад, в ней был ответ ровно на ту задачу, которая сейчас перед вами, и вы не можете её найти: вы ищете «кэширование», а в заметке написано «мемоизация», или ищете «сбой деплоя», а в заметке — «релиз сломался». Поиск по ключевым словам не срабатывает ровно тогда, когда вы не помните формулировку, а через несколько недель так бывает почти всегда.
Семантический поиск решает это: он сравнивает смысл, а не точные слова. Ниже — как он работает, где он лучше поиска по ключевым словам, где хуже и что он меняет в том, как вы организуете заметки.
Где ломается поиск по ключевым словам
Обычный поиск разбивает заметки на слова и сравнивает с ними запрос, иногда со стеммингом («релизы» находит «релизом») и нечётким поиском на случай опечаток. Он быстрый и предсказуемый, но в основе это сравнение строк: в запросе и в заметке должны быть одни и те же слова.
Заметки для этого — худший случай. Их пишут быстро, теми словами, что пришли в голову, и никто не следит за единой терминологией. Одно и то же понятие в четырёх заметках, написанных в четырёх разных настроениях, называется «авторизация», «логин», «вход» и «сессия». Чтобы найти свою же заметку, приходится угадывать, какие слова вы выбрали тогда. Это проверка памяти, хотя заметки нужны как раз затем, чтобы ничего не держать в голове.
Как работает семантический поиск
Семантический поиск сравнивает не строки, а смысл, и для этого использует эмбеддинги: модель машинного обучения превращает текст в вектор, длинный список чисел, причём так, что у текстов с похожим смыслом векторы оказываются рядом. «Мемоизировать поиск сессии» и «кэшировать проверку логина» в этом пространстве лежат близко, хотя общих слов у них нет.
Весь механизм от начала до конца:
Индексация. Когда вы сохраняете заметку, система пропускает её через модель эмбеддингов и хранит получившийся вектор рядом с заметкой. Поэтому приложения для заметок с ИИ считают «токены эмбеддингов»: текст каждой заметки при сохранении обрабатывает модель.
Запрос. Ваш поисковый запрос превращается в вектор так же.
Сопоставление. Система находит сохранённые векторы, ближайшие к вектору запроса, и возвращает эти заметки, отсортированные по близости.
На практике это значит: вы ищете понятие так, как думаете о нём сейчас, и заметка находится, как бы вы ни сформулировали её тогда. В Notez так работает каждый поиск, вместе с поиском по ключевым словам, и пример с главной страницы настоящий: запрос «та идея про кэширование» находит заметку, потому что совпадение идёт по смыслу, через эмбеддинги.
От поиска к ответам
Когда у заметок есть эмбеддинги, вторая возможность достаётся почти даром: генерация с опорой на найденное (retrieval-augmented generation, RAG). Вместо списка подходящих заметок система находит самые релевантные, передаёт их языковой модели, и та составляет ответ со ссылками на исходные заметки.
Так «найти документы» превращается в «задать вопрос». Функция Спросите свои заметки в Notez работает именно так: спросите «что я писал про фокус и глубокую работу?», и она найдёт нужные заметки во всём хранилище и ответит со ссылками на источники. Источники важны: ответ, который можно проследить до ваших заметок, можно проверить, а голый ответ — нет.
Где семантический поиск слаб
Честно об ограничениях, чтобы не ждать лишнего:
Точные строки. Код ошибки, название флага или идентификатор ищутся по ключевым словам. Хорошие системы используют оба способа: Notez на каждый запрос запускает и поиск по ключевым словам, и семантический и объединяет результаты (как это устроено, описано в посте о гибридном поиске). А если вы знаете точную строку, ищите точную строку.
Очень короткие заметки. В заметке из трёх слов модели эмбеддингов почти не за что ухватиться. Найти её всё равно можно, просто преимущество поиска по смыслу здесь меньше.
Полнота вероятностная. При ранжировании по ближайшим соседям нужная заметка обычно наверху, но не гарантированно всегда. Для справки, в которую вы заглядываете каждую неделю, избранное или ссылка надёжнее любого поиска.
Что это меняет в организации заметок
Самое интересное следствие касается привычек. Сложные иерархии папок и обязательные схемы тегов нужны в основном для того, чтобы при поиске по ключевым словам вообще что-то находилось: это предоплата за то, что заметку потом найдут. Когда поиск работает по смыслу, большая часть этой предоплаты становится необязательной.
Разумное разделение труда:
Записывайте без церемоний. Пишите заметку теми словами, какие придут в голову. Название, выбор папки и теги не обязательны: семантический поиск найдёт заметку по содержанию.
Теги — для перечисления, а не для поиска. Теги оправдывают себя, когда нужны все заметки одного вида: всё с тегом
research, каждая заметка1on1. «Все X» — ровно то, чего ранжирование по сходству не гарантирует.Ссылки — для структуры. Явные ссылки между заметками (и обратные ссылки, которые из них получаются) хранят связи, которые поиск сам не выведет: это решение появилось из того обсуждения.
То, что открываете каждый день, добавьте в избранное. Для пяти главных заметок навигация лучше поиска.
Нужно ли это на практике
Проверка простая: как часто вы не можете найти заметку, которая точно есть? Если ответ «регулярно», узкое место — поиск, и семантический поиск убирает его дешевле, чем любая дисциплина единых названий. Системы, которые рассчитывают, что человек дважды выберет одни и те же слова, проигрывают системам, которые на это не рассчитывают: через несколько месяцев так не делает никто.
Читайте также
Как работает ИИ-чат в Notez: что он видит, что меняет и чего не делает — 29 инструментов, с которыми ИИ-чат работает в вашем рабочем пространстве, чего он не умеет и какие у него лимиты на каждом тарифе.
Какие у меня сегодня задачи: как ИИ-чат научился видеть доску — почему чат отвечал не тем списком, пока не увидел доску на вашем экране.
Инструкции для ИИ-чата: одни для команды, другие для вас — постоянные инструкции для всего рабочего пространства и для себя лично и почему инструкции владельца идут в промпте последними.