Перейти к содержимому
RAGRAF

Замеры и границы: что доказано, а что нет

Все опубликованные числа продукта с источниками: навигационные задачи, проверяемость фактов, латентности, индексация — и честный разбор того, чему верить нельзя.

Правило публикации чисел #

Каждое число в документации RAGRAF указывает на артефакт: bench/results/*.json (опубликованы прогоны M2 rev-0012 и rev-0025), журнал телеметрии usage_call, тайминги стадий index_status. Оценки (токены ≈ символы/4) помечены «оценка» везде, где появляются. Числа без артефакта в документацию не попадают — это требование ФТ, а не стиль.

Навигационные задачи (13 задач, пилотный корпус) #

Протокол: 13 реальных навигационных вопросов к PHP-порталу («где определяется», «кто вызывает», «какие колонки у таблицы»). Каждый вопрос решается двумя способами: grep+чтение файлов против операций RAGRAF.

Метрикаgrep-подходRAGRAFАртефакт
Попадание в целевой файл с первой попытки—92% (12/13)bench M2
Вызовов инструментов на задачу2,0–3,114 суммарно (против 28; «реалистично 43» — модельная поправка, записанная в самом артефакте)usage_call
Полных чтений файлов140usage_call
Проверяемость фактов path:line—100% для фактов о коде (M6, автоматическая сверка ссылок)bench-скрипт M6
Общая проверяемость всех фактов—24,4% — честно: у фактов схемы нет номеров строк, и мы не дорисовываем ссылки ради отчётаM6

Как читать 92%: 12 из 13 — на одном корпусе, одним протоколом, одной моделью-агентом. Это не «точность продукта 92%»; это результат конкретного прогона. Воспроизводится bench/-скриптами из репозитория.

Латентности операций (измерено, пилот) #

ОперацияСреднееКонтракт (НФТ-4)
schema0,5 мс≤ 200 мс p95
symbol0,7 мс≤ 200 мс p95
table_usage0,9 мс≤ 200 мс p95
write_check3,3 мс≤ 200 мс p95
impact (depth 3)единицы–десятки мс на 487 узлах≤ 1 с p95
search (гибрид)до ~1 с — доминирует эмбеддинг запроса (кэша запросов нет, R-PERF-3)≤ 1 с p95
sliceвнутри Joern≤ 2 с p95

Индексация #

ПоказательЗначение
Полный прогон, 323-файловый корпус (CPU)71 с (CPG/Joern — 64 с из них)
Пилотный корпус123 файла → 487 узлов → 7 292 рёбра → 457 чанков → 27,5 МБ хранилищ
Переиспользование эмбеддинговнеизменённые чанки не перевекторизуются (chunk_sha256); точечная пересборка — единицы секунд
Качество чанковmax 5 543 токена при бюджете 8 000; over-budget 0
Векторные нормы0,0576–0,6627 (выбросов-нулей нет)
Усечённые сигнатуры33 → 0 после фикса U3

Доработка подсистемы (сквозной кейс) #

46 обращений к операциям, 0 ошибок выполнения, 0 полных чтений файлов; write_check — 14 вызовов (каждый перед SQL-записью); 4 дефекта предотвращены до написания кода; 9 дефектов найдено в разрабатываемой подсистеме; 13 дефектов найдено в самом RAGRAF той же работой (5 из них невидимы синтетическим тестам — «код работал правильно, а измерял себя неправильно»). Экономия токенов ~5 200 на сессию — оценка (символы/4), не замер контекстного окна.

Внешние ориентиры (не наши измерения) #

ИсточникЧислоКак используется
VulnGym56,5% провалов — навигация (26,8% файл не найден; 29,7% файл найден, строка нет) при цепочках >9 шаговобоснование проблематики
LLMxCPG (USENIX Sec '25)19–132 валидных CPGQL из 1278 у базовых моделейобоснование P4 (нет языка запросов)
LCIP (arXiv:1512.07435)precision 69% / recall 79% / F1 55% — потолок impact-анализа (Java, мутации)только ориентир порядка величины для M2; никогда «цель для отчёта»
ALIBIинъекции в комментариях подавляют обнаружение >90%обоснование P6 (текст отдельно от фактов)
Repoformerправо не искать — до 70% ускоренияобоснование P8 (точность > полнота)

Чему верить нельзя (осознанные ограничения замеров) #

  1. Один корпус, одна модель-агент. 92% и «14 против 28/43» — свойства пилотного PHP-портала и конкретного протокола. Перенос на Python-монолит или другую модель не гарантирован и не измерен.
  2. «Реалистично 43» — модельная поправка. Замеренное число — 28; 43 получено поправкой на повторные чтения в артефакте прогона. Мы публикуем оба числа и способ получения.
  3. Токены — оценка. Коэффициент символы/4 измерен на двух корпусах, но контекстное окно агента мы не мерили.
  4. 24,4% общей проверяемости — не провал, а граница метода. Факты схемы (таблицы/колонки) не имеют path:line по природе; требовать от них ссылок — значит фабриковать их.
  5. LCIP — другой язык и метод. Java + мутационная симуляция; сравнение с нашим PHP-пилотом корректно только как порядок величины.

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


Смежное: проблематика → · перспективы →