Перейти к содержанию

Panacea Документ Вопросы и Ответы + RAG

Этот рецепт объясняет, как Panacea строит частные вопросы и ответы по документам с использованием генерации, дополненной извлечением (RAG).

Что вы узнаете

  • Как Panacea загружает документы и хранит их в виде текстов, доступных для поиска
  • Как бэкенд извлекает релевантные фрагменты для вопроса
  • Как система использует встраивания и источники документов для обоснования ответов
  • Как обратная связь по вопросам и ответам фиксируется и улучшает будущие ответы

Почему это важно

Panacea разработана для того, чтобы команды могли задавать вопросы частным документам, не отправляя их в сторонний чат-сервис. Рабочий процесс следующий:

  1. Загрузить документы
  2. Разделить и встроить содержимое
  3. Извлечь релевантные фрагменты для запроса пользователя
  4. Ответить с использованием LLM с цитированием
  5. Зафиксировать обратную связь для улучшения качества

Ключевые файлы 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"

Минимальное руководство по загрузке

  1. Запустите Panacea из корня репозитория:

bash cd Panacea cp backend/.env.example backend/.env docker compose up --build

  1. В другом терминале загрузите один текстовый или 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"

  1. Подтвердите, что бэкенд возвращает успешный ответ Document Uploaded.

  2. Используйте веб-интерфейс на http://localhost:3000 и выберите ту же сессию чата, чтобы задавать вопросы о загруженном документе.

Если вы хотите протестировать API напрямую после загрузки, найдите ID сессии чата в интерфейсе или базе данных и отправьте вопросы через поток чата приложения. Panacea извлечет релевантные фрагменты и сгенерирует обоснованный ответ.

Заметки для кулинарной книги

Этот рецепт идеально подходит для записи в кулинарной книге, которая объясняет, как Panacea поддерживает частную работу с знаниями. Он более концептуален, чем однострочный скрипт, потому что реальная ценность заключается в понимании архитектуры загрузки и извлечения документов.