Panacea Документ Вопросы и Ответы + RAG¶
Этот рецепт объясняет, как Panacea строит частные вопросы и ответы по документам с использованием генерации, дополненной извлечением (RAG).
Что вы узнаете¶
- Как Panacea загружает документы и хранит их в виде текстов, доступных для поиска
- Как бэкенд извлекает релевантные фрагменты для вопроса
- Как система использует встраивания и источники документов для обоснования ответов
- Как обратная связь по вопросам и ответам фиксируется и улучшает будущие ответы
Почему это важно¶
Panacea разработана для того, чтобы команды могли задавать вопросы частным документам, не отправляя их в сторонний чат-сервис. Рабочий процесс следующий:
- Загрузить документы
- Разделить и встроить содержимое
- Извлечь релевантные фрагменты для запроса пользователя
- Ответить с использованием LLM с цитированием
- Зафиксировать обратную связь для улучшения качества
Ключевые файлы Panacea¶
| Файл | Почему это важно |
|---|---|
Panacea/backend/api_endpoints/documents/handler.py |
API маршруты для загрузки и обработки документов |
Panacea/backend/database/db.py |
SQL логика хранения и извлечения документов |
Panacea/backend/database/qa_feedback.py |
Фиксация обратной связи для вопросов и ответов по документам |
Panacea/backend/agents/multi_agent_system.py |
Агенты извлечения документов, используемые в многоагентных рабочих процессах |
Как это работает¶
- Документы загружаются через бэкенд и хранятся в
documents.document_text. - Система разбивает большие документы на части и создает метаданные для быстрого поиска.
- Когда пользователь задает вопрос, Panacea выбирает одного или нескольких специализированных агентов для извлечения лучших фрагментов, а затем генерирует ответ.
- Результат включает источники цитирования, чтобы пользователи могли проследить ответ обратно к оригинальному документу.
- Сигналы обратной связи фиксируются в
qa_feedbackдля обеспечения будущих улучшений качества.
Запустите локально¶
Из корня рабочего пространства (anote/panacea):
bash
cd Panacea
cp backend/.env.example backend/.env
docker compose up --build
Это запускает бэкенд, веб-приложение, MySQL, Redis и Tika.
Если вы уже находитесь в папке рецепта, используйте:
bash
cd ../../../Panacea
cp backend/.env.example backend/.env
docker compose up --build
Откройте http://localhost:3000, чтобы использовать веб-интерфейс Panacea. Загрузка документов обрабатывается маршрутом бэкенда POST /ingest-pdf с необходимыми полями формы chat_id и files[].
Пример команды загрузки:
bash
curl -X POST http://localhost:5000/ingest-pdf \
-F chat_id=1 \
-F "files[]=@./path/to/document.pdf"
Минимальное руководство по загрузке¶
- Запустите Panacea из корня репозитория:
bash
cd Panacea
cp backend/.env.example backend/.env
docker compose up --build
- В другом терминале загрузите один текстовый или PDF документ:
bash
curl -X POST http://localhost:5000/ingest-pdf \
-F chat_id=1 \
-F "files[]=@./Cookbook/recipes/03-panacea-document-qa-rag/data/sample-doc.txt"
-
Подтвердите, что бэкенд возвращает успешный ответ
Document Uploaded. -
Используйте веб-интерфейс на
http://localhost:3000и выберите ту же сессию чата, чтобы задавать вопросы о загруженном документе.
Если вы хотите протестировать API напрямую после загрузки, найдите ID сессии чата в интерфейсе или базе данных и отправьте вопросы через поток чата приложения. Panacea извлечет релевантные фрагменты и сгенерирует обоснованный ответ.
Заметки для кулинарной книги¶
Этот рецепт идеально подходит для записи в кулинарной книге, которая объясняет, как Panacea поддерживает частную работу с знаниями. Он более концептуален, чем однострочный скрипт, потому что реальная ценность заключается в понимании архитектуры загрузки и извлечения документов.