RAG с txtai
RAG с txtai — это Streamlit-приложение для Retrieval Augmented Generation (RAG), построенное на базе фреймворка txtai. Оно помогает LLM генерировать фактические ответы, ограничивая контекст данными из вашего хранилища.
Поддерживаются два подхода:
- Векторный RAG — контекст извлекается через векторный поиск.
- Графовый RAG — контекст строится на основе графового обхода путей.
Быстрый старт
Docker (рекомендуется)
docker run -d --gpus=all -it -p 8501:8501 neuml/rag
Образ доступен на Docker Hub.
Python (виртуальное окружение)
pip install -r requirements.txt
streamlit run rag.py
Использование
Векторный RAG
По умолчанию выполняется векторный поиск по индексу Embeddings. Введите запрос, и система найдёт релевантные документы, передаст их LLM и вернёт ответ.
Графовый RAG
Использует графы знаний. Типы запросов:
- gq: <текст> — расширение графа: векторный поиск + обход графа.
- <понятие1> -> <понятие2> -> … — поиск пути между концепциями.
- Комбинация, например:
linux -> macos -> microsoft windows gq: Tell me about Linux.
Ответы сопровождаются визуализацией графа (каждый узел — параграф).
Добавление данных
Введите запрос, начинающийся с #, за которым следует:
- путь к файлу или URL, либо
- произвольный текст:
# txtai это AI-фреймворк.
Загруженные данные добавляются в индекс.
Конфигурация
Параметры задаются через переменные окружения. Основные:
| Переменная |
Описание |
Значение по умолчанию |
TITLE |
Заголовок приложения |
🚀 RAG with txtai |
EXAMPLES |
Примеры запросов (через ;) |
Who created Linux?; … |
LLM |
Путь к модели LLM |
Llama-3.1-8B-Instruct-AWQ-INT4 (x86-64) / GGUF (arm64) |
EMBEDDINGS |
Путь к базе эмбеддингов |
neuml/txtai-wikipedia-slim |
MAXLENGTH |
Максимальная длина генерации |
2048 (темы), 4096 (RAG) |
CONTEXT |
Размер контекста RAG |
10 |
TEXTBACKEND |
Бэкенд извлечения текста |
(доступные опции) |
DATA |
Директория для индексации файлов |
None |
PERSIST |
Директория для сохранения обновлений индекса |
None |
TOPICSBATCH |
Размер батча для LLM-тем |
None |
В приложении их можно увидеть, введя :settings.
Примеры запуска с Docker
Llama 3.1 8B
docker run -d --gpus=all -it -p 8501:8501 -e LLM=hugging-quants/Meta-Llama-3.1-8B-Instruct-AWQ-INT4 neuml/rag
Llama 3.1 8B через Ollama
docker run -d --gpus=all -it -p 8501:8501 --add-host=host.docker.internal:host-gateway -e LLM=ollama/llama3.1:8b-instruct-q4_K_M -e OLLAMA_API_BASE=http://host.docker.internal:11434 neuml/rag
GPT-4o
docker run -d --gpus=all -it -p 8501:8501 -e LLM=gpt-4o -e OPENAI_API_KEY=your-api-key neuml/rag
Другой индекс эмбеддингов
docker run -d --gpus=all -it -p 8501:8501 -e EMBEDDINGS=neuml/arxiv neuml/rag
Пустой индекс
docker run -d --gpus=all -it -p 8501:8501 -e EMBEDDINGS= neuml/rag
Индексация локальной директории
docker run -d --gpus=all -it -p 8501:8501 -e DATA=/data/path -v local/path:/data/path neuml/rag
Бэкенд Docling
docker run -d --gpus=all -it -p 8501:8501 -e TEXTBACKEND=docling neuml/rag
Сохранение эмбеддингов и кэша
docker run -d --gpus=all -it -p 8501:8501 -e DATA=/data/path -e EMBEDDINGS=/data/embeddings -e PERSIST=/data/embeddings -e HF_HOME=/data/modelcache -v localdata:/data neuml/rag
Полезные ссылки
Комментарии
Комментариев пока нет. Будьте первым.