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.2.tar.gz (969.4 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.2-py3-none-any.whl (497.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aigrep-2.1.2.tar.gz
  • Upload date:
  • Size: 969.4 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.2.tar.gz
Algorithm Hash digest
SHA256 e3846243abb308b71e5408712854d25cfa0711c2eef32b0259889f7f16b90801
MD5 4d0637c4cb842dfdf32c19268c0e3f5e
BLAKE2b-256 df1a8929107ed3dc62ad52bf71368419f91d86d71ffd2faa84abb746861e1e16

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aigrep-2.1.2-py3-none-any.whl
  • Upload date:
  • Size: 497.8 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 36e7933842bba7d7078bc51f1fca7aabd216d0b7b57a98d9a00d6d9ddb41ced5
MD5 a5b312ce528164b99d055af33599faca
BLAKE2b-256 5bcdfd45503209310f673c3ad3251af8fba728c887128ed29f73ff5c95141453

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