Докеризованный Streamlit RAG с собственной логикой Ollama и гибридной логикой графического процессора/процессораPython

Программы на Python
Anonymous
Докеризованный Streamlit RAG с собственной логикой Ollama и гибридной логикой графического процессора/процессора

Сообщение Anonymous »

Я создаю RAG Study Assistant и мне нужен совет по завершению настройки Docker. Я имею в виду конкретную архитектуру для максимальной производительности и портативности.
Архитектура:
  • Приложение: Streamlit + LangGraph + PyTorch.
  • Ollama (LLM): Запускается исходно в основной ОС (Windows/Mac) для обеспечения полной загрузки графического процессора. доступ без сложного сквозного доступа Docker. Приложение подключается через `http://host.docker.internal:11434`.
  • Встраивания/переранжирование: Запуск внутри контейнера Docker с использованием преобразователей предложений и PyTorch.
  • Обнаружение оборудования: У меня есть скрипт config.py, который использует torch.cuda.is_available(), чтобы обнаружить графический процессор и сообщить Олламе, следует ли извлекать большую модель (

    Код: Выделить всё

    gemma3:4b
    ) или облегченный (

    Код: Выделить всё

    gemma3:1b
    ).
Чего я пытаюсь достичь:
  • Универсальное распространение: Я хочу распространять приложение в формате ZIP. Пользователю нужно только установить Docker и Ollama, а затем запустить сценарий .bat.
  • Интеллектуальное обнаружение оборудования: Поскольку сценарий обнаружения работает внутри Docker, как я могу позволить контейнеру «видеть», присутствует ли графический процессор NVIDIA (чтобы выбрать правильную модель), не заставляя весь контейнер представлять собой массивный базовый образ NVIDIA размером более 5 ГБ?
  • Постоянство:
  • Мне нужно смонтировать ./data/notebooks как том для пользовательских данных.
  • Мне нужно сохранить кэш HuggingFace (

    Код: Выделить всё

    \~/.cache/huggingface
    ), поэтому внедрения/переранжирование не загружаются повторно при каждом перезапуске контейнера.
  • Резервный режим ЦП: Приложение должно работать на машинах только с ЦП (с использованием faiss-cpu и torch-cpu), но в идеале оно должно использовать графический процессор для встраивания, если у пользователя есть контейнер NVIDIA Инструментарий.
Структура проекта:

PlaintextRAG-Study-Assistant/
├── модули/ (логика RAG)
├── данные/
│ ├── блокноты/ (пользовательские файлы)

├── app.py / config.py

Вернуться в «Python»