Проблема «непрозрачных» файлов
Стандартный инструмент ripgrep (rg) рассматривает такие форматы, как PDF, архивы или модели LLM, как «непрозрачные байты» и пропускает их, считая бинарными. Это создает слепые зоны при поиске информации. Проект RGX (Rust Grep X) решает эту проблему, внедряя адаптеры, которые извлекают текст непосредственно внутри процесса (in-process), без вызова внешних утилит.
Техническое превосходство и метрики
В отличие от аналога rga, который вызывает отдельный процесс для каждого файла, RGX работает в едином потоке. Это дает прирост производительности и точности. На тестовом корпусе с исходным кодом и архивами (RAR, 7z, tar, zstd и др.) RGX нашел 20 файлов, тогда как ripgrep — только 8 (так как он игнорировал архивы). Это разница в +122% найденных совпадений.
| Характеристика | RGX (rgx) | Ripgrep (rg) |
|---|---|---|
| Поиск внутри PDF/Office/ZIP | Да (in-process) | Нет (считает бинарными) |
| Поиск внутри LLM (GGUF) | Да (по тензорам и метаданным) | Нет |
| Механизм парсинга | Встроенные адаптеры Rust | Внешние утилиты (для rga) или игнор |
| Размер бинарника (полный) | ~9.3 MB | ~1.5 MB (базовый rg) |
| Размер бинарника (оптимизированный) | ~3.5 MB (только движок) | — |
Гибкая архитектура и кастомизация
Движок rgx_core написан на no_std Rust, что позволяет использовать его в ограниченных средах (например, в NAS или роутерах). Разработчики могут собирать бинарник выборочно, отключая ненужные форматы для экономии места:
- Полная версия: 9 340 416 байт (поддержка всех форматов).
- Оптимизированная: 4 014 592 байт (только zip, pdf, grib).
- Ядро: 3 516 416 байт (только regex-движок, без адаптеров).
Продвинутая фильтрация по метаданным
RGX позволяет искать не только по тексту, но и по фактам файла через флаг --filter. Поддерживаются предикаты для MIME-типа, автора, GPS-координат, языков программирования внутри архивов и имен тензоров в моделях.
Примеры запросов:
rgx contrato --filter mime:pdf AND author:"ACME"— поиск по тексту в PDF конкретного автора.rgx layer.*weight --filter tensor:name— поиск внутри safetensors моделей.rgx api_key --filter container:zip AND lang:python— поиск ключей в Python-скриптах внутри ZIP-архивов.
Экосистема: rgx vs rgy
Репозиторий содержит два основных продукта:
- rgx — базовый движок и CLI, совместимый с ripgrep. Идеален для скриптов и пайплайнов.
- rgy — готовое приложение с индексацией. Индексирует диск один раз, позволяя быстро искать по имени и контенту. Поддерживает Windows, Linux, macOS и FreeBSD.
Установка доступна через Cargo, Homebrew, Winget и прямые ссылки на бинарники.
Источник: Github ↗
