You can install the required dependencies either manually or using the requirements.txt
file.
pip install load_dotenv
pip install faiss-cpu
pip install bitsandbytes
pip install llama_index
pip install langchain_huggingface
pip install llama-index-embeddings-langchain
pip install llama-index-vector-stores-faissv
pip install llama-index-embeddings-huggingface
pip install llama-index-llms-huggingface
pip install -U langchain-community sentence-transformers
pip install pyvis
pip install arize-phoenix openinference-instrumentation-llama-index opentelemetry-sdk --quiet
pip install nemoguardrails
pip install -r requirements.txt
Описание: Проект представляет собой RAG-систему (Retrieval-Augmented Generation), обученную на математических книгах по линейной алгебре, математическому анализу и статистике. Модель: Saiga LLaMA3 8B База знаний: VectorStoreIndex — векторная база, используемая для быстрого поиска релевантной информации по запросу пользователя. Защита и контроль запросов: Запросы проверяются с помощью NeMo Guardrails — система отслеживает, соответствует ли вопрос допустимой теме (например, линейной алгебре), и ограничивает обработку нежелательных запросов. RAG-пайплайн: Поиск ответов по векторной базе знаний. Ранжирование найденных результатов с помощью LLMRerank для выбора наиболее релевантных фрагментов. Трассировка всех запросов и ответов с помощью Phoenix для удобного мониторинга, отладки и аналитики.
Как работает: Пользователь задает вопрос.
NeMo Guardrails проверяет, соответствует ли вопрос теме.
Если запрос допустим:
Запускается RAG-поиск по векторной базе знаний.
LLMRerank выбирает наиболее релевантные фрагменты.
Phoenix трассирует этот процесс.
LLM формирует финальный ответ с объяснениями и примерами.
Если вопрос не по теме — бот возвращает корректное уведомление.
Как запустить
Структура проекта
my_api_project/
├── create_storage/
│ ├── KnowledgeGraphIndex/
│ │ ├── KnowledgeGraphIndex/ # тестовый вариант KnowledgeGraphIndex (долгое время обработки)
│ │ │ ├── default__vector_store.json # файлы сохраненного KnowledgeGraphIndex
│ │ │ ├── docstore.json # файлы сохраненного KnowledgeGraphIndex
│ │ │ ├── graph_store.json # файлы сохраненного KnowledgeGraphIndex
│ │ │ ├── image__vector_store.json # файлы сохраненного KnowledgeGraphIndex
│ │ │ └── index_store.json # файлы сохраненного KnowledgeGraphIndex
│ │ │
│ │ ├── KnowledgeGraphIndex.ipynb # код подготовки базы знаний
│ │ ├── graph.html # визуализация данных
│ │ └── graph_temp.html # временная визуализация данных
│ │
│ ├── VectorStoreIndex/
│ │ ├── VectorStoreIndex/ # выбранный вариант, используется в main файле
│ │ │ ├── default__vector_store.json # файлы сохраненного VectorStoreIndex
│ │ │ ├── docstore.json # файлы сохраненного VectorStoreIndex
│ │ │ ├── graph_store.json # файлы сохраненного VectorStoreIndex
│ │ │ ├── image__vector_store.json # файлы сохраненного VectorStoreIndex
│ │ │ └── index_store.json # файлы сохраненного VectorStoreIndex
│ │ │
│ │ └── VectorStoreIndex.ipynb # код подготовки базы знаний
│ │
│ └── library/ # книги, использованные для обучения базы знаний
│
├── model/
│ └── model.ipynb # настройка модели и переменные окружения
│
├── main.ipynb # основной файл: сборка LLM и реализация RAG
├── config.yaml # конфигурация для NeMo Guardrails
├── colang_content.yaml # правила ограничений и допустимых тем для NeMo Guardrails
├── .env # переменные окружения
├── .gitignore # список файлов/папок для игнорирования в git
├── requirements.txt # зависимости проекта
└── README.md # документация проекта
Модель была взята из Hugging-Face и использует saiga_llama3_8b как базову