Локальный ИИ-ассистент по личной базе знаний
Ищет в ваших текстовых файлах ответы на естественно-языковые вопросы — полностью офлайн, без интернета, используя локальную модель через Ollama.
- Понимает вопросы на русском языке (и не только).
- Сама выделяет ключевые слова для поиска в файлах.
- Находит релевантные фрагменты в куче
.mdи.txtфайлов (рекурсивно по всем папкам). - Лемматизирует слова для точного совпадения (
pymorphy2или встроенный стеммер). - Генерирует развёрнутый ответ, опираясь только на содержимое ваших заметок.
- Ведёт историю диалогов.
- Python 3.10+
- Ollama (должен быть запущен)
- Установленная модель
gemma4:e4b-it-q4_K_M(или любая другая, которую вы укажете в коде) pymorphy2и словариpymorphy2-dicts-ru(опционально, но крайне желательно — повышает качество поиска)
# Рекомендуется
pip install pymorphy2 pymorphy2-dicts-rugit clone https://github.com/your-username/smart_grep.git
cd smart_grepollama pull gemma4:e4b-it-q4_K_Muv run main.py "C:\путь\к\вашей\базе\знаний"или (если без uv)
python main.py "C:\путь\к\вашей\базе\знаний"Укажите путь к папке, в которой лежат ваши .md/.txt заметки.
🤖 База знаний: C:\Users\pwrmind\Desktop\обучение
📚 Лемматизация: встроенный стеммер
Задайте вопрос (exit для выхода):
❓ Вы: что такое когнитивные искажения?
🔍 Извлекаю ключевые слова...
📂 Ключевые леммы: ['когнитивн', 'искажен']
📄 Поиск по файлам...
🧠 Формирую ответ...
🤖 Ответ:
Когнитивные искажения — это систематические ошибки в мышлении, которые влияют на принятие решений и суждений. Примеры: чёрно-белое мышление, катастрофизация, чтение мыслей.
-
Извлечение ключевых слов
Локальная модель (Gemma 4B) получает вопрос и возвращает 2–4 главных слова в начальной форме. -
Лемматизация
Слова приводятся к нормальной форме (pymorphy2) или, если он недоступен, к основе через регулярные выражения. -
Поиск по файлам
Сканируются все.mdи.txtфайлы внутри указанной папки (включая вложенные). Для каждой строки проверяется вхождение целых слов (не подстрок). Фрагменты с бо́льшим количеством совпадений ранжируются выше. К каждому берётся контекст ±10 строк и заголовок файла. -
Генерация ответа
10 лучших фрагментов передаются модели вместе с вопросом. Модель обязана отвечать строго по предоставленному контексту — никаких галлюцинаций или внешних знаний.
По умолчанию используется gemma4:e4b-it-q4_K_M. Чтобы поменять, отредактируйте переменную в коде:
MODEL_NAME = "ваша_модель"Программа автоматически переключится на встроенный стеммер (регулярные выражения).
Качество поиска немного снизится, но всё будет работать.
Все разговоры сохраняются в папку .chat_history внутри базы знаний. Формат:
.chat_history/
chat_2026-06-16.md
MIT
Сделано с ❤️ для тех, кто хочет думать локально.