Главная / Статьи

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

Исследование 116 вопросов LongMemEval показало, что grep превосходит метод векторного поиска, но способ передачи результатов через систему Harness так же сильно влиял на точность, как и сам инструмент поиска. Что можно из этого извлечь.

Издатель: REACTAPP.TOP7 мин чтения1704 слов

Источники: Every Agentic RAG Pipeline Uses Vector Search. A 2025 Study Ran grep Against It in Production. grep Won.

Системы с усилением поиска на основе векторов долгое время опирались на одну идею: векторный поиск эффективнее поиска по ключевым словам, поскольку он учитывает смысл. Запрос «документы об квартальной прибыли» находит «отчет о доходах за 3-й квартал», хотя в этих фразах нет общих слов, поскольку пространство векторов рассматривает их как близкие по смыслу. Эта идея стимулировала огромные инвестиции в инфраструктуру — от Pinecone и Weaviate до Chroma и Qdrant. Ранние исследования поиска в плотных текстовых фрагментах показали, что он превосходит разреженный алгоритм BM25 в решении вопросов из открытых доменов; сообщество приняло эти результаты, и векторный поиск стал стандартом.

В исследовании 2026 года был проведен другой эксперимент. Агентам была поставлена задача поиска информации из базы LongMemEval — стандарта оценки, при котором агент должен отвечать на вопросы, просматривая длинные истории разговоров. В тесте сравнивалось простое точное совпадение строк с помощью grep с векторным поиском. Эксперимент проводился с использованием нескольких инструментов для управления агентами: собственного инструмента под названием Chronos, а также встроенных в платформу инструментов командной строки Claude Code, Codex и Gemini CLI.

В основном тестировании grep показал лучшие результаты по точности по сравнению с векторным поиском, и это было так на всех инструментах, а не только на одном.

Кратко

  • Условия теста: 116 вопросов из LongMemEval, сравнение grep и векторного поиска, четыре инструмента, идентичные данные разговоров.
  • Основной результат: при отображении результатов прямо в тексте grep превосходил векторный поиск по точности во всех случаях тестирования.
  • Второй вывод: роль ремня была примерно такой же, как и роль метода поиска. Один и тот же метод поиска давал совершенно разную степень точности при использовании разных ремней.
  • Почему grep здесь превосходит другие инструменты: в вопросах требуются конкретные факты: имена, даты, точные фразы. Семантическое сходство создаёт помехи при таком поиске, поскольку grep возвращает саму строку, тогда как векторный поиск возвращает фрагменты, которые лишь похожи на неё.
  • Проблема ремня: то, как результат работы инструмента представляется модели, определяет, будет ли модель им правильно пользоваться. Идеальный результат, представленный плохо, считается бесполезным.
  • Затруднительный вопрос: насколько преимущество, приписываемое лучшему поиску в системах RAG, на самом деле обусловлено лучшей конструкцией ремня?
  • Почему grep подходит для вопросов, связанных с памятью

    Механизм прост в описании. LongMemEval задаёт вопросы вроде того, какой ресторан человек назвал своим любимым в определённый день в ходе разговора, или как называется книга, которую он порекомендовал. Каждый ответ представляет собой определённую строку, находящуюся где-то в истории разговоров.

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

    Поиск с помощью grep по слову «ресторан» возвращает все фрагменты, содержащие это слово, включая тот, где упоминался любимый ресторан. grep обеспечивает точный поиск, тогда как векторный поиск — приблизительный; при поиске точных фактов приблизительный метод лишь добавляет шум.

    Vector retrieval:  high recall on semantically related segments
                       lower precision on exact-fact queries
                       noise from semantically similar but fact-absent segments
    
    grep:              perfect precision on string matches
                       lower recall on paraphrased or implicit facts
                       no noise from semantic neighbors
    

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

    Эффект «харнесса»

    Самым важным открытием является не использование grep с векторами, а сам инструмент обработки данных. При одинаковом методе поиска, одних и тех же данных и одних и тех же вопросах точность сильно меняется в зависимости от используемого инструмента. Приведенные цифры показывают масштаб различий: модель Claude Opus достигает 93,1% при использовании Chronos и 76,7% при использовании Claude Code, так что смена инструмента приводит к изменению точности примерно на такую же величину, как и смена инструмента поиска в рамках одного и того же инструмента обработки данных. Наибольшая разница между grep и векторными методами наблюдалась при использовании Chronos с Gemini 3.1 Flash-Lite — 86,2% против 62,9%.

    Инструмент обработки данных выполняет четыре функции:

    1. Он вызывает инструмент поиска с запросом.
    2. Он получает результаты поиска.
    3. Он предоставляет эти результаты модели.
    4. Модель анализирует их, чтобы дать ответ.

    Для определённого метода поиска шаги первый, второй и четвёртый одинаковы во всех случаях. Шаг третий отличается, а способ отображения результатов влияет на то, что делает с ними модель. Варианты отображения включают следующее:

    • Формат: ранжированный список, один лучший результат или объединение всех результатов.
    • Контекст: наличие у каждого результата информации о источнике, временной метке и окружающем тексте.
    • Выделение: отметка релевантной части или необходимость самостоятельного поиска внутри неё моделью.
    • Фильтрация: исключение результатов с низкой степенью уверенности или отображение всех результатов.

    Никто не стандартизировал эти варианты выбора, и каждый поставщик создает свой собственный интерфейс командной строки. Оказалось, что способ передачи результатов имеет огромное значение: передача результатов непосредственно в тексте отдавала преимущество инструменту grep, тогда как передача их в виде файлов, которые модель читает отдельно, меняла ситуацию с точки зрения сравнения — поисковый алгоритм на основе векторов обгонял grep примерно в половине пар «инструментарий + модель». В одной из конфигураций Codex точность снизилась с 93,1% при использовании grep в режиме непосредственной передачи результатов до 55,2%, когда результаты grep передавались в виде файлов.

    Если это так, то исследования, сравнивающие методы поиска при неизменном инструментарии, могут измерять неверную переменную. Лучший поисковый алгоритм в худшем инструментарии может проиграть худшему поисковому алгоритму в лучшем.

    Введение отвлекающих факторов

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

    Оба метода теряют точность по мере увеличения количества отвлекающих факторов, что является ожидаемым явлением. Однако кривые их производительности отличаются: при запросах на точное совпадение grep снижает качество работы более плавно. Если релевантный фрагмент содержит строку запроса, grep находит её независимо от того, сколько отвлекающих факторов его окружает, поскольку эти факторы не совпадают со строкой и никогда не появляются в результатах.

    Метод векторного поиска снижает производительность ещё быстрее. Отвлекающие факторы, семантически похожие на запрос, всё же попадают в результаты, поэтому доля полезных результатов в верхней части списка уменьшается по мере увеличения количества шума, и модели приходится искать ответ среди более «шумных» данных.

    Accuracy = f(retrieval_precision × harness_quality)
    
    grep retrieval precision: high for exact facts, stable with distractors
    vector retrieval precision: moderate, degrades with semantically similar distractors
    

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

    Что это означает для литературы по поиску

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

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

    На практике команды, разрабатывающие агентные системы RAG, тратят много усилий на выбор моделей эмбеддингов, поставщиков векторных баз данных и метрик сходства. Лишь немногие уделяют столько же внимания инструментам, отображающим результаты поиска модели. Эти факты указывают на то, что таким инструментам следует уделять не меньше внимания с точки зрения инженерии, чем самим механизмам поиска, однако инженерная практика ещё не поспевает за этим.

    Аккуратное анализирование результатов

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

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

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

    Вопросы для вашей собственной системы

    Для задач агентного поиска в вашей производственной системе: какая доля из них требует точного восстановления фактов, а какая — семантического сопоставления концепций? И когда вы в последний раз проверяли, насколько тщательно ваша система отображает результаты, уделяя столько же внимания этому, сколько и выбору модели эмбеддингов?