Пошук інформації в особистих архівах часто стає викликом, коли ви пам'ятаєте контекст, але забули точні слова. Стандартні інструменти на кшталт ripgrep ефективні лише для текстових збігів, тому з'явився anygrep — CLI-утиліта, що індексує нотатки, PDF-документи та зображення в єдиному семантичному просторі. Вона дозволяє знаходити файли за змістом, навіть якщо ви шукаєте скриншот помилки або японську нотатку за допомогою англійського запиту.
Технічно anygrep базується на моделі Google EmbeddingGemma 2, конвертованій у формат int8 ONNX. Це дозволяє виконувати складні обчислення безпосередньо на центральному процесорі, уникаючи залежності від PyTorch чи GPU. Розробник оптимізував процес обробки зображень, перенісши логіку на NumPy, що забезпечує високу точність векторних представлень при значно меншому споживанні ресурсів порівняно з повноцінними бібліотеками машинного навчання.
Продуктивність інструменту на CPU є цілком прийнятною для локального використання. Індексація 10 000 зображень займає близько 3,5 годин, тоді як пошук за текстом відбувається майже миттєво після завантаження моделі. Важливо, що інструмент підтримує гнучкі налаштування бюджету токенів для зображень, дозволяючи користувачам обирати баланс між швидкістю обробки та деталізацією візуальних даних, що критично для розпізнавання дрібного тексту на скриншотах.
Для вирішення проблеми неточних збігів розробник додав механізм гібридного пошуку. Якщо запит містить специфічні ідентифікатори або цифри, anygrep використовує SQLite FTS5 для точного пошуку за рядками. Це дозволяє уникнути ситуацій, коли семантична модель ігнорує важливі технічні дані, такі як номери інвойсів чи коди помилок, забезпечуючи надійність результатів у професійних сценаріях використання.
Однією з головних проблем семантичного пошуку є надмірна видача результатів. Щоб уникнути цього, було впроваджено динамічний поріг релевантності, який базується на медіанних значеннях порівняно з еталонним набором даних. Це дозволяє відсіювати нерелевантні результати, навіть якщо запит є коротким або абстрактним. Користувачі також можуть використовувати прапорець --weak для перегляду результатів, що не пройшли основний фільтр.
Інструмент також вирішує проблему дублікатів, використовуючи сигнатури на основі хешів слів для текстових файлів. Це дозволяє групувати схожі документи, наприклад, щомісячні рахунки, не втрачаючи при цьому унікальні дані. anygrep є повністю локальним рішенням, не потребує телеметрії та забезпечує конфіденційність даних, оскільки індекс зберігається у звичайному SQLite-файлі на вашому пристрої, що робить його чудовим вибором для приватних архівів.
🔗 Першоджерело: Читати оригінал
