惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
O
OpenAI News
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
Jina AI
Jina AI
D
Docker
N
News and Events Feed by Topic
TaoSecurity Blog
TaoSecurity Blog
雷峰网
雷峰网
V
V2EX
小众软件
小众软件
N
News | PayPal Newsroom
GbyAI
GbyAI
Recorded Future
Recorded Future
SecWiki News
SecWiki News
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
Security Latest
Security Latest
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
Project Zero
Project Zero
Cyberwarzone
Cyberwarzone
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
The Last Watchdog
The Last Watchdog
V
Visual Studio Blog
C
Cisco Blogs
T
Tor Project blog
Google Online Security Blog
Google Online Security Blog
I
InfoQ
Attack and Defense Labs
Attack and Defense Labs
Y
Y Combinator Blog
博客园 - 聂微东
L
LangChain Blog
Blog — PlanetScale
Blog — PlanetScale
Apple Machine Learning Research
Apple Machine Learning Research
S
Schneier on Security
S
Securelist
博客园_首页
W
WeLiveSecurity
P
Privacy International News Feed
S
SegmentFault 最新的问题
博客园 - 【当耐特】
L
LINUX DO - 热门话题
Latest news
Latest news
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Инженерия качества: Как перестать надеяться на удачу и начать измерять своих ИИ-агентов [Часть 2]
Сергей Кобец · 2026-05-12 · via Все публикации подряд на Хабре

Простой

5 мин

12K

Доброго времени суток!

В прошлой статье мы немного поговорили, о понятии GoldenSet и том, что он необходим нам для того, чтобы оценивать нашу ИИ систему. А так же рассмотрели простой пример, как можно получить такой GoldenSet, для RAG системы автоматически, используя фреймворк RAGAS.

Давайте рассмотрим, что вообще разумно измерять в ИИ системе.

Немного расширим круг рассматриваемых метрик и не будем ограничиваться только RAG.

LLM как и любая генеративная нейросеть - вероятностна, один и тот же запрос, особенно в случае агрессивно настроенных температур, может давать поразительно разные ответы. Как мы понимаем, сильные перефразировки ответов, совсем не обязательно означают, что они неверные, но почти гарантировано означает, что простыми проверками и посимвольной сверкой с эталонным ответом, мы никак не можем ограничиться…

Нам нужно выбрать такую методологию, которая была бы способной извлечь из фактического(реального) ответа, смысловую нагрузку и используя извлеченные факты, провести их корректное семантическое сравнение с эталонным ответом. Разумеется проще всего сделать такую проверку используя саму LLM.

Factual Correctness

Рассмотрим это на примере реализации во фреймворке RAGAS, интересующая нас метрика - Factual Correctness.

Рассмотрим ее устройство детально.

Как часто бывает с LLM метриками, внутри мы увидим, достаточно простую реализацию, которая оперирует буквально 2-мя системными промптами:

Первый (ClaimDecompositionPrompt) используется для извлечения атомарных утверждений:

Decompose and break down each of the input sentences into one or more standalone statements. Each statement should be a standalone claim that can be independently verified. Follow the level of atomicity and coverage as shown in the examples.

К этому промпту в зависимости от настроек, добавляется несколько примеров в технике Few-Shot (эталоны запроса - пример правильного ответа от LLM)

Настроек такого рода у метрики 2:

  1. atomicity: t.Literal["low", "high"] = "low"

  2. coverage: t.Literal["low", "high"] = "low"

  • Атомарность (atomicity) - определяет на насколько мелкие утверждения нужно разбить фактический ответ

  • Покрытие (coverage) - определяет число извлекаемых утверждений, извлечь все факты из фактического ответа или только некоторые.

Я предпочитаю, в большинстве случаев ставить комбинацию high + high, так как в этом случае метрика наиболее точна, но понятно, что потребуется большее время для ее вычислений.

Когда утверждения извлечены, необходимо выполнить их сравнение с эталоном, тут используется еще один промпт и Few-Shot примеры к нему:

Your task is to judge the faithfulness of a series of statements based on a given context. For each statement you must return verdict as 1 if the statement can be directly inferred based on the context or 0 if the statement can not be directly inferred based on the context.

Как мы видим, пока все достаточно просто. Получив оценку корректности утверждений, алгоритм сводит это к 3м метрикам на выбор:

  • Precision

  • Recall

  • F-beta score

Считаются, они в как обычно, но давайте освежим в памяти, на всякий случай:

  • TP(True Positive) - число утверждений в реальном ответе подтвержденные эталоном

  • FP(False Positive) - число утверждений в реальном ответе не подтвержденные в эталоне

  • FN(False Negative) - число утверждений в эталоне отсутствующие в реальном ответе (для вычисления этой метрики придется получить утверждения и для эталона)

Далее все просто:

\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}F_\beta = \frac{(1 + \beta^2) \cdot (\text{precision} \cdot \text{recall})}{(\beta^2 \cdot \text{precision} + \text{recall})}

F-betа разновидность F меры, если нужно получить F1 просто не трогайте beta (по умолчанию там 1). Этот коэффициент используется для регулирование влияния Precision/Recall

  • больше 1 большее влияние Recall

  • меньше 1 большее влияние Precision

Метрика, крайне полезна в самых разных сценариях построения агентских систем, все, что нам нужно иметь GoldenSet и выверенные эталонный примеры.

Summarization Score

Суммаризация - генерация по длинному тексту, более короткого с сохранением смысла, одна из самых часто встречаемых техник в агентской системе. Работа с историей диалога, построение агентов для вайб-кодинга, заведение “карточек” с кратким описанием клиентских диалоговых сессий, построение графовых моделей по корпусу документов и т.п. совсем не всегда, нам доступен и не всегда рационален, подход с хранением всего контекста целиком или вынос его хранения в RAG топологию. Между тем суммаризация - конечно теряет часть информации и ее так же необходимо измерять. В Ragas для этого предлагается вполне качественный инструмент измерения - метрика Summarization Score.

Рассмотрим ее детально:

Основная идея метрики - текст после суммаризации, должен отвечать на те же вопросы что и текст до суммаризации. Сами вопросы и ответы метрика получает через LLM, делается это довольно просто:

  1. Сперва извлекаем из оригинального текста ключевые сущности Библиотека делает это через промпт с Few-Shot примерами

Extract keyphrases of type: Person, Organization, Location, Date/Time, Monetary Values, and Percentages.

  1. По каждой ключевой сущности генерируем вопрос опираясь на текст до суммаризации Cнова промт и Few-Shot примеры к нему

Based on the given text and keyphrases, generate closed-ended questions that can be answered with ‘1’ if the question can be answered using the text, or ‘0’ if it cannot. The questions should ALWAYS result in a ‘1’ based on the given text.

Важный момент: На все эти вопросы ответ из исходного текста всегда “да/нет” (1/0). Например, если ключевая фраза “Илон Маск”, вопрос может быть “Упоминается ли Илон Маск в тексте?”. Ответ из контекста — “1”.

  1. По каждому вопросу ищем ответ в результате суммаризации: Как обычно ничего нового :-)

Based on the list of close-ended ‘1’ or ‘0’ questions, generate a JSON with key ‘answers’, which is a list of strings that determines whether the provided summary contains sufficient information to answer EACH question. Answers should STRICTLY be either ‘1’ or ‘0’. Answer ‘0’ if the provided summary does not contain enough information to answer the question and answer ‘1’ if the provided summary can answer the question.

Выход с этого шага, просто список нулей и единиц, каждый элемент списка соответствует тому удалось или нет, найти ответ в суммаризованном тексте.

Осталось свести этот список в разумную формулу.

\text{Final Score} = \text{coeff} \cdot \underbrace{\frac{\text{Correct Answers}}{\text{Total Questions}}}_{\text{Summarization Score}} + (1 - \text{coeff}) \cdot \underbrace{\text{Conciseness Score}}_{?}

С Summarization Score, должно быть все понятно, но давайте рассмотрим, что за Conciseness Score и coeff.

Eсли суммаризация просто скопирует весь исходный текст, она ответит на все вопросы правильно и получит идеальный балл. Но это плохая суммаризация! Она не краткая и вообще не работает. Для решения этой проблемы вводится Conciseness Score (Оценка лаконичности).

\text{Conciseness Score} = 1 - \frac{\text{Length of Summary}}{\text{Length of Reference Context}}

Эта часть метрики штрафует слишком длинные суммаризации, чем длиннее по сравнению с исходным текстом, тем ниже ее оценка лаконичности.

Последний параметр coeff - раз мы ввели лаконичность, нам теперь надо как-то зашить в формулу, что важнее лаконичность(компактность суммаризации) или ее качество, число правильных ответом на вопросы по ней, это этот коэффициент это и делает.

  • По умолчанию он равен 0.5. Это означает, что мы придаем равный вес качеству передачи информации и краткости.

  • Если вы хотите, чтобы метрика больше штрафовала за длинный текст, вы можете увеличить coeff (например, до 0.7), сделав акцент на Summarization Score.

  • Если вы хотите, чтобы метрика была более терпима к длине, вы можете уменьшить coeff (например, до 0.3).

Не все любят читать огромные простыни текста, поэтому на этом закончим, данную часть статьи, надеюсь было полезно. В следующей рассмотрим еще несколько метрик, а затем перейдем к разговору об E-E.

Благодарю за внимание!