Chatpdflike
Сквозное приложение для вопросов, отвечающее вопросом с использованием API с крупной языковой модели.
Примечание . Этот проект не связан или одобрен или одобрена Chatpdf. Это независимый проект, пытающийся повторить аналогичную функциональность.
Обзор
Chatpdf-like-это веб-приложение, которое позволяет пользователям загружать PDF-документы и взаимодействовать с ними с помощью запросов естественного языка. Приложение использует большие языковые модели (LLMS), такие как Turbo OpenAI GPT-3.5, чтобы понять содержание PDF и предоставлять краткие и точные ответы на вопросы пользователей.
Функции
- Загрузка документа PDF : загрузите локальные файлы PDF или предоставьте URL -адрес в PDF -документ.
- Взаимодействие с естественным языком : задайте вопросы о содержании PDF на естественном языке.
- Соответствующие ответы : Получите краткие ответы на основе содержания документа.
- Ссылки на источники : Просмотреть источники (разделы PDF), которые использовались для генерации ответа.
- Несколько поставщиков LLM : поддержка моделей OpenAI и Ollama.
- Веб -интерфейс : простой и интуитивно понятный веб -интерфейс, построенный из колбы и JavaScript.
Как это работает
Приложение выполняет эти основные шаги:
Извлечение текста и обработка :
- PDF анализируется с использованием
PyPDF2 . - Текст извлекается со каждой страницы, а большие кусочки текста разделены на управляемые куски.
Поколение встраивания :
- Для каждой текстовой куски встроенный вектор генерируется с использованием выбранной модели встраивания (например,
text-embedding-ada-002 ). - Эти встраивания представляют собой семантическое значение текстовых кусков и хранятся для расчетов сходства.
Обработка запросов пользователя :
- Когда пользователь задает вопрос, вектор встраивания для запроса генерируется с использованием той же модели встраивания.
Поиск сходства :
- Приложение вычисляет сходство косинуса между внедрением запроса и текстовыми чанками.
- Наиболее соответствующие текстовые куски выбираются на основе самых высоких показателей сходства.
Быстрое строительство :
- Подсказка создается для языковой модели, включающая вопрос пользователя и самые релевантные текстовые куски.
Поколение ответов :
- Подсказка отправляется в языковую модель (например, Turbo Openai GPT-3.5.
- Модель генерирует ответ на вопрос пользователя на основе предоставленного контекста.
Ответ -дисплей :
- Ответ отображается пользователю в веб -интерфейсе.
- Ссылки на исходные текстовые куски также предусмотрены для прозрачности.
Начиная
Предварительные условия
- Python : версия 3.6 или выше требуется.
- Ключи API :
- Ключ API OpenAI : необходимо использовать модели OpenAI для встроений и генерации ответов.
- Ollama API -ключ : необязательно. Требуется, если вы хотите использовать модели Ollama.
Установка
Клонировать репозиторий
git clone https://github.com/Ulov888/chatpdflike.git
cd chatpdflike
Установить зависимости
Используя pip , установите необходимые пакеты:
pip install -r requirements.txt
Ключи API
Чтобы использовать API Openai:
Подпишитесь на ключ API на Openai.
Установите переменную среды OPENAI_API_KEY :
export OPENAI_API_KEY= " your_openai_api_key "
Чтобы использовать API Олламы (при желании):
Получите ключ API от Олламы.
Установите переменную среды OLLAMA_API_KEY :
export OLLAMA_API_KEY= " your_ollama_api_key "
Использование
Начните приложение
Запустите приложение Flask:
По умолчанию сервер работает по адресу http://0.0.0.0:8080 .
Доступ к веб -интерфейсу
Откройте веб -браузер и перейдите на http://localhost:8080 .
Загрузить документ PDF
Вы можете либо:
- Нажмите «Загрузите PDF», чтобы выбрать и загрузить файл PDF с вашего компьютера.
- Введите URL -адрес в PDF -документ и нажмите «Отправить».
Взаимодействовать с PDF
- После обработки PDF вы можете задать вопросы о его контенте, используя интерфейс чата в правой стороне экрана.
- Введите свой вопрос в поле ввода и нажмите «Отправить».
Просмотреть ответы
- Ответ приложения появится ниже вашего вопроса.
- Источники (например, номера страниц и выдержки) представлены для контекста.

Настройка
Быстрые стратегии
Поведение языковой модели может быть настроено путем изменения стратегий приглашения в generate_embedding.py , в частности, в методе create_prompt класса Chatbot .
Стратегии включают:
- Документ : Для суммирования научных работ.
- Справочник : для суммирования финансовых справочников (ответы на китайском языке).
- Контракт : для понимания контрактов (ответы на китайском языке).
- По умолчанию : стратегия общего назначения (ответы на китайском языке).
Чтобы выбрать стратегию, вы можете изменить параметр strategy при вызове create_prompt .
Язык и вывод
Приложение в настоящее время настроено для предоставления ответов на китайском языке для некоторых стратегий. Вы можете изменить подсказки, чтобы изменить язык или скорректировать поведение модели.
Ограничения
- Затраты API OpenAI : использование API OpenAI будет нести расходы в зависимости от использования. Обязательно следите за использованием API, чтобы избежать неожиданных зарядов.
- Подбор PDF : в приложении используется
PyPDF2 , который может не обрабатывать все PDFS идеально. Комплексные PDF с необычным форматированием могут неправильно проанализировать. - Пределы внедрения : максимальный предел токена для встраивания может ограничивать размер текстовых кусков или максимальную длину подсказки.
- Ответы модели : качество и точность ответов зависят от производительности языковой модели и актуальности извлеченных текстовых кусков.
Внося
Взносы приветствуются! Если у вас есть какие -либо предложения или улучшения, не стесняйтесь отправлять проблему или запрос.
Лицензия
Этот проект лицензирован по лицензии Apache.