Розробники Qwen відкрили вихідний код zg (zvec-grep): локально-орієнтованого пошукового шару, що об’єднує ripgrep, BM25 і векторний пошук
Агенти кодування витрачають значну частину свого бюджету інструментів на пошук. Коли ціль — відомий символ, ripgrep точно знаходить відповідь. Коли ціль — поведінка, описана звичайною мовою, зіставлення ключових слів часто не спрацьовує, і агент повертається до вгадування термінів, читання цілих файлів та ручного формування контексту. Кожен такий обхідний шлях коштує викликів інструментів, токенів і часу.
Команда розробників Qwen оголосила zg (zvec-grep) — локальний пошуковий рівень із відкритим кодом, який об’єднує семантичний пошук, BM25 і ripgrep в одному інтерфейсі для людей і агентів. Код опубліковано в організації zvec-ai на GitHub за ліцензією Apache 2.0.
Чи можна його розгорнути? Так, уже сьогодні. Він встановлюється з npm як @zvec/zvec-grep, потребує Node.js 22 або новішої версії на macOS, Linux чи Windows, не потребує GPU зі стандартною моделлю, а ліцензія Apache 2.0 дозволяє комерційне використання.
Один індекс, чотири маршрути пошуку
zg індексує робочий простір один раз, а потім надає кілька способів запитувати його. У документації щодо конвеєра пошуку визначено чотири маршрути: гібридний маршрут за замовчуванням, який поєднує намір із лексичними опорними словами, --fts для точних термінів із ранжуванням BM25, --vector для концептуальної схожості без лексичного ранжування та --rg для вичерпного пошуку літералів або регулярних виразів. Перші три читають індекс. Маршрут --rg взагалі не потребує індексу, що важливо, коли репозиторій ще не проіндексовано.
Анонімний індекс робочого простору зберігається в <root>/.zvec-grep/. .git і .zvec-grep завжди виключаються, як і поширені каталоги залежностей, збірок, кешу та журналів, а також усе, що виключають власні правила ігнорування репозиторію. Повторний запуск zg index оновлює індекс поступово; зміна моделі вбудовування потребує явного прапорця --rebuild, оскільки векторні простори різних моделей несумісні навіть за однакової розмірності.
Проіндексовані результати містять стан актуальності fresh або possibly_stale, тож агент може скористатися достатньо хорошим результатом, не виконуючи попередню перевірку стану.
Поверхня MCP, яку насправді бачать агенти
zg install виявляє на машині Codex, Claude Code, Cursor і OpenCode та налаштовує локальну інтеграцію MCP. Сервер працює через Streamable HTTP MCP на кінцевій точці, доступній лише через loopback, http://127.0.0.1:7999/mcp, із підтримкою необов’язкової автентифікації bearer.
Варте уваги рішення в дизайні — стриманість. Відповідно до посібника MCP, стандартний набір інструментів agent надає рівно два інструменти: zvec_grep_search, коли намір відомий, але точний рядок — ні, і zvec_grep_rg, коли відомі символ, шлях або регулярний вираз. Життєвий цикл індексу залишається в CLI. Набір із шести інструментів для сумісності, який додає створення, видалення та перевірку стану індексу, а також перевірку стану сервера, існує, але його потрібно явно ввімкнути через zg server on --mcp-toolset full; у документації зазначено, що агент ніколи не повинен безшумно створювати, перебудовувати або видаляти постійний індекс.
Формат виводу оптимізований для економії контексту. Результати повертаються згрупованими за файлами із зазначенням діапазонів рядків, а попередній перегляд проіндексованого джерела за замовчуванням не додається, якщо його не запитати. zg також відхиляє прапорці ripgrep, що змінюють вивід, як-от --json, --count, -l і --vimgrep, щоб зберігати компактний формат результатів.
Вбудовування за замовчуванням виконується на пристрої
У каталозі моделей вбудовування наразі задокументовано десять локальних моделей і три віддалені кінцеві точки Qwen. Стандартна модель у швидкому старті, local/potion-code-16m-v2, є статичною моделлю Model2Vec із вихідною розмірністю 256 і лімітом вхідних даних у 8 192 токени; оскільки вона використовує статичний пошук векторів, вибір GPU не пришвидшує її роботу. До потужніших локальних варіантів належать jina-embeddings-v2-base-code, embeddinggemma-300m і qwen3-embedding-0.6b. Віддалені варіанти включають qwen/qwen3.7-text-embedding зі 128 000 вхідних токенів і мультимодальну модель qwen/qwen3-vl-embedding.
Віддалене використання обмежене. Налаштування облікових даних провайдера не дозволяє передавання даних; для цього потрібен або --allow-remote для однієї команди, або підписаний дозвіл робочого простору через zg auth grant, який можна відкликати за допомогою zg auth revoke. У публікації про запуск згадано одинадцять моделей, що працюють на пристрої, тоді як у поточній документації їх десять — це невелика розбіжність, на яку варто звернути увагу.
Що кажуть результати бенчмарків
Результати оцінювання наведено в публікації про запуск, а не в репозиторії, де розділ із бенчмарками все ще є заповнювачем. Обидва запуски були парними A/B-тестами, у яких агент, модель, запит, середовище виконання та обмеження завдань залишалися незмінними, а умова з zg додавала лише попередньо створений індекс, інструменти MCP і рекомендації щодо використання. Вартість створення індексу не включено до таблиць.
На вибірці з 20 запитань SWE-QA-Bench zg скоротив кількість викликів інструментів більш ніж удвічі, а кількість вхідних токенів — майже вдвічі, водночас підвищивши оцінку Judge на 1,50 бала. На вибірці з 80 запитань BrowseComp-Plus точність зросла з 98,67% до 99,00%, тоді як кількість вхідних токенів зменшилася на 37,56%, кількість викликів інструментів — на 43,52%, а час роботи агента — на 38,58%. Окремо зазначається, що індексування репозиторію Django (3 457 файлів) завершується менш ніж за 30 секунд на Apple M4 Pro.
Вибірки з 20 і 80 запитань є невеликими, а наведені скорочення отримано у власних тестах постачальника, тому незалежне відтворення є очевидним наступним кроком.
Інтерактивне пояснення
Основні висновки
- zg об’єднує ripgrep, BM25 і векторний пошук в одному локальному інтерфейсі для людей і агентів.
- Стандартний набір інструментів MCP надає лише два інструменти; життєвий цикл індексу навмисно залишається в CLI.
- Індексування, вбудовування та пошук виконуються на пристрої; для віддалених вбудовувань потрібна явна авторизація для окремої команди або робочого простору.
- Власні A/B-тести постачальника демонструють скорочення кількості викликів інструментів і вхідних токенів приблизно на 40–50% на невеликих вибірках.
- Apache 2.0, встановлення через npm, Node.js 22+, стандартна модель не потребує GPU.
Перегляньте zvec-ai/zvec-grep, публікацію про запуск Qwen Developerst і дорожню карту. Також підписуйтеся на нас у Twitter і не забудьте приєднатися до нашого субреддіту ML із понад 150 тисячами учасників та підписатися на нашу розсилку. Стривайте! ви є в Telegram? тепер ви також можете приєднатися до нас у Telegram.
Потрібно співпрацювати з нами для просування вашого репозиторію на GitHub АБО сторінки на Hugging Face, АБО релізу продукту, АБО вебінару тощо? Зв’яжіться з нами
Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.