Skip to main content

AI-powered semantic search for markdown files and knowledge bases via MCP (Model Context Protocol)

Project description

aigrep

PyPI version Python 3.12+ License: MIT Tests Status

AI-powered semantic search for markdown files and knowledge bases via MCP (Model Context Protocol).

Что это

aigrep — это умный grep с AI. Индексирует ваши markdown-файлы (Obsidian, заметки, документацию) и предоставляет быстрый семантический поиск через MCP. Агенты (Claude, Cursor) могут искать информацию в ваших vault'ах и использовать её для ответов.

Версия: 2.0.9 Статус: ✅ Production-ready

Основные возможности

🔍 Поиск

  • 🎯 Adaptive Search v5: Автоматическое определение intent и выбор оптимальной стратегии поиска
  • 📊 Document-level и chunk-level поиск с автоматическим выбором
  • 🔍 Семантический поиск (векторный, полнотекстовый, гибридный)
  • 🏷️ Расширенные фильтры (теги, даты, типы документов, связанные заметки)
  • 🎨 Оптимизация для агентов (нормализация запросов, кэширование, re-ranking)
  • ✨ Улучшенный UX результатов (группировка по файлам, дедупликация, метки релевантности)

📦 Индексация

  • 🤖 Автоматическое индексирование и отслеживание изменений
  • 🔄 Инкрементальная индексация (только изменённые файлы)
  • 🎨 Markdown-aware chunking с поддержкой структуры документов
  • ✨ LLM-обогащение для улучшения качества поиска (context prefix, document summary)
  • 📊 Фоновая индексация через job queue
  • 💾 Кэширование embeddings для ускорения повторной индексации

🔌 Multi-Provider Support

  • 🏠 Ollama (локальный) — embeddings и chat completion
  • ☁️ Yandex Cloud — YandexGPT (SDK/gRPC) и OpenAI-compatible модели (HTTP)
  • 🔄 Унифицированное переключение провайдеров для embedding/chat/enrichment
  • ⚡ Адаптивный rate limiting с автоматическим backoff
  • 💰 Отслеживание стоимости использования

🛠️ Управление

  • 📊 Мониторинг прогресса индексации
  • 💰 Отчёты о затратах на LLM
  • 📈 Метрики производительности и качества
  • 🔍 Аудит индекса и покрытия
  • 🧪 Тестирование качества поиска

Быстрый старт

1. Установка

# Установите uv (если не установлен)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Установите aigrep
uv pip install aigrep

Требования:

  • Python 3.12+
  • Один из провайдеров:

2. Настройка

# Добавьте vault в конфигурацию
uv run aigrep config add-vault --name "my-vault" --path "/path/to/vault"

# Проиндексируйте vault
uv run aigrep index-all

3. Интеграция с Claude Desktop

# Примените конфигурацию автоматически
uv run aigrep claude-config --apply

# Перезапустите Claude Desktop

После этого агент сможет использовать инструменты search_vault и search_multi_vault для поиска в ваших заметках.

Подробнее: См. QUICK_START.md для пошаговой инструкции

Использование

Через агента (MCP)

После настройки Claude Desktop агент автоматически получает доступ к инструментам:

Поиск:

  • search_vault("my-vault", "Python async programming") — поиск в одном vault'е
  • search_multi_vault(["vault1", "vault2"], "query") — поиск по нескольким vault'ам

Управление индексацией:

  • index_documents("my-vault") — индексация изменённых документов
  • reindex_vault("my-vault", confirm=True) — полная переиндексация
  • index_status("my-vault") — статус индексации

Управление провайдерами:

  • list_providers() — список доступных провайдеров с их статусом
  • list_yandex_models() — список доступных chat моделей Yandex Cloud
  • set_provider("yandex", provider_type="embedding", model="text-search-doc/latest") — переключение провайдера
  • set_provider("yandex", provider_type="chat", model="qwen") — отдельно для chat (поддерживает алиасы)
  • test_provider("ollama") — тестирование провайдера

Анализ качества:

  • index_coverage("my-vault") — анализ покрытия индекса
  • test_retrieval("my-vault", queries=["query1", "query2"]) — тестирование поиска
  • cost_report(days=7) — отчёт о затратах

Агент может использовать расширенные фильтры:

  • search_vault("vault", "Python tags:python async") — поиск с фильтром по тегам
  • search_vault("vault", "created:>2024-01-01 type:протокол") — поиск по датам и типу

Через CLI

# Поиск
uv run aigrep search --vault "my-vault" --query "Python async"

# Индексация
uv run aigrep index-all                    # Индексация всех vault'ов
uv run aigrep index --vault "my-vault"     # Индексация одного vault'а
uv run aigrep reindex --vault "my-vault"   # Переиндексация

# Статистика
uv run aigrep stats --vault "my-vault"

# Диагностика
uv run aigrep doctor

Подробнее: См. примеры и руководство

Документация

Начало работы

Руководство пользователя

Настройка

Интеграция

Для разработчиков

Помощь

Архитектура

aigrep построен на модульной архитектуре:

src/aigrep/
├── core/                  # Базовые компоненты (TTLCache, DataNormalizer, DBConnectionManager)
├── storage/
│   ├── builders/          # Построители записей (ChunkRecordBuilder, DocumentRecordBuilder)
│   └── indexing/          # Сервис индексации (IndexingService)
├── search/                # Поисковые сервисы (VectorSearchService, SearchService)
├── providers/             # LLM провайдеры (Ollama, Yandex)
├── enrichment/            # Стратегии обогащения (BaseEnrichmentStrategy)
├── mcp/tools/             # MCP инструменты (SearchVaultTool, IndexVaultTool)
└── lance_db.py            # Фасад для LanceDB (~476 строк)

Ключевые компоненты:

  • Multi-Provider Support — поддержка Ollama и Yandex Cloud
  • Hybrid Indexing Pipeline — markdown-aware chunking и LLM-обогащение
  • VectorSearchService — векторный, полнотекстовый и гибридный поиск
  • IndexingService — управление индексацией документов
  • MetadataService — работа с метаданными документов
  • Background Job Queue — фоновая индексация с мониторингом прогресса
  • Cost Tracking — отслеживание затрат на использование LLM

Подробнее: См. docs/developer/architecture.md для детального описания архитектуры

Статус проекта

Версия: 2.0.7.1 (HOTFIX: Document Lookup Fix) Тесты: 1026+ unit/integration тестов (все проходят) Покрытие: ≥85% для критических модулей Статус: ✅ Production-ready

Версии пакетов

Основные изменения v2.0.7.1

  • 🐛 Критическое исправление "Document not found" — исправлен баг, когда 95% результатов поиска терялось
  • 💾 Dual-Write в SQLite — данные теперь записываются параллельно в LanceDB и SQLite
  • Consistency Check — проверка согласованности данных между SQLite и LanceDB
  • 🔄 Миграция данных — скрипт для исправления пустых created_at полей

Подробнее: См. CHANGELOG.md для полного списка изменений

Лицензия

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aigrep-2.1.6.tar.gz (973.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aigrep-2.1.6-py3-none-any.whl (498.5 kB view details)

Uploaded Python 3

File details

Details for the file aigrep-2.1.6.tar.gz.

File metadata

  • Download URL: aigrep-2.1.6.tar.gz
  • Upload date:
  • Size: 973.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for aigrep-2.1.6.tar.gz
Algorithm Hash digest
SHA256 b48d9b20c724f470e3eae494d44a860905776d78cda554a2b62fed9184d7b878
MD5 afc5e64754775556f109834453b339bb
BLAKE2b-256 a5d31d2a67fc691bdaaf5b14ad4f15f1c5f4e56991a5b6a4c6d68113d498e785

See more details on using hashes here.

File details

Details for the file aigrep-2.1.6-py3-none-any.whl.

File metadata

  • Download URL: aigrep-2.1.6-py3-none-any.whl
  • Upload date:
  • Size: 498.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for aigrep-2.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 09b9c0eaf74477620d6bfd6493be37d30674d77d00ab53afac9be1343723f4a1
MD5 af2a0336cee0ecc53459d220ac08f622
BLAKE2b-256 5f59cff71c5c885e828eb72cf5d7e52ef2aa43801654d46d4aa291b1e3000551

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page