[Борис Черный (создатель Claude Code в Anthropic) написал в Твиттере](https://x.com/bcherny/status/2017824286489383315), что Claude Code перешел от RAG плюс локальной векторной БД к агентному поиску. По его словам, это работает лучше и проще, с меньшим количеством проблем, связанных с безопасностью и конфиденциальностью. Другие инструменты идут другим путем. Например, Cursor использует облачные внедрения для индексации кодовой базы и поиска по семантическому сходству.

Таким образом, у нас есть как минимум две парадигмы поиска: поиск на основе встраивания (предварительная индексация, сходство векторов) и агентный поиск (использование инструментов по требованию). Они не одинаковы. У каждого есть разные компромиссы. Обе стратегии являются поисковыми. Слой истины — это нечто другое. Он сохраняет канонические объекты, сохраняет происхождение и поддерживает детерминированные запросы. Речь идет о состоянии, а не о поиске. В этом посте уровень истины сравнивается с обеими моделями поиска. Это также связано с ограничениями, с которыми я столкнулся, полагаясь только на поиск.

## Где я достиг пределов

Я использую Cursor в качестве центрального интерфейса для всех своих цифровых рабочих процессов, а не только для кодирования. Сортировка электронной почты, управление задачами, финансовые запросы, планирование контента, транзакции, контакты. Все они работают через одного и того же агента с доступом к одному и тому же репозиторию. Агентный поиск по файлам часто работает хорошо. Агент находит контекст, выявляет связи и добивается цели.

Но я достиг предела. Агент делает вывод; это не гарантирует. Вот как это выглядит:

- **Большие наборы данных, неполный отзыв.** При поиске по требованию что-то упускается или обрезается по тысячам транзакций или сотням контактов. Получение повторяется каждый раз. Нет структурированного хранилища, к которому можно было бы запросить полные результаты.
- **Невосстановимые перезаписи.** Агент перезаписывает контакт или задачу, и предыдущее состояние исчезает. Никакого отката. Пишет на месте. Не существует управления версиями или отслеживания только для добавления, которые можно было бы отслеживать и откатывать.
- **Нет доступа к нескольким инструментам.** Я не могу использовать одни и те же записи из Claude.ai или ChatGPT. Получение зависит от поставщика.
- **Невоспроизводимые ответы.** Тот же вопрос, другой ответ. Я не могу воспроизвести результат для проверки или отладки. Поиск недетерминирован.
- **Нет возможности отслеживания.** Когда агент дает неверный номер или заявку, я не могу отследить ее до исходных файлов или записей. Поиск не имеет происхождения.
- **Нестабильная каноническая идентичность.** Агент может рассматривать «Acme Corp» и «ACME CORP» как одно и то же в одном сеансе и как разные в следующем. При извлечении каждый раз выполняется повторный вывод. Не существует постоянных канонических идентификаторов или правил слияния.

## Две парадигмы поиска, одна парадигма состояния

Поиск на основе внедрения и агентный поиск передают информацию агенту. Они не одинаковы. Поиск на основе встраивания (например, курсор) предварительно индексирует корпус и дает ответы посредством сходства векторов. Индекс может размещаться в облаке и обновляться. Агентный поиск (например, Claude Code) пропускает постоянный индекс и использует инструменты для поиска и чтения по требованию. Разные реализации, разные компромиссы: конфиденциальность, устаревший подход, простота.

Их объединяет поиск. Агент находит вещи во время запроса. Слой истины не является поиском. Это устойчивое структурированное состояние: канонические сущности, происхождение, детерминированные запросы.

Мы сравниваем одну парадигму состояния (уровень истины) с двумя парадигмами поиска (на основе внедрения и агентной). В таблице ниже приведены все три. Если оба столбца поиска имеют общий предел (например, отсутствие происхождения), это сходство между ними относительно слоя истинности. Это не уравнение двух.

| Домен | Поиск на основе встраивания | Агентский поиск | Слой истины |
|--------|------------------------|----------------|-------------|
| Поиск документов | Предварительно индексированное сходство, семантическое совпадение | Поиск по требованию, вывод | Разрешение объектов, дедупликация, происхождение |
| Агрегация из нескольких источников | Объем и актуальность индекса зависят от сборки | Живой поиск по источникам | Единый граф, детерминированное слияние |
| Поиск объекта | Сходство по вложениям; нет канонического идентификатора | Вывод за сеанс | Канонические идентификаторы, слияние на основе правил |
| Запросы на временную шкалу | Только если проиндексировано; нет встроенной модели времени | Сборка по требованию | Предварительно вычисленные, управляемые схемой |
| Провенанс и аудит | Нет | Нет | Неизменяемый контрольный журнал |
| Кроссплатформенный | Привязано к провайдеру/индексу | Инструменты для конкретного поставщика | Одни и те же данные для всех инструментов |

Оба подхода к поиску оптимизированы для удобства и гибкости. Уровень истины оптимизируется для обеспечения согласованности и проверяемости.

## Что обеспечивает слой истины

Слой структурированной памяти построен на основе различных примитивов:

1. **Постоянная каноническая идентичность.** Стабильные идентификаторы объектов во всех сеансах и инструментах.
2. **Детерминированная логика слияния.** Комбинация наблюдений на основе правил, а не вывод LLM для каждого сеанса.
3. **Происхождение и аудит.** Прослеживаемое происхождение от источника до ответа.
4. **Идемпотентность.** Одни и те же входные данные дают одинаковые выходные результаты.
5. **Кроссплатформенная правда.** Та же память в ChatGPT, Claude и Cursor.
6. **Четкая модель конфиденциальности.** Контроль пользователей, отсутствие необходимости обучения поставщиков, четкие границы данных.

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

## Какой поиск может быть аппроксимирован (агентный или на основе внедрения)

Три примера показывают извлечение (агентное или на основе внедрения), приближающее возможности описанных выше. В каждом примере агент получает что-то, что выглядит подходящим в данный момент. В каждом из них проявляются одни и те же ограничения: никакой постоянной канонической идентичности, никакого происхождения, никакой гарантии того, что «один и тот же запрос» даст «один и тот же результат» в разных сеансах или при перестроении индекса. В приведенных ниже примерах используются агентские термины (инструменты, поиск по требованию). Извлечение на основе встраивания может приближаться к такому же поведению посредством семантического поиска по индексу и достигает тех же пределов.

**Пример 1. Разрешение объектов на уровне сеанса.** У агента есть инструменты для поиска в файлах, электронной почте и облаке. В нем есть инструкции рассматривать упоминания одного и того же объекта как одно. Вы спрашиваете: «Какова моя общая сумма расходов на Acme Corp?» Агент ищет банковские экспортные документы, квитанции, счета-фактуры. Он находит «Acme Corp», «ACME CORP», «Acme Corporation», делает вывод об одном и том же предприятии, суммирует суммы. Это похоже на разрешение объекта для этого запроса и сеанса. Что пошло не так: спросите завтра еще раз, и номер может отличаться. Агент может пропустить файл (обрезанный поиск, неправильный путь) и недосчитаться. Или же компания может рассматривать «Acme Corp» и «Acme Industries» как одно и то же, и их число будет завышено. Нет возможности проверить. Никакого контрольного журнала, никаких стабильных идентификаторов. Различные сессии могут не соглашаться.

**Пример 2: Сборка временной шкалы по требованию.** Агент имеет широкий доступ к файлам и датам. Вы спрашиваете: «Каковы были мои основные расходы в третьем квартале 2024 года?» Агент ищет, анализирует даты, составляет хронологический список, фильтрует по «основному». Вы получаете ответ в виде временной шкалы без специальной системы временной шкалы. Что не так: каждый раз подразумевается «майор». Одна сессия исключает предмет стоимостью 500 евро. Следующий включает в себя это. Документы с нестандартными форматами дат теряются или переворачиваются. Агент может обрезать («вот первые 10»), когда их было 15. Каждый раз один и тот же запрос, разные результаты.

**Пример 3. Уровень гибридной памяти.** Поставщик предоставляет агентный поиск и облегченную память. Агент извлекает структурированные фрагменты, сохраняет их и извлекает позже. Он обрабатывает квитанцию, сохраняет `{поставщик: "Acme Corp", сумма: 150, дата: "2024-07-15"}`. Более поздний сеанс извлекает это и объединяет с результатами живого поиска. Это похоже на структурированную память. Что пошло не так: более позднее извлечение перезаписывает фрагмент. Никаких версий и откатов. Тот же поставщик появляется как «Acme Corp» в сохраненной памяти и «ACME CORP» при новом поиске. Дубликаты накапливаются. Поставщик меняет функцию или схему, и ваши сохраненные фрагменты исчезают. Невозможно отследить неверный номер до его источника.

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

## Когда извлечение превосходно (агентное или на основе внедрения)

**Исследовательское открытие.** «Найдите в моих загрузках или заметках что-нибудь о квартире в Барселоне». Вы не знаете, где оно живет и как оно называется. Агентический поиск по файлам, папкам и форматам выявляет соответствующие фрагменты. Никакой схемы не требуется. Агент делает выводы и собирает.

**Быстрое обобщение данных из разных источников.** «Что мы решили в последних трех электронных письмах с подрядчиком?» Поиск в папке «Входящие», извлечение цепочки, подведение итогов. Одна сессия, один ответ. Вам не нужно, чтобы это резюме сохранялось или точно соответствовало в следующий раз.

**Обход специального кода и документации.** «Где мы обрабатываем веб-перехватчики Stripe?» Поиск по кодовой базе, README, внутренней документации. Макет зависит от репозитория. Агентический поиск адаптируется. Никакого единого графика не требуется.

**Однодокументная или однопоточная сортировка.** «Обобщите этот PDF-файл» или «Какой вопрос в этом письме?» Контекст ограничен. Вывода достаточно. Нет разрешения объекта или состояния между сеансами.

## Когда уровень правды превосходен

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

**Совместимость между сеансами.** Агент создает последующую задачу в первом сеансе. Завтра вы откроете новую сессию. Задача должна быть там, связанная с правильным контактом и адресом электронной почты. Агентный поиск не имеет постоянного графа. Слой правды делает это.

**Аудит и происхождение.** «Откуда взялось это число?» Проследите его по исходным записям, датам импорта и правилам деривации. Агентный поиск возвращает предполагаемые ответы. Уровень истины возвращает ответы с указанием происхождения.

**Разрешение объектов в масштабе.** Сотни контактов, некоторые дубликаты (варианты названий, объединенные компании). Тысячи транзакций ссылаются на одного и того же поставщика в разных вариантах написания. Уровень истины поддерживает канонические идентификаторы и правила слияния. Агентный поиск повторно делает выводы при каждом сеансе и может не согласиться.

**Детерминированное воспроизведение.** Каждый раз один и тот же запрос, один и тот же результат. Критически важен для отчетности, соответствия требованиям или отладки. Агентный поиск недетерминирован. Слой истинности идемпотентен.

**Восстанавливаемость при неправильной записи.** Агент перезаписывает контакт, объединяет две задачи в одну или «исправляет» транзакцию на основе неправильного вывода. При агентном поиске и прямой записи файлов предыдущее состояние исчезает. Нет отмены. Уровень истины использует запись только с добавлением или с поддержкой версий. Вы можете отследить, что изменилось, и откатиться назад. Мутации — это явные операции, а не тихая перезапись.

## Почему это различие важно

Извлечение (на основе внедрения или агентное) привязано к сеансу. Сам по себе он не дает вам постоянной идентичности, происхождения или межсессионной согласованности. Его ценность — гибкий доступ по требованию. Ценность слоя истины — постоянная, межсеансовая правда. Детерминированное, проверяемое разрешение объектов сложно. Ни встроенное сходство, ни специальный агентный поиск не являются эквивалентными. Агенты, размещаемые у провайдера, сталкиваются со стимулами, которые противоречат управляемой пользователем памяти с приоритетом конфиденциальности. Их память и инструменты, как правило, зависят от конкретного продукта.

Твит Черного отражает реальный сдвиг. RAG плюс векторная база данных были сложными и имели последствия для конфиденциальности. Агентский поиск упростил поиск для Клода Кода. Курсор и другие используют другой путь поиска (встраивание в облако). Обе парадигмы поиска решают вопрос: «Как агент находит вещи?» Ни один из них не решает вопрос: «Как нам получить стабильную идентичность, происхождение и проверку?» Слой правды нацелен на последнее. Уровни поиска и состояния будут сосуществовать. Они решают разные проблемы.

## Что я строю

Я создаю [Neotoma](https://github.com/markmhendrickson/neotoma), уровень структурированной памяти, который использует подход уровня истины: разрешение сущностей, сроки, происхождение, детерминизм, кроссплатформенность через MCP. Я тестирую его в своем собственном агентском стеке, чтобы увидеть, какое значение эти примитивы имеют на практике. Поиск на основе встраивания и агентный поиск — это две стратегии поиска. Ни один из них не дает вам постоянной идентичности или проверяемого состояния. Слой правды делает это. Я строю последнее.