Поиск по смыслу плохо различает «открыто» и «не открыто»: векторы почти совпадают, потому что тема одна и та же. В словах это знают все, а вот насколько это системно и можно ли починить без дообучения, мне хотелось проверить на данных.Идея простая. В word2vec есть знаменитое king − man + woman ≈ queen: «пол» оказывается почти линейным направлением. Есть ли такое «направление негации» в финальных эмбеддингах моделей, то есть в тех векторах, по которым реально ищут? И если есть, можно ли одной такой осью лечить слепоту к отрицанию?Как я проверял
продолжить чтение
Как история поиска, доказательность источников и технология MIRA дополняют «Глаз стрекозы»Задача, которая оказалась значительно сложнее поиска
продолжить чтение
В тестовом хранилище Obsidian лежат две заметки с одним названием — Cache lifetime. Одна находится в Study/Caching, другая в Study/Systems. Плагин замечает сходство, но что делать с этой парой? Одинаковый термин ещё не означает одинаковое содержание: в одном файле может быть определение, в другом — пример или важное ограничение.К этой задаче я пришёл после небольшого эксперимента, о котором писал 14 октября
продолжить чтение
Привет, Хабр!Пять миллионов 768-мерных эмбеддингов в FP32 занимают 15,36 ГБ. На RTX 5090 с её 32 ГБ VRAM это почти половина, причём только под координаты. Поисковому индексу нужна ещё служебная память, а если на той же карте работает модель, место потребуется и ей.У EmbeddingGemma 2 есть возможность сократить этот объём. Последний линейный слой модели преобразует 512 чисел в 768. В точной арифметике его выходы лежат в 512-мерном подпространстве: для их хранения можно выбрать другой базис и оставить 512 координат, сохранив косинусное сходство.
продолжить чтение
Сейчас модно называть вторым мозгом папку с заметками в Obsidian. Я разбирал гитхабы Андрея Карпатого и других, кто про это пишет, и чаще всего «второй мозг» там - это куча файликов, перелинкованных друг с другом, плюс подключённый к ним Claude Code.Я думаю иначе.Есть вторая память, и есть второй мозг. Это разные вещи, и разница между ними - это как раз то, ради которой всё это стоит строить.Вторая памятьВторая память - это всё, что мимо вас в жизни проходило:переписки с коллегами, друзьями, жёнами, детьми во всех мессенджерах: Telegram, Slack, Discord, WhatsApp и тд - вся история, насколько глубоко её вообще можно выкачать;
продолжить чтение
У меня есть папка с конспектами созвонов и расшифровками встреч, и искать в ней по слову неудобно: я помню, что обсуждали найм, а в файле написано «собеседование» и «кандидат», и обычный поиск по тексту такой файл не находит. Отправлять заметки во внешний сервис ради эмбеддингов мне не хотелось, поэтому я собрал маленький MCP-сервер, который ищет по смыслу прямо на моей машине, и подключил его к Claude Code. Всё работает без платных API, а заметки не покидают компьютер.
продолжить чтение
В прошлых статьях я рассказывал, как постепенно добавлял семантический поиск в Obsidian. Сначала появился локальный векторный индекс, потом Similar Notes, поиск потенциальных дублей и RAG. В какой-то момент всё это начало работать достаточно хорошо, и я уже собирался оставить поисковую часть в покое.Но потом добрался до Rerank.Идея простая. Сначала обычный семантический поиск находит заметки, близкие по смыслу к запросу. Затем вторая модель получает найденные фрагменты, сравнивает их с вопросом и пытается расставить документы по релевантности. Звучит полезно, особенно когда в хранилище много заметок на похожие темы.
продолжить чтение
Привет! Меня зовут Дмитрий, я работаю в компании Cortex IT и автоматизирую бизнес-процессы наших клиентов. Среди прочего мы строим RAG-ассистентов по внутренней документации.На одном из проектов было много нестандартной технической документации на оборудование, и с настройками по умолчанию поиск отдавал не те чанки. Пришлось разбираться, почему так происходит.
продолжить чтение
Сделал бесплатный курс для тех кто хочет научиться создавать локальные ИИ приложения на Python. За семь занятий разберём помощника, который ищет по вашим документам, отвечает на вопросы и показывает исходные фрагменты для проверки.Чат с документами выглядит просто. Положили файлы в папку, задали вопрос, получили несколько складных предложений. Но стоит ответу разойтись с текстом — и хочется увидеть всю кухню: что нашёл поиск, что отправили модели и откуда она взяла последнюю фразу.В local‑docs‑ai
продолжить чтение