[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"content-post-pochemu-pisma-uhodyat-v-spam":3},{"post":4,"related":153,"status":10},{"id":5,"title":6,"slug":7,"excerpt":8,"cover_alt":9,"cover_position":10,"reading_time":11,"seo_title":12,"seo_description":13,"date_published":14,"date_modified":10,"source_lead":10,"tag":15,"blocks":19,"cover":150},"e72b3463-3c8c-4645-84c6-09dfee440a20","Почему письма уходят в спам: SPF, DKIM и DMARC простыми словами","pochemu-pisma-uhodyat-v-spam","У моего домена почта работала, письма отправлялись, всё выглядело нормально - а двух из трёх записей, отвечающих за доверие к отправителю, не было вовсе. Объясняю SPF, DKIM и DMARC человеческим языком: что каждая делает, в каком порядке ставить и как проверить результат за две минуты.","Три конверта проходят через арки-штампы, четвёртый отложен в тень",null,3,"SPF, DKIM, DMARC: как настроить, чтобы письма доходили","Три записи в DNS, без которых рассылка и даже обычные письма уезжают в спам. Что каждая означает, в каком порядке их ставить и как проверить результат за две минуты.","2026-08-27T17:21:48.000Z",{"name":16,"slug":17,"color":18},"Инструменты","instrumenty","#3F7300",[20,26,30,33,39,43,47,51,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111,115,128,132,136],{"sort":21,"collection":22,"item":23},1,"block_text",{"body":24,"is_lead":25,"footnote":10},"Я собирался включить на своём сайте почтовую рассылку и по привычке начал с проверки домена. Оказалось, что у него настроены только базовые вещи: почта работает, письма отправляются, всё выглядит нормально. Двух из трёх записей, отвечающих за доверие к отправителю, не было вовсе.",false,{"sort":27,"collection":22,"item":28},2,{"body":29,"is_lead":25,"footnote":10},"Это типичная ситуация. Почта \"просто работает\" ровно до того момента, когда вы начинаете отправлять что-то массовое или важное - и тогда выясняется, что половина писем не доходит, а вы об этом не знаете, потому что уведомлений о попадании в спам не бывает.",{"sort":11,"collection":22,"item":31},{"body":32,"is_lead":25,"footnote":10},"Разберу три записи по-человечески, без RFC.",{"sort":34,"collection":35,"item":36},4,"block_heading",{"heading":37,"level":38},"SPF: кому разрешено писать от вашего имени","h2",{"sort":40,"collection":22,"item":41},5,{"body":42,"is_lead":25,"footnote":10},"Представьте, что кто угодно может отправить бумажное письмо на бланке вашей компании. Примерно так устроена почта по умолчанию: адрес отправителя в письме - это просто текст, его можно написать любой.",{"sort":44,"collection":22,"item":45},6,{"body":46,"is_lead":25,"footnote":10},"SPF - это список: с каких серверов разрешено отправлять письма от вашего домена. Он лежит в настройках домена, и почтовые системы его проверяют. Пришло письмо от вас с сервера, которого нет в списке, - повод для подозрений.",{"sort":48,"collection":22,"item":49},7,{"body":50,"is_lead":25,"footnote":10},"Эта запись есть почти у всех, потому что хостинг обычно ставит её сам при подключении почты. Дальше начинается то, что сам себя не поставит.",{"sort":52,"collection":35,"item":53},8,{"heading":54,"level":38},"DKIM: подпись, которую нельзя подделать",{"sort":56,"collection":22,"item":57},9,{"body":58,"is_lead":25,"footnote":10},"SPF говорит \"письмо пришло с правильного сервера\". DKIM говорит \"письмо действительно ваше и его не меняли по дороге\": исходящая почта подписывается криптографической подписью, а проверить её можно открытым ключом, который лежит в настройках домена.",{"sort":60,"collection":22,"item":61},10,{"body":62,"is_lead":25,"footnote":10},"Разница практическая. SPF ломается при пересылке письма: адрес отправителя остался ваш, а сервер уже чужой. DKIM пересылку переживает, потому что подпись живёт в самом письме.",{"sort":64,"collection":22,"item":65},11,{"body":66,"is_lead":25,"footnote":10},"Именно этой записи у меня не было. И тут выяснилась деталь, из-за которой её и не бывает у многих: на моём хостинге DKIM не включается кнопкой в панели - его включает поддержка по обращению. Пишете тикет, просите подписывать исходящую почту, и запись появляется в настройках домена сама. Пять минут работы и ноль рублей, но об этом надо знать.",{"sort":68,"collection":35,"item":69},12,{"heading":70,"level":38},"DMARC: что делать с письмами, которые не прошли проверку",{"sort":72,"collection":22,"item":73},13,{"body":74,"is_lead":25,"footnote":10},"Первые две записи описывают, как проверить письмо. DMARC отвечает на следующий вопрос: а что делать, если проверка не прошла?",{"sort":76,"collection":22,"item":77},14,{"body":78,"is_lead":25,"footnote":10},"Вариантов три: ничего не делать и просто наблюдать, отправить в спам или отклонить совсем. Плюс адрес, на который почтовые системы будут присылать отчёты - кто и откуда шлёт письма от вашего имени.",{"sort":80,"collection":22,"item":81},15,{"body":82,"is_lead":25,"footnote":10},"Порядок здесь важен, и его нарушение - главная ошибка самостоятельной настройки. Нельзя начинать со строгого режима: если DKIM не настроен или какой-то ваш сервис шлёт письма мимо списка, вы своими руками отправите в спам собственную почту.",{"sort":84,"collection":22,"item":85},16,{"body":86,"is_lead":25,"footnote":10},"Правильная последовательность: сначала мягкий режим наблюдения с отчётами, потом настройка DKIM, потом проверка боем, и только потом ужесточение. Я именно так и делал: поставил DMARC, добился DKIM, убедился, что обе проверки проходят, и после этого поднял режим до отправки подозрительного в спам.",{"sort":88,"collection":35,"item":89},17,{"heading":90,"level":38},"Как проверить за две минуты",{"sort":92,"collection":22,"item":93},18,{"body":94,"is_lead":25,"footnote":10},"Не надо ставить инструменты и разбираться в заголовках. Есть бесплатные сервисы-автоответчики: вы отправляете письмо со своего рабочего адреса на специальный адрес и получаете в ответ полный разбор - прошёл ли SPF, прошёл ли DKIM, что видит принимающая сторона.",{"sort":96,"collection":22,"item":97},19,{"body":98,"is_lead":25,"footnote":10},"Я пользуюсь таким после каждого изменения. Ответ приходит за минуту, и в нём прямым текстом написано pass или fail по каждому пункту. Это единственный способ убедиться, что вы настроили не то, что хотели, а то, что получилось.",{"sort":100,"collection":22,"item":101},20,{"body":102,"is_lead":25,"footnote":10},"Отдельная грабля, если правите настройки домена через программный интерфейс хостинга, а не руками: у некоторых провайдеров операция изменения записей перезаписывает всю группу целиком и молча удаляет то, что вы не передали. После любой такой правки проверяйте, на месте ли записи почты и адреса сайта. Я проверяю всегда.",{"sort":104,"collection":35,"item":105},21,{"heading":106,"level":38},"Бонус: аватар отправителя",{"sort":108,"collection":22,"item":109},22,{"body":110,"is_lead":25,"footnote":10},"Раз уж речь о доверии к письму - вопрос, который мне задают чаще, чем про DKIM: как сделать, чтобы рядом с письмом показывалась картинка компании, а не серый кружок с буквой.",{"sort":112,"collection":22,"item":113},23,{"body":114,"is_lead":25,"footnote":10},"Ответ неприятный и разный для разных почт:",{"sort":116,"collection":117,"item":118},24,"block_list",{"list_style":119,"items":120},"dash",[121,124,126],{"lead":122,"text":123,"highlight":25},"","В Gmail единственный официальный путь - технология BIMI, а она требует сертификата, подтверждающего права на товарный знак. Это от 1000 долларов в год и обязательный зарегистрированный знак. Для индивидуального предпринимателя без товарного знака - недоступно в принципе.",{"lead":122,"text":125,"highlight":25},"В Mail.ru делается бесплатно через кабинет почтмейстера: подтверждаете домен записью в его настройках и загружаете картинку. Требования простые - квадрат, непрозрачный фон, читаемость в мелком размере.",{"lead":122,"text":127,"highlight":25},"В Яндексе встроенного способа нет, работает сервис глобальных аватаров, привязанный к адресу отправителя.",{"sort":129,"collection":22,"item":130},25,{"body":131,"is_lead":25,"footnote":10},"Но заниматься этим стоит только после того, как настроены DKIM и DMARC. Без них у вас проблема не с картинкой, а с тем, что красивое письмо просто не увидят.",{"sort":133,"collection":35,"item":134},26,{"heading":135,"level":38},"Что забрать себе",{"sort":137,"collection":117,"item":138},27,{"list_style":119,"items":139},[140,142,144,146,148],{"lead":122,"text":141,"highlight":25},"Три записи, в этом порядке: SPF (обычно уже есть), DKIM (чаще всего нет), DMARC (почти никогда нет).",{"lead":122,"text":143,"highlight":25},"DMARC начинать с режима наблюдения, ужесточать после того, как DKIM подтверждён проверкой.",{"lead":122,"text":145,"highlight":25},"Проверять результат письмом на сервис-автоответчик, а не глазами по документации.",{"lead":122,"text":147,"highlight":25},"Если DKIM не включается из панели - это не значит, что его нет. Напишите в поддержку хостинга, обычно это одна заявка.",{"lead":122,"text":149,"highlight":25},"Всё вместе занимает час и не стоит ничего. Один этот час решает большую часть вопросов \"почему нашу рассылку никто не читает\".",{"id":151,"modified_on":152},"2191cc54-9d87-49bc-bd39-b656d1a2a18f","2026-08-27T18:13:09.511Z",[154,273,365],{"id":155,"title":156,"slug":157,"excerpt":158,"cover_alt":159,"cover_position":10,"reading_time":11,"seo_title":160,"seo_description":161,"date_published":162,"date_modified":10,"source_lead":10,"tag":163,"blocks":164,"cover":270},"a3bdafa1-370e-4669-a460-69d658ee9330","Локально или в облаке: где своё железо реально выигрывает у API","lokalno-ili-v-oblake","Одна и та же задача на одном и том же сервере: в первом варианте 25 секунд речи обрабатывались две минуты, во втором - за десять секунд. Разбираю на замерах, где локальная модель реально выигрывает у облачного API, а где это самообман, и по какому фильтру я прохожу эту развилку.","Весы: монолитный блок против лёгкой формы из тонких линий","Локальные модели или облачный API: как выбрать на реальных замерах","Где локальная модель дешевле и лучше облачного API, а где это самообман. Реальные замеры на распознавании речи: RTF 5 против 0,12 и 208-кратная скорость на Neural Engine.","2026-08-27T17:42:48.000Z",{"name":16,"slug":17,"color":18},[165,168,171,174,177,180,183,186,189,192,195,198,201,204,207,210,213,220,223,226,229,240,243,254,257,259],{"sort":21,"collection":22,"item":166},{"body":167,"is_lead":25,"footnote":10},"Вопрос \"локальная модель или облачный API\" почти всегда обсуждают идеологически: одни за приватность, другие за удобство. Между тем это обычная инженерная развилка, у которой есть числовой ответ - разный для разных задач.",{"sort":27,"collection":22,"item":169},{"body":170,"is_lead":25,"footnote":10},"У меня накопились замеры на одной задаче, где я прошёл оба пути до конца, - распознавание речи. Расскажу, что получилось, и заодно сформулирую фильтр, по которому эту развилку стоит проходить в любом другом проекте.",{"sort":11,"collection":35,"item":172},{"heading":173,"level":38},"Задача",{"sort":34,"collection":22,"item":175},{"body":176,"is_lead":25,"footnote":10},"Голосовой ввод на сайте и в личных инструментах: человек говорит, получает готовый текст. К этому же классу относится расшифровка звонков и встреч - обычно самый первый реальный ИИ-проект в компании, потому что польза очевидна и данные уже есть.",{"sort":40,"collection":22,"item":178},{"body":179,"is_lead":25,"footnote":10},"Требования были такие: русский язык, приемлемая задержка, и аудио не должно уезжать в чужие руки без необходимости. Последнее - не паранойя: в звонках клиентов лежат персональные данные, и отправка их наружу превращает техническую задачу в юридическую.",{"sort":44,"collection":35,"item":181},{"heading":182,"level":38},"Первый заход: сделать красиво",{"sort":48,"collection":22,"item":184},{"body":185,"is_lead":25,"footnote":10},"Первым делом я взял готовую потоковую обёртку - из тех, что показывают текст прямо во время речи, слово за словом. Выглядит эффектно, и на демо-роликах всё летает.",{"sort":52,"collection":22,"item":187},{"body":188,"is_lead":25,"footnote":10},"На процессорном сервере она дала показатель реального времени около 5. Расшифровка означает следующее: 25 секунд речи обрабатываются две минуты. Пользоваться этим нельзя.",{"sort":56,"collection":22,"item":190},{"body":191,"is_lead":25,"footnote":10},"Важно, что дело было не в железе - это отдельный сервер с быстрыми ядрами, взятый специально под задачу. Дело в подходе: потоковое распознавание постоянно пересчитывает уже сказанное, чтобы уточнить гипотезу, и на процессоре эта переработка съедает всё.",{"sort":60,"collection":35,"item":193},{"heading":194,"level":38},"Второй заход: сделать просто",{"sort":64,"collection":22,"item":196},{"body":197,"is_lead":25,"footnote":10},"Я выбросил потоковость и сделал скучно: человек говорит целиком, запись уходит на сервер одним куском, модель распознаёт её за один проход.",{"sort":68,"collection":22,"item":199},{"body":200,"is_lead":25,"footnote":10},"Показатель реального времени - 0,26. Сорок секунд речи обрабатываются за десять. После настройки - 0,12, то есть быстрее реального времени в восемь раз.",{"sort":72,"collection":22,"item":202},{"body":203,"is_lead":25,"footnote":10},"Заодно ушла вторая проблема, о которой я не думал заранее: потоковая выдача даёт рваный текст. Пока модель уточняет гипотезу, фраза на экране дёргается и переписывается. На записи целиком результат сразу чистый.",{"sort":76,"collection":35,"item":205},{"heading":206,"level":38},"Третий заход: посчитать на своём железе",{"sort":80,"collection":22,"item":208},{"body":209,"is_lead":25,"footnote":10},"Отдельная история - обработка на ноутбуке. На современном Маке есть отдельный ускоритель для нейросетей, и модель, собранная под него, показывает 208-кратную скорость относительно реального времени. Часовой разговор расшифровывается за считанные секунды, разделение на говорящих - примерно так же быстро.",{"sort":84,"collection":22,"item":211},{"body":212,"is_lead":25,"footnote":10},"Здесь же я собрал грабли, которые стоит знать заранее:",{"sort":88,"collection":117,"item":214},{"list_style":119,"items":215},[216,218],{"lead":122,"text":217,"highlight":25},"Безвентиляторный ноутбук перегревается, если гнать распознавание и разделение говорящих одновременно. Последовательно - те же секунды, но без троттлинга. Параллелить на одном ускорителе бессмысленно.",{"lead":122,"text":219,"highlight":25},"Затравка модели (список терминов, чтобы правильно писала специальные слова) должна быть обычной фразой, а не списком. Список, начинающийся со слова \"Термины:\", модель вставляла прямо в расшифровку, а на плохом звуке зацикливалась и повторяла его. Модель затравку продолжает, а не исполняет. После переписывания живым предложением мусор исчез, и скорость выросла втрое.",{"sort":92,"collection":35,"item":221},{"heading":222,"level":38},"Фильтр: когда локально выигрывает",{"sort":96,"collection":22,"item":224},{"body":225,"is_lead":25,"footnote":10},"Из этой и соседних задач сложилось правило, по которому я развилку прохожу.",{"sort":100,"collection":22,"item":227},{"body":228,"is_lead":25,"footnote":10},"**Локально выигрывает, когда:**",{"sort":104,"collection":117,"item":230},{"list_style":119,"items":231},[232,234,236,238],{"lead":122,"text":233,"highlight":25},"нагрузка постоянная и предсказуемая - расшифровка всех звонков, обработка всех документов;",{"lead":122,"text":235,"highlight":25},"данные чувствительные и их отправка наружу создаёт отдельную юридическую задачу;",{"lead":122,"text":237,"highlight":25},"задача узкая, и под неё есть небольшая специализированная модель;",{"lead":122,"text":239,"highlight":25},"нужна независимость от чужой доступности, тарифов и геополитики.",{"sort":108,"collection":22,"item":241},{"body":242,"is_lead":25,"footnote":10},"**Облако выигрывает, когда:**",{"sort":112,"collection":117,"item":244},{"list_style":119,"items":245},[246,248,250,252],{"lead":122,"text":247,"highlight":25},"нагрузка редкая или рваная - железо будет простаивать;",{"lead":122,"text":249,"highlight":25},"задача требует рассуждений, а не распознавания: разбор смысла, написание текста, принятие решений;",{"lead":122,"text":251,"highlight":25},"вам нужен лучший результат сегодня, а не приемлемый;",{"lead":122,"text":253,"highlight":25},"вы ещё проверяете гипотезу и не знаете, взлетит ли вообще.",{"sort":116,"collection":22,"item":255},{"body":256,"is_lead":25,"footnote":10},"Практически это чаще всего означает гибрид, и у меня он именно такой: распознавание речи - локально, на своём железе, а причёсывание расшифровки в читаемый текст - облачной моделью. Аудио наружу не уходит, а за интеллект платится там, где он действительно нужен.",{"sort":129,"collection":35,"item":258},{"heading":135,"level":38},{"sort":133,"collection":117,"item":260},{"list_style":119,"items":261},[262,264,266,268],{"lead":122,"text":263,"highlight":25},"Развилка решается замером, а не убеждениями. Полдня на прототип обоих вариантов окупаются.",{"lead":122,"text":265,"highlight":25},"Красивое решение и работающее - разные вещи. Потоковая выдача выглядит лучше, а даёт хуже и медленнее.",{"lead":122,"text":267,"highlight":25},"Считайте не стоимость запроса, а стоимость месяца при вашей нагрузке. При постоянном потоке своё железо окупается быстро, при редких обращениях не окупается никогда.",{"lead":122,"text":269,"highlight":25},"Гибрид - нормальный ответ. Тяжёлое и однообразное держите у себя, интеллект берите в облаке.",{"id":271,"modified_on":272},"64bd6f0e-23d1-44b4-9f73-ecf6098c1280","2026-08-27T18:12:51.408Z",{"id":274,"title":275,"slug":276,"excerpt":277,"cover_alt":278,"cover_position":10,"reading_time":11,"seo_title":279,"seo_description":280,"date_published":281,"date_modified":10,"source_lead":10,"tag":282,"blocks":283,"cover":362},"b4b00a32-20a6-4557-b217-16867693b50b","Работает, но врёт: как геоблокировки ломают ИИ-систему незаметно","geobloki-i-tihie-otkazy","Поиск в системе не работал минимум три недели, а мониторинг был зелёный: ИИ-агент съедал ошибку инструмента и спокойно отвечал по памяти. Разбираю класс поломок, при которых всё \"работает\", - блокировки по географии, тихие отказы и то, как их вообще заметить.","Ровный ряд горящих индикаторов и оборванный кабель за панелью","Геоблокировки и ИИ-сервисы: тихие отказы, которые не видно в мониторинге","Поиск не работал три недели, а система считала запуски успешными: ИИ-агент съедал ошибку инструмента и отвечал по памяти. Как ловить тихие отказы и что делать с блокировками по IP.","2026-08-27T17:35:48.000Z",{"name":16,"slug":17,"color":18},[284,287,290,293,296,299,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,349],{"sort":21,"collection":22,"item":285},{"body":286,"is_lead":25,"footnote":10},"Самая дорогая поломка - не та, при которой всё падает. Падение видно сразу, его чинят за час. Дорого стоит поломка, при которой система продолжает отвечать, отчётность зелёная, а результат тихо стал хуже.",{"sort":27,"collection":22,"item":288},{"body":289,"is_lead":25,"footnote":10},"Расскажу про класс таких поломок, с которым в России теперь сталкивается любой, кто строит ИИ-системы: отказ внешнего сервиса по географическому признаку.",{"sort":11,"collection":35,"item":291},{"heading":292,"level":38},"Что случилось",{"sort":34,"collection":22,"item":294},{"body":295,"is_lead":25,"footnote":10},"В одной системе ИИ-ассистент умеет искать в интернете - это отдельный инструмент, который он вызывает, когда своих знаний не хватает. Я полез в журналы по другому поводу и от нечего делать посмотрел статистику вызовов поиска.",{"sort":40,"collection":22,"item":297},{"body":298,"is_lead":25,"footnote":10},"За всё окно хранения журналов - две недели, 335 вызовов - успешных не было ни одного. Ноль. Поиск был мёртв как минимум с начала месяца.",{"sort":44,"collection":22,"item":300},{"body":301,"is_lead":25,"footnote":10},"При этом в системе не горело ничего. Запуски числились успешными, пользователи не жаловались, поддержка была спокойна. Причина проста и от этого неприятна: ИИ-агент устроен так, что ошибку инструмента он обрабатывает сам. Инструмент не ответил - агент пожал плечами и ответил по памяти. Формально диалог завершён успешно. Фактически человек получил ответ без свежих данных и не узнал об этом.",{"sort":48,"collection":35,"item":303},{"heading":304,"level":38},"Почему это гео, а не сломанный ключ",{"sort":52,"collection":22,"item":306},{"body":307,"is_lead":25,"footnote":10},"Дальше началась диагностика, которая заняла бы дни, если бы не одна привычка: при странном отказе внешнего сервиса первым делом сравнить его поведение из разных точек.",{"sort":56,"collection":22,"item":309},{"body":310,"is_lead":25,"footnote":10},"Сервис отвечал кодом 403 и html-страницей балансировщика вместо нормального json. С зарубежного адреса тот же самый ключ давал 200. С двух независимых российских адресов - 403. Запрос вообще без ключа с тех же российских адресов получал аккуратный 401 в json - то есть сеть проходит, адрес не забанен, отвечает именно приложение. Режется конкретно аутентифицированный вызов.",{"sort":60,"collection":22,"item":312},{"body":313,"is_lead":25,"footnote":10},"Это важное различение. Битый ключ даёт 401 и внятное сообщение. Гео даёт 403 и страницу-заглушку. Разница в одну цифру, а выводы противоположные: в первом случае перевыпускаете ключ, во втором перевыпуск не поможет никогда.",{"sort":64,"collection":22,"item":315},{"body":316,"is_lead":25,"footnote":10},"Отдельная ловушка того же семейства: один известный шлюз к языковым моделям отвечает на запросы из дата-центров кодом 403 с формулировкой про политику безопасности, а в другом сценарии - кодом 401. То есть 401 от него с сервера - это не протухший ключ, а тот же самый блок. Я потратил на эту догадку время дважды и теперь держу её записанной.",{"sort":68,"collection":35,"item":318},{"heading":319,"level":38},"Масштаб проблемы шире, чем кажется",{"sort":72,"collection":22,"item":321},{"body":322,"is_lead":25,"footnote":10},"Проверка соседних сервисов с тех же адресов дала пёструю картину: часть поисковых API режет российские адреса наглухо, часть работает без вопросов. Отдельная история - мессенджеры: исходящие в один популярный мессенджер из российского облака стабильно упираются в таймаут. У этого есть красивое следствие: если алерты о сбоях настроены туда же, то оповещатель падает на отправке оповещения. Про аварии не узнаёт никто, и мониторинг снова зелёный.",{"sort":76,"collection":22,"item":324},{"body":325,"is_lead":25,"footnote":10},"Общий вывод простой: в 2026 году доступность внешнего сервиса - это не константа, а переменная, зависящая от того, откуда вы вышли в интернет. Причём меняется она без предупреждения и без письма на почту.",{"sort":80,"collection":35,"item":327},{"heading":328,"level":38},"Что с этим делать",{"sort":84,"collection":22,"item":330},{"body":331,"is_lead":25,"footnote":10},"**Считать внешний сервис ненадёжным по умолчанию.** Не потому, что он плохой, а потому, что канал до него вам не принадлежит.",{"sort":88,"collection":22,"item":333},{"body":334,"is_lead":25,"footnote":10},"**Ловить тихие отказы отдельно.** Мониторинг \"процесс завершился успешно\" здесь бесполезен. Нужны метрики результата: сколько вызовов инструмента вернули данные, а не ошибку; какая доля ответов агента опиралась на поиск. Хорошая проверка на здравый смысл - раз в месяц открыть журналы и посмотреть, что вообще происходит внутри успешных запусков.",{"sort":92,"collection":22,"item":336},{"body":337,"is_lead":25,"footnote":10},"**Не гасить ошибки внутри агента молча.** Если инструмент не ответил, это должно попадать в журнал сбоев и в оповещения, даже если агент справился без него. Умение агента выкручиваться - достоинство для пользователя и катастрофа для эксплуатации.",{"sort":96,"collection":22,"item":339},{"body":340,"is_lead":25,"footnote":10},"**Держать канал наружу отдельным узлом.** У меня весь исходящий трафик к зарубежным сервисам идёт через один управляемый шлюз. Когда точка выхода перестаёт работать, я меняю её в одном месте, а не в пятнадцати интеграциях. За последний год я менял её дважды - оба раза внезапно.",{"sort":100,"collection":22,"item":342},{"body":343,"is_lead":25,"footnote":10},"**Иметь запасного поставщика.** Не абстрактно, а конкретно: проверенный и настроенный второй сервис того же назначения, на который переключаются одной настройкой.",{"sort":104,"collection":22,"item":345},{"body":346,"is_lead":25,"footnote":10},"**Не строить алерты на канале, который может отвалиться.** Оповещения о сбоях должны идти по маршруту, независимому от того, что они охраняют.",{"sort":108,"collection":35,"item":348},{"heading":135,"level":38},{"sort":112,"collection":117,"item":350},{"list_style":119,"items":351},[352,354,356,358,360],{"lead":122,"text":353,"highlight":25},"Успешный запуск не равно полученный результат. Особенно у ИИ-агентов: они умеют молча работать без инструментов.",{"lead":122,"text":355,"highlight":25},"При странной ошибке от внешнего сервиса сравните ответ с другой точки выхода до того, как перевыпускать ключи.",{"lead":122,"text":357,"highlight":25},"403 со страницей-заглушкой и 401 в json - разные диагнозы. Смотрите не только на код, но и на формат ответа.",{"lead":122,"text":359,"highlight":25},"Точка выхода в интернет - это архитектурный элемент. Заложите её отдельно, чтобы менять в одном месте.",{"lead":122,"text":361,"highlight":25},"Канал оповещений о сбоях не должен зависеть от того же, что ломается.",{"id":363,"modified_on":364},"9f4b69c4-2c6f-438a-abc2-5de5ab33ab96","2026-08-27T18:12:56.230Z",{"id":366,"title":367,"slug":368,"excerpt":369,"cover_alt":370,"cover_position":10,"reading_time":11,"seo_title":371,"seo_description":372,"date_published":373,"date_modified":10,"source_lead":10,"tag":374,"blocks":375,"cover":468},"25708556-4348-4e69-8cad-64ded3ab4fee","Поиск по смыслу: когда векторная база окупается, а когда это лишний слой","poisk-po-smyslu-vektornaya-baza","\"Нам нужна база знаний, чтобы бот отвечал по нашим документам\" - за этой фразой стоит векторный поиск. Разбираю, где он окупается, где вместо него нужен обычный запрос, и почему уменьшение числа найденных фрагментов с 30 до 15 улучшило ответы и удешевило работу.","Облако точек со скоплениями, тонкие лучи от одной точки к ближайшим","Векторный поиск и RAG: когда он нужен бизнесу, а когда нет","Чем поиск по смыслу отличается от поиска по словам, где он реально окупается, почему больше найденных фрагментов ухудшает ответ и что ломается при внедрении.","2026-08-27T17:14:48.000Z",{"name":16,"slug":17,"color":18},[376,379,382,385,388,391,394,397,400,403,406,409,412,415,418,421,424,427,430,433,436,439,442,445,448,451,453],{"sort":21,"collection":22,"item":377},{"body":378,"is_lead":25,"footnote":10},"Каждый второй разговор про ИИ в компании рано или поздно приходит к фразе \"нам нужна база знаний, чтобы бот отвечал по нашим документам\". За этой фразой стоит конкретная технология - векторный поиск, он же поиск по смыслу. Иногда он решает задачу целиком. Иногда это дорогой способ сделать хуже, чем обычный фильтр в базе данных.",{"sort":27,"collection":22,"item":380},{"body":381,"is_lead":25,"footnote":10},"Разберу, чем он отличается от привычного поиска, где выигрывает, и что ломается при внедрении - на том, что видел в проде.",{"sort":11,"collection":35,"item":383},{"heading":384,"level":38},"В чём разница",{"sort":34,"collection":22,"item":386},{"body":387,"is_lead":25,"footnote":10},"Обычный поиск ищет слова. Вы вводите \"рассрочка\", он находит документы, где написано \"рассрочка\". Если в документе написано \"оплата частями\", вы его не найдёте.",{"sort":40,"collection":22,"item":389},{"body":390,"is_lead":25,"footnote":10},"Векторный поиск работает иначе. Каждый кусок текста заранее превращается в набор чисел, описывающий его смысл, и складывается в специальную базу. Запрос превращается в такой же набор чисел, и система ищет ближайшие по смыслу. \"Оплата частями\" и \"рассрочка\" оказываются рядом, хотя ни одна буква не совпадает.",{"sort":44,"collection":22,"item":392},{"body":393,"is_lead":25,"footnote":10},"Отсюда и область применения: он нужен там, где одно и то же говорят разными словами.",{"sort":48,"collection":35,"item":395},{"heading":396,"level":38},"Где он реально окупается",{"sort":52,"collection":22,"item":398},{"body":399,"is_lead":25,"footnote":10},"**Люди и их описания.** Задача, на которой я это видел лучше всего: закрытая платформа, где участники ищут друг друга под конкретный запрос - \"кто у нас разбирается в логистике для маркетплейсов\". Профили заполнены свободным текстом, каждый пишет о себе как умеет. Никакой фильтр по полям тут не работает, а поиск по смыслу работает.",{"sort":56,"collection":22,"item":401},{"body":402,"is_lead":25,"footnote":10},"**Обращения и заявки.** \"Не приходит письмо со ссылкой\", \"не могу подтвердить почту\", \"не активируется аккаунт\" - это одна проблема, описанная тремя людьми. Поиск по смыслу связывает их с одной инструкцией.",{"sort":60,"collection":22,"item":404},{"body":405,"is_lead":25,"footnote":10},"**Внутренние документы и регламенты.** Классический случай: сотрудник задаёт вопрос человеческим языком, а ответ лежит в регламенте, написанном канцеляритом.",{"sort":64,"collection":35,"item":407},{"heading":408,"level":38},"Где он не нужен",{"sort":68,"collection":22,"item":410},{"body":411,"is_lead":25,"footnote":10},"Здесь я обычно останавливаю разговор на входе, потому что векторную базу часто просят там, где нужен обычный запрос.",{"sort":72,"collection":22,"item":413},{"body":414,"is_lead":25,"footnote":10},"Всё, что описывается точными признаками, надо искать обычными средствами: заказы за период, клиенты из города, договоры на сумму больше миллиона, товар с артикулом. Смысл тут ни при чём, а нечёткий поиск по числам и датам даёт нечёткие результаты - что как раз плохо.",{"sort":76,"collection":22,"item":416},{"body":417,"is_lead":25,"footnote":10},"Правильная схема почти всегда гибридная: сначала обычные фильтры сужают выборку по точным признакам, потом поиск по смыслу ранжирует то, что осталось. Порядок именно такой - он и точнее, и дешевле.",{"sort":80,"collection":22,"item":419},{"body":420,"is_lead":25,"footnote":10},"И отдельно: если ваши документы - это пятнадцать страниц регламента, векторная база не нужна. Современная модель прочитает их целиком за один запрос. Технология начинает окупаться, когда документов сотни и в контекст они не помещаются.",{"sort":84,"collection":35,"item":422},{"heading":423,"level":38},"Больше найденного - хуже ответ",{"sort":88,"collection":22,"item":425},{"body":426,"is_lead":25,"footnote":10},"Самое неочевидное для тех, кто внедряет впервые.",{"sort":92,"collection":22,"item":428},{"body":429,"is_lead":25,"footnote":10},"Логика подсказывает: чем больше подходящих фрагментов мы отдадим модели, тем полнее будет ответ. На практике наоборот. Мы снижали количество подтягиваемых фрагментов с 25-31 до 15, а в одном процессе - с 60 до 20. Расход на модель заметно упал, а качество ответов не изменилось.",{"sort":96,"collection":22,"item":431},{"body":432,"is_lead":25,"footnote":10},"Причина понятна, если посмотреть на это глазами модели. Пятнадцать фрагментов, из которых три релевантны, - это три полезных куска и двенадцать отвлекающих. Модель тратит внимание на мусор и иногда цепляется за него в ответе. Меньше, но точнее - лучше, чем много и приблизительно.",{"sort":100,"collection":22,"item":434},{"body":435,"is_lead":25,"footnote":10},"Практический вывод: количество фрагментов - это настройка, которую надо подбирать замером на реальных вопросах, а не ставить \"побольше, на всякий случай\".",{"sort":104,"collection":35,"item":437},{"heading":438,"level":38},"Что ломается при внедрении",{"sort":108,"collection":22,"item":440},{"body":441,"is_lead":25,"footnote":10},"**Нарезка документов.** Главный рычаг качества и место, где обычно всё портится. Если резать текст механически по количеству символов, таблица разъедется пополам, а пункт регламента потеряет заголовок и станет бессмысленным. Резать надо по смысловым границам, а к каждому куску добавлять контекст: из какого документа, из какого раздела.",{"sort":112,"collection":22,"item":443},{"body":444,"is_lead":25,"footnote":10},"**Устаревание.** Данные меняются, а индекс - нет. Регламент обновили, а бот полгода отвечает по старой редакции и делает это уверенно. Нужен процесс переиндексации, привязанный к изменению документа, а не к календарю.",{"sort":116,"collection":22,"item":446},{"body":447,"is_lead":25,"footnote":10},"**Векторная база - это состояние.** Её содержимое не восстанавливается из репозитория, как код. У нас автоматическое обновление таких сервисов сознательно выключено: любое неаккуратное движение может пересоздать хранилище и потерять данные. Плата за это - нужно помнить о ручном шаге при развёртывании; один раз про него забыли, и сервис неделю висел без единого работающего экземпляра. Тихо, разумеется.",{"sort":129,"collection":22,"item":449},{"body":450,"is_lead":25,"footnote":10},"**Оценка качества.** Без набора реальных вопросов с проверенными ответами вы не отличите хорошую настройку от плохой. Сорок вопросов, собранных у сотрудников, - это полдня работы, и они окупаются на первой же итерации.",{"sort":133,"collection":35,"item":452},{"heading":135,"level":38},{"sort":137,"collection":117,"item":454},{"list_style":119,"items":455},[456,458,460,462,464,466],{"lead":122,"text":457,"highlight":25},"Векторный поиск нужен там, где одно и то же называют разными словами. Для точных признаков используйте обычный запрос.",{"lead":122,"text":459,"highlight":25},"Гибрид почти всегда лучше: сначала фильтры, потом смысл.",{"lead":122,"text":461,"highlight":25},"Если документов десятки, а не сотни, отдайте их модели целиком и не стройте инфраструктуру.",{"lead":122,"text":463,"highlight":25},"Больше найденных фрагментов - не лучше. Подбирайте количество замером, обычно оптимум ниже, чем кажется.",{"lead":122,"text":465,"highlight":25},"Заложите переиндексацию при изменении документов. Уверенно отвечающий по старой редакции бот хуже, чем отсутствие бота.",{"lead":122,"text":467,"highlight":25},"Сделайте набор контрольных вопросов до внедрения, а не после.",{"id":469,"modified_on":470},"0eaa4b61-42ab-4d12-b6d0-8bf934a901f9","2026-08-27T18:13:16.901Z"]