Когда индекс превышает окно, сама парадигма поиска упирается в предел.


Поиск преуспел

Мы обсудили ограничения RAG. Неточность эмбеддинг-сходства, произвольность разбиения на чанки, невозможность оценки качества.

Но это обсуждение касалось качества поиска. «Как искать точнее?»

Теперь нужно задать другой вопрос. Допустим, поиск идеален. Допустим, он возвращает только информацию, точно релевантную запросу.

И всё равно бывают случаи, когда этого недостаточно.


Проблема масштаба

Внутренняя база знаний содержит 1000 утверждений. Есть индекс. Помещаем индекс в контекст. Запрашиваем. Получаем результаты. Работает.

Утверждений становится 100 000. Индекс становится больше. Он всё ещё помещается в окно. Работает.

Утверждений становится 10 миллионов. Сам индекс превышает окно.

Это не проблема качества поиска. Сколь бы точным ни был поиск, если индекс, который нужно просмотреть для поиска, не помещается в окно, поиск даже не может начаться.

А знания растут. Корпоративных документов каждый день становится больше. Усвоенное агентом продолжает накапливаться. Мировые знания не сокращаются.

Решит ли проблему более широкое окно? Если 128K станет 1M, потом 10M? Если знаний станет 100M, та же проблема повторится. Окно всегда конечно, а знания всегда растут. Этот дисбаланс постоянен.


Разница между поиском и навигацией

Поиск получает результаты одним запросом.

Запрос: «Операционная прибыль Samsung Electronics за Q3 2024» -> Результат: 9,18 трлн вон.

Один шаг. Готово.

Навигация достигает результата через несколько шагов.

Шаг 1: Просмотр карты верхнего уровня знаний. «Компании», «Отрасли», «Макроэкономика», «Технологии»… -> Выбираем «Компании».

Шаг 2: Просмотр карты компаний. «Samsung Electronics», «SK Hynix», «Hyundai Motor»… -> Выбираем «Samsung Electronics».

Шаг 3: Просмотр карты Samsung Electronics. «Финансы», «HR», «Технологии», «Юридические вопросы»… -> Выбираем «Финансы».

Шаг 4: Просмотр карты финансов. «Квартальные результаты», «Годовые результаты», «Инвестиционные планы»… -> Выбираем «Квартальные результаты».

Шаг 5: Извлекаем «Q3 2024» из квартальных результатов. -> Операционная прибыль: 9,18 трлн вон.

Результат тот же. Процесс другой.

Поиск – это вопрос «Есть ли у вас это?» Навигация – это отслеживание «Где это может быть?»

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


Аналогия с библиотекой

Вы приходите в районную библиотеку. В ней 3000 книг. Вы спрашиваете библиотекаря: «У вас есть биография Ли Сунсина?» Библиотекарь помнит: «В конце третьей полки.» Поиск. Работает.

Вы приходите в Национальную библиотеку. В ней 10 миллионов томов. Вы спрашиваете библиотекаря: «У вас есть биография Ли Сунсина?» Библиотекарь тоже не знает. Никто не запоминает 10 миллионов томов.

Зато есть система классификации.

Вы смотрите указатель на первом этаже. -> Секция «История» – на 3-м этаже. Поднимаетесь на 3-й этаж. -> «История Кореи» – в восточном крыле. Идёте в восточное крыло. -> «Эпоха Чосон» – в ряду D. Идёте в ряд D. -> «Личности» – в 3-й секции ряда D. Ищете в 3-й секции. -> Есть биография Ли Сунсина.

Объём памяти библиотекаря не изменился. Масштаб библиотеки изменился. Метод сместился от вопроса библиотекарю (поиск) к прохождению системы классификации (навигация).

Ключевой момент. На каждом шаге размер того, что нужно просмотреть, помещается в объём памяти библиотекаря. Указатель первого этажа. Карта зон третьего этажа. Список рядов восточного крыла. Список секций ряда D. Всё умещается в один взгляд.

Полный каталог всех фондов не умещается в один взгляд. Но карта каждого этажа – умещается.

Вот чем навигация отличается от поиска. Не нужно видеть целое сразу. Нужно лишь определить следующее направление с текущей позиции.


Карты карт

В технических терминах это иерархическая структура карт.

Карта уровня 1: классификация верхнего уровня всех знаний. «Эта база знаний содержит информацию о компаниях, отраслях, макроэкономике и технологиях.» Десятки элементов. Помещается в окно.

Карта уровня 2: подкатегории каждой классификации верхнего уровня. «Категория компаний содержит Samsung Electronics, SK Hynix, Hyundai Motor…» Десятки-сотни элементов. Помещается в окно.

Карта уровня 3: детальные категории каждой подкатегории. «Samsung Electronics содержит: Финансы, HR, Технологии, Юридические вопросы…» Десятки элементов. Помещается в окно.

Конкретные утверждения: конкретная информация, на которую указывает карта нижнего уровня. «Операционная прибыль Samsung Electronics за Q3 2024 составила 9,18 трлн вон.»

Если размер каждого слоя помещается в окно, навигация возможна вне зависимости от общего масштаба знаний.

Даже при 10 миллионах утверждений, если каждый слой содержит 100 элементов, цель достигается за 5 шагов навигации. 100 -> 100 -> 100 -> 100 -> 100 = покрытие до 10 миллиардов. На каждом шаге в окно попадает лишь 100 элементов.

Это тот же принцип, по которому B-tree находит данные на диске. Он не загружает все данные в память. Он читает лишь текущий узел дерева и переходит к следующему. Данные любого масштаба могут быть исследованы вне зависимости от размера памяти.

Контекстное окно – это память. База знаний – это диск. Карта – это узел B-tree.


Агент идёт

При многошаговой навигации кто выбирает направление на каждом шаге?

Агент.

Помещаем карту уровня 1 в контекст. Агент читает её, сопоставляет с запросом и выбирает направление «Компании».

Запрашиваем карту уровня 2. Карта подкатегорий компаний попадает в контекст. Агент читает её и выбирает направление «Samsung Electronics».

Запрашиваем карту уровня 3. Агент выбирает «Финансы».

Это использование инструментов агентом. Чтение карты – вызов инструмента. Выбор направления – суждение. Запрос следующей карты – следующий вызов инструмента.

В поиске агент запрашивает один раз и получает результат. Пассивно. В навигации агент принимает множество решений и выбирает направления. Активно.

Здесь контекстная инженерия встречается с проектированием агентов. Что попадает в контекст, определяется пошагово через суждения агента. Формирование контекста переходит от статической сборки к динамической навигации.


Эту проблему сегодня почти не обсуждают

Если посмотреть на дискуссии в сообществе RAG, основная энергия направлена на качество поиска.

Лучшие модели эмбеддингов. Лучшие стратегии разбиения на чанки. Архитектуры reranker. Гибридный поиск. Graph RAG.

Всё важно. Всё о том, «как получить лучшие результаты от одного поиска».

«А что, если одного поиска недостаточно?» – почти не обсуждается.

Момент, когда индекс превышает окно. Момент, когда результатов слишком много, чтобы поместиться. Момент, когда масштаб знаний разрушает саму предпосылку парадигмы поиска.

Этот момент приближается. Знания растут, а окно конечно.

Большинство текущих решений – уклонение. Извлекать только top-k. Остальное отбросить. Расширить окно. Затраты растут. Разделить знания. Отдельные векторные хранилища для каждого домена.

Все они сталкиваются с той же проблемой при дальнейшем росте масштаба.


Предпосылки для навигации

Чтобы навигация работала, знания должны иметь навигируемую структуру.

Должна существовать иерархия. Если знания разложены плоско, навигация невозможна. Хранилище эмбеддинг-векторов плоское. Все чанки на одном уровне. Иерархии нет, поэтому само понятие «углубиться» не существует.

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

Пути должны быть разнообразными. Должна быть возможность добраться до одной и той же информации несколькими путями. Через «Samsung Electronics -> Финансы -> Операционная прибыль» или через «Полупроводниковая отрасль -> Крупные компании -> Samsung Electronics -> Результаты». Потому что естественный путь зависит от вопроса. Если критерий классификации зафиксирован на одном, он подходит для одних вопросов и не подходит для других.

Структура папок имеет иерархию, но только один путь. Файл принадлежит только одной папке. Существует только путь «Samsung Electronics/Финансы/Операционная прибыль». Когда приходит вопрос о «полупроводниковой отрасли», естественная навигация через эту структуру папок невозможна.

Граф имеет и иерархию, и разнообразие путей. Один узел может быть связан с несколькими родительскими узлами. До узла Samsung Electronics можно добраться через путь «Компании», путь «Полупроводниковая отрасль» или путь «Компании, котирующиеся на KOSPI». Из какого бы контекста ни пришёл вопрос, естественный путь существует.


Это нерешённая проблема

Нужно честно сказать кое-что.

Необходимость многошаговой навигации очевидна. Но стандартной системы, которая эффективно это реализует, пока нет.

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

Это открытые вопросы.

Но то, что проблема не решена, не означает, что проблемы не существует.

Знания растут. Окно конечно. Момент, когда одного поиска недостаточно, приближается.

Навигация должна быть готова как ответ для этого момента. Если она не будет готова, останутся лишь варианты расширять окно или отбрасывать знания.


Итог

Поиск возвращает результаты одним запросом. Когда масштаб знаний достаточно велик, этого недостаточно. Потому что сам индекс превышает окно.

Навигация следует иерархическим картам, выбирая направления по мере спуска. То, что нужно просмотреть на каждом шаге, помещается в окно. Каждый шаг конечен вне зависимости от общего масштаба. Подобно тому, как B-tree находит данные, не загружая весь диск в память.

Агент определяет направление на каждом шаге. Формирование контекста переходит от статической сборки к динамической навигации. Здесь контекстная инженерия встречается с проектированием агентов.

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

Это по-прежнему нерешённая проблема без стандартного решения. Но пока знания растут, а окно конечно, это проблема, которую нужно решить.