В рамках хакатона необходимо разработать систему ответа на вопросы по нормативно-правовым актам Ханты-Мансийского автономного округа. Такое решение позволит создать универсального юридического помощника, который разбирается в вопросах ХМАО. Нам был дан корпус, содержащий различные НПА, а также некоторое количество вопросов для валидации нашей системы.
Основные трудности при создании такого решения - домен задачи, а также русский язык, из-за чего некоторые модели для создания векторных баз данных и LLM могут допускать критические ошибки.
В рамках решения мы постарались найти лучшие модули для нашей RAG системы.
В нашем решении используется:
База данных: FAISS
Embedder: E5-Large с чанками по 256
LLM: Qwen-2-7B
Dev: FastAPI, aiogram, Docker, Celery, Redis
Склонируйте репозиторий
git clone https://github.com/ErrorZ403/AIProductHack_placeholders.git
cd AIProductHack_placeholdersСоздайте .env файл
В главной директории, создайте файл .env основываясь на примере - env_example
В главную директорию, поместить папки [data_chanks/e5large_256_64_faiss], где e5large_256_64_faiss это заранее полученные эмбеддинги
Из директории проекта запустите команду:
docker-compose up --buildВ репозитории присутствует несколько веток: main, api, docker, experiments, faiss, gemini и tg_bot. Итоговая структура:
main = api + docker + faiss + gemini - код API для взаимодействия с RAGом и сам RAG
experiments - код для быстрого запуска экспериментов
tg_bot - простой сервис с UI в виде телеграм бота
ml - тут находится создание модели
dialog_processor - тут находится код API общения с LLM
database - наше векторная база данных
config - загрузка всех конфигов
[1] Retrieval-Augmented Generation for Large Language Models: A Survey - https://arxiv.org/abs/2312.10997
[2] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks - https://arxiv.org/abs/2005.11401
[3] A Tale of Trust and Accuracy: Base vs. Instruct LLMs in RAG Systems - https://arxiv.org/abs/2406.14972v1
[4] Improving the Domain Adaptation of Retrieval Augmented Generation (RAG) Models for Open Domain Question Answering - https://arxiv.org/abs/2210.02627v1
[5] Blended RAG: Improving RAG (Retriever-Augmented Generation) Accuracy with Semantic Search and Hybrid Query-Based Retrievers - https://arxiv.org/abs/2404.07220v2
[6] Langchain Github - https://github.com/langchain-ai/langchain
