grep перевершив метод векторного пошуку у тестах пам’яті агента, і вибір інструментів мав таке ж значення.
Дослідження 116 запитань LongMemEval показало, що grep випереджає метод векторного пошуку, проте спосіб використання інструментів впливає на точність не менше, ніж сам інструмент пошуку. Що можна з цього зробити.
Системи з підсиленням пошуку довгий час ґрунтувалися на одній переконаності: векторний пошук кращий за пошук за ключовими словами, оскільки він враховує сенс. Запит на „документи про квартальні результати“ знаходить „Звіт про дохід за 3-й квартал“, навіть якщо ці фрази не мають спільних слів, адже простір вкладення розглядає їх як близькі. Ця переконаність спричинила величезні витрати на створення інфраструктури — від Pinecone та Weaviate до Chroma та Qdrant. Ранні дослідження щодо пошуку у детальних текстах показали, що векторний пошук кращий за розріджений алгоритм BM25 у відповідях на запитання в відкритих доменах; галузь прийняла ці результати, і векторний пошук став стандартом.
У дослідженні 2026 року був проведений інший експеримент. Агентам було поставлено завдання з пошуку інформації з бази LongMemEval – метрики, у якій агент має відповідати на запитання, шукаючи в довгих історіях розмов. У тесті протиставлялися grep, що здійснює просте точне зіставлення рядків, та векторний пошук. Експеримент проводився з використанням кількох інструментів для керування агентами: спеціального інструменту під назвою Chronos, а також вбудованих у провайдера інструментів командного рядка Claude Code, Codex та Gemini CLI.
У основному варіанті тестування grep виявився кращим за векторний пошук за точністю, і це сталось у всіх інструментах, а не лише в одному.
Короткий опис
- Умови тестування: 116 запитань з LongMemEval, порівняння grep та векторного пошуку, чотири інструменти керування, ідентичні дані розмов.
- Основний результат: при поверненні результатів безпосередньо в тексті grep перевершив векторний пошук за точністю у всіх випробуваних випадках.
Чому 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%.
Інструмент обробки даних виконує чотири функції:
- Він викликає засіб пошуку з запитом.
- Він отримує результати пошуку.
- Він передає ці результати моделі.
- Модель аналізує їх, щоб дати відповідь.
Для певного методу пошуку кроки перший, другий та четвертий є однаковими скрізь. Крок третій відрізняється, а спосіб подання результатів впливає на те, що робить з ними модель. Варіанти подання включають наступне:
- Формат: ранжований список, один найкращий результат або об’єднання всього.
- Контекст: чи містить кожен результат свій джерело, час створення та навколишній текст.
- Підкреслення: чи позначається відповідна частина, чи моделі потрібно її шукати всередині.
- Фільтрація: чи відкидаються результати з низькою достовірністю, чи відображаються всі.
Ніхто не стандартизував ці варіанти вибору, і кожен постачальник має власний інтерфейс командного рядка. Виявилося, що спосіб передачі даних має велике значення. Передача результатів безпосередньо в тексті сприяла використанню 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
Для агентів, які працюють із великими, змішаними базами даних із довгою історією розмов, кількома типами документів та нерівномірною релевантністю, ця стійкість до відволікаючих факторів є справжньою практичною перевагою під час виконання завдань, що вимагають точності фактів.
Що це означає для літератури з пошуку інформації
У статтях, які порівнюють щільний та розріджений пошук, моделі вбудовування чи стратегії переранжування, зазвичай фіксують інструментарій та змінюють сам пошуковик, вважаючи інструментарій константою. Однак отримані тут результати свідчать про те, що це не константа — він взаємодіє з методом пошуку. Інструментарій, налаштований під векторний пошук, може погано показувати результати за допомогою grep, і навпаки також є можливим.
Можливо, методи пошуку були налаштовані під інструментарії, які випадково віддають перевагу векторним підходам. Абсолютні порівняння все ще можуть бути актуальними, тоді як відносні ранжування — ні.
На практиці команди, які розробляють агентські системи RAG, витрачають багато зусиль на вибір моделей ембеддингу, постачальників векторних баз даних та метрик схожості. Лише деякі приділяють подібну кількість уваги інструментам, які відображають результати пошуку моделі. Ці результати свідчать про те, що такі інструменти заслуговують принаймні такої ж технічної уваги, як і самі механізми пошуку, проте технічна практика ще не наздогнала це.
Уважне читання результатів
Ця галузь, ймовірно, не отримає належної уваги, і не тому, що результати слабкі. Вони незручні для галузі, побудованої на векторному пошуку, оскільки іноді краще підходить звичайний grep, а проектування інструментів недооцінюється.
Їх все одно слід уважно читати. У LongMemEval є певний розподіл завдань, який віддає перевагу пошуку точних фактів, і те, що grep має перевагу в цьому аспекті, не означає, що він перемагає скрізь. Семантичний пошук показує кращі результати у завданнях, що вимагають парафразування, у міжмовному пошуку та при запитах на рівні концепцій. У дослідженні також аналізувалися текстові дані багатосеансових чатів, причому гібридний пошук чи більш потужні лексичні бази не були частиною дослідження.
Висновок полягає не у використанні grep. Слід підбирати метод пошуку відповідно до розподілу завдань та ретельно проектувати інструменти, як і сам алгоритм пошуку. Жоден з цих підходів поки що не є стандартною практикою, хоча обидва мали б нею стати.
Питання до вашої власної системи
Для завдань агентного пошуку у вашій продакшн-системі: яка частина вимагає точного відтворення фактів, а яка — семантичного зіставлення концепцій? І коли ви востаннє перевіряли, чи ваш інструмент представляє результати з такою ж ретельністю, яку ви проявили при виборі моделі ембеддингу?
Пов’язана література
- Agentic RAG: Дозвіл LLM вирішувати, коли та де здійснювати пошук — Чому статичний RAG не справляється з багатоетапними та часозалежними запитами, та як агент LangGraph організовує пошук між Qdrant та веб-пошуком, враховуючи певні обмеження та застереження.