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