MaymunAI - это персональный ассистент, который использует технологию RAG (Retrieval-Augmented Generation) для ответов на вопросы пользователя на основе базы знаний, хранящейся в PostgreSQL. Система сочетает семантический поиск с использованием эмбеддингов OpenAI и генерацию ответов на базе GPT-4 Turbo, обеспечивая релевантные и контекстуализированные ответы.
- Семантический поиск с использованием эмбеддингов OpenAI (text-embedding-3-large)
- Генерация ответов с использованием GPT-4 Turbo на основе найденного контекста
- Поиск по ключевым словам и автоматическая генерация ключевых слов для запросов
- Иерархическая структура данных с поддержкой родительских и дочерних элементов
- Кэширование эмбеддингов для оптимизации производительности
- Интерактивный режим отладки с возможностью настройки параметров
- Анализ базы данных и миграция схемы
- Гибкая настройка контекста (родительский и дочерний уровни)
Система построена на следующих компонентах:
- База данных: PostgreSQL для хранения элементов (items) и их векторных представлений (эмбеддингов)
- Эмбеддинги: Использование OpenAI API для создания векторных представлений текста
- Поиск: Семантический поиск с использованием косинусного сходства между эмбеддингами запросов и документов
- Генерация: Использование GPT-4 Turbo для генерации естественных ответов на основе найденного контекста
- Интерфейс: Консольное приложение с интерактивным режимом взаимодействия
graph TD
A[Пользовательский запрос] --> B[Генерация ключевых слов]
B --> C[Поиск элементов по ключевым словам]
C --> D[Создание эмбеддингов]
D --> E[Поиск релевантных элементов]
E --> F[Генерация ответа]
F --> G[Ответ пользователю]
H[База данных PostgreSQL] <--> C
H <--> D
I[OpenAI API] <--> B
I <--> D
I <--> F
- Python 3.8+
- PostgreSQL 12+
- OpenAI API ключ
- Клонируйте репозиторий:
git clone https://github.com/yourusername/MaymunAI.git
cd MaymunAI- Установите зависимости Python:
pip install -r requirements.txt- Настройте переменные окружения. Создайте файл
.envна основеsettings.example.py:
cp settings.example.py .envОтредактируйте .env файл, указав:
- OPENAI_API_KEY - ваш ключ API OpenAI
- DATABASE_URL - URL подключения к PostgreSQL
- Создайте базу данных PostgreSQL
- Запустите миграцию схемы:
python main.py --migrateДля обеспечения кроссплатформенной разработки и упрощения установки рекомендуется использовать Docker. Это позволяет запускать приложение в изолированной среде с предустановленными зависимостями, независимо от операционной системы (Windows, macOS, Linux).
- Кроссплатформенность: Одинаковая среда разработки на любой ОС
- Изоляция зависимостей: Нет конфликтов с локальными установками Python или PostgreSQL
- Быстрый старт: Все сервисы (приложение + база данных) запускаются одной командой
- Персистентные данные: База данных сохраняется в Docker volumes
-
Установите Docker и Docker Compose на вашей системе.
-
Клонируйте репозиторий и настройте переменные:
git clone https://github.com/yourusername/MaymunAI.git cd MaymunAI cp .env.example .envОтредактируйте
.envфайл, указав ваш OpenAI API ключ. -
Запустите сервисы:
docker-compose up --build
Приложение будет доступно для использования аналогично локальной установке.
- Запуск в фоне:
docker-compose up -d - Остановка:
docker-compose down - Просмотр логов:
docker-compose logs -f app
Подробную информацию о Docker настройке, переменных окружения и решении проблем см. в DOCKER_README.md.
Запустите интерактивный режим:
python main.py-d,--debug- Включить режим отладки-dd,--debug_extended- Расширенный режим отладки-i,--info- Просмотр информации о блоках-n NAME,--name NAME- Поиск блока по названию-b ID,--block-id ID- Просмотр информации по ID блока-r MARKERS,--roots MARKERS- Корневые маркеры для поиска-v,--view-tree- Показать дерево элементов-s TEXT,--search TEXT- Поиск по тексту в базе данных-c N,--context N- Размер контекста при поиске (по умолчанию: 2)--clear-cache- Очистить кэш эмбеддингов--preload- Предзагрузить эмбеддинги частых запросов--migrate- Обновить структуру базы данных--rebuild-tables- Перестроить таблицы эмбеддингов--clear-invalid- Очистить эмбеддинги с неправильной размерностью--parent-context N- Уровни родительского контекста (0 - отключено)--child-context N- Уровни дочернего контекста (0 - отключено)
После запуска программа входит в интерактивный режим, где:
- Вводите ваш вопрос
- Указываете ключевые слова через запятую (или
!для автоматической генерации) - Получаете релевантный ответ на основе базы знаний
Для выхода введите exit, quit или выход.
Для перезапуска диалога введите начало.
MaymunAI/
├── main.py # Точка входа в приложение
├── config.py # Конфигурация системы
├── db.py # Работа с базой данных PostgreSQL
├── embeddings.py # Создание и управление эмбеддингами
├── retrieval.py # Поиск релевантных документов
├── rag.py # Генерация ответов на основе RAG
├── keywords.py # Генерация ключевых слов
├── process_query.py # Обработка пользовательских запросов
├── debug_utils.py # Инструменты для отладки
├── db_analyzer.py # Анализ базы данных
├── migration.py # Миграция схемы базы данных
├── preload_embeddings.py # Предзагрузка эмбеддингов
├── standalone_search.py # Автономный поиск
├── utils.py # Вспомогательные функции
├── settings.example.py # Пример файла настроек
├── requirements.txt # Зависимости Python
├── memory-bank/ # Документация и контекст проекта
│ ├── productContext.md
│ ├── improvementPlan.md
│ └── ...
└── .roo/ # Конфигурация Roo
Основные зависимости проекта:
openai>=1.12.0- API OpenAI для эмбеддингов и генерацииpsycopg2-binary>=2.9.9- Драйвер PostgreSQLnumpy>=1.24.0- Работа с векторамиpandas==2.2.3- Анализ данныхpydantic==2.10.6- Валидация данныхpython-dotenv>=1.0.0- Загрузка переменных окруженияtiktoken>=0.6.0- Токенизация для OpenAIhttpx==0.28.1- HTTP клиентtqdm==4.67.1- Прогресс-бары
Полный список зависимостей см. в файле requirements.txt.
Проект находится на этапе стабилизации и активной разработки:
- ✅ Изучение основных компонентов системы
- ✅ Анализ структуры базы данных и схемы хранения
- ✅ Реализация базового функционала RAG
- ✅ Исправление критических проблем с git репозиторием
- ✅ Удаление жестко закодированного API ключа (исправление уязвимости безопасности)
- ✅ Восстановление нормальной работы git команд
- Детальный анализ производительности системы
- Выявление узких мест и возможностей оптимизации
- Разработка плана улучшений
- Разработка модульных и интеграционных тестов
- Улучшение обработки ошибок API и базы данных
- Создание базовой документации
- Оптимизация существующего кода
- Разработка веб-интерфейса для удобного взаимодействия
- Реализация API для интеграции с другими системами
- Улучшение стратегии кэширования эмбеддингов
- Добавление поддержки новых источников данных
- Многоязычная поддержка
- Интеграция с локальными моделями (Llama, Mistral)
- Переход к микросервисной архитектуре
- Распределенное хранение и обработка данных
- Внедрение системы мониторинга и аналитики
- Персонализация ответов на основе истории запросов
Для разработки с отладкой:
python main.py --debugДля расширенной отладки:
python main.py --debug_extendedПроект поддерживает добавление новых элементов в базу знаний. Структура данных включает иерархические связи между элементами.
Запуск тестов (планируется в будущих версиях):
pytestMIT License - см. файл LICENSE для подробностей.
Мы приветствуем вклад в развитие MaymunAI! Пожалуйста:
- Создайте форк репозитория
- Создайте ветку для вашей функциональности (
git checkout -b feature/AmazingFeature) - Зафиксируйте изменения (
git commit -m 'Add some AmazingFeature') - Отправьте в ветку (
git push origin feature/AmazingFeature) - Создайте Pull Request
Для вопросов и предложений:
- Создайте issue в репозитории
- Напишите на email: ваш-email@example.com
MaymunAI - ваш интеллектуальный помощник на базе современных технологий ИИ