Сервис для поиска и RAG по базе нормативных документов для кейса Норникеля на AI Product Hack 2024.
frontend/- фронтендmain.py- бэкендdocument_search/ocr/- все что нужно для ocr документовsearch/- embedder и все что нужно для построения индексаrag/- retrieval и реализация RAGstorages/- хранилищаentities.py- структуры для обработанных документов и сущностейtypes.py- кастомные аннотации типовutils.py- утилиты
notebooks/- jupyter notebooks с примерами
Необходим python версиии >=3.10
git clone https://github.com/boomb0om/document-search
cd document-search
pip install .Установка для локальной разработки:
git clone https://github.com/boomb0om/document-search
cd document-search
pip install ".[dev]"Также установите make.
Чтобы запустить проверку кодстайла, выполните: make codestyle. Чтобы запустить автоматический фикс кодстайла, выполните: make autofix
Посмотреть примеры и запустить каждый из компонент отдельно можно в ноутбуках в папке notebooks/.
В файле document_search/rag/credentials.py введите ваши креды к YandexGPT API, чтобы была возможность использовать RAG.
Запустите бэкенд:
python main.py --port=8080Для запуска необходимо определить переменную окружения BACKEND_API_URL, в которой должен лежать путь к API бэкенда, например export BACKEND_API_URL=http://localhost:8080.
Затем выполните команду:
streamlit run frontend/main.py --server.port=<your-frontend-port>- Добавить поддержку различных форматов документов (txt, md, xml, docx)
- Интегрировать репо https://github.com/ispras/dedoc
- Добавить другие модели для кодирования текста в эмбеддинг (сейчас только
intfloat/multilingual-e5-base) - Добавить переформулирование запроса пользователя с помощью LLM и одновременный поиск по всем этим запросам
- Добавить поиск алгоритмом BM25
- Оптимизировать выбор контекста для подачи в RAG