Этот проект предоставляет простое веб -приложение, которое позволяет пользователям загружать документ PDF, генерировать векторные встроения из его контента, а затем искать информацию в документе, используя текстовый запрос. Внедрение и языковые модели OpenAI используются для создания векторных внедрений и поиска информации.
PDF Document Purstion : Пользователи могут загружать PDF -документ через веб -интерфейс для поиска информации.
Создание векторных встроений : Содержание текста извлекается из PDF и разделяется на более мелкие куски с использованием Langchain. Внедрения генерируются для каждого чанка с использованием модели встраивания текста Openai (например, текстовое вступление в эксплуатацию-ADA-002).
Хранение базы данных векторной базы : храните сгенерированные векторные вставки в векторной базе данных, такой как Pinecone для поиска сходства.
Уточнить запросы пользователей : пользовательские запросы уточняются с помощью API завершения чата Openai для повышения точности поиска.
Поиск информации : Пользователи могут вводить текстовые запросы для поиска информации в загруженном документе. Система получает соответствующие текстовые куски на основе их векторного сходства с внедрением запроса.
Создайте ответ : на основе полученных текстовых кусков, контекста (предыдущие запросы и ответы) и запрос пользователя, ответ генерируется с использованием моделей OpenAI (GPT-4O, GPT-4 или GPT-3.5-Turbo). Пользователи могут выбрать модель OpenAI через веб -интерфейс. Выбор модели может повлиять на стиль ответа, детали и точность.
В файле TEDS.TXT перечислены необходимые пакеты Python и их версии, необходимые для запуска приложения. Вот разбивка каждого пакета:
Колба : легкая веб -структура Python для создания веб -приложений.
Pinecone-Client : Официальная клиентская библиотека Python для взаимодействия с Pinecone, векторной базой данных, используемой в вашем приложении.
OpenAI : Официальная клиентская библиотека Python для API OpenAI, используемая для создания текстовых внедрений и взаимодействия с языковыми моделями OpenAI.
PYPDF2 : библиотека чистопитона для извлечения текста из PDF-файлов.
Langchain : основа для создания приложений с большими языковыми моделями, используемая в вашем приложении для расщепления текста и кунгинга.
Numpy : пакет для научных вычислений в Python, используемый для работы с многомерными массивами и векторами.
Чтобы установить эти зависимости, вы можете создать новую виртуальную среду Python и запустить следующую команду:
PIP установка -R TEDS.TXT
Для интеграции с OpenAI и PineCone вам необходимо получить и настройка соответствующих ключей API, для этих платформ и информации об API. Установите свои клавиши API OpenAI и Pinecone, а также хост Pinecone в качестве переменных среды в Linux. Используйте следующие команды Linux для экспорта этих переменных:
Экспорт openai_api_key = 'your-openai-api-key'
Экспорт pinecone_api_key = 'your-pinecone-api-key'
Экспорт pinecone_host = 'your-pinecone-host'
Убедитесь, что у вас есть аккаунт Openai с действительными клавишами API. Вы можете создать или получить свои клавиши API с платформы OpenAI (https://platform.openai.com/) и управлять ими (https://platform.openai.com/organization/api-keys). Кроме того, убедитесь, что ваша учетная запись имеет достаточную квоту использования, поскольку этот пример требует оплачиваемой учетной записи Openai.
Среда Pinecone (бесплатная учетная запись Pinecone Используется https://www.pinecone.io/): 1) Индекс Pinecone используется 2) Размеры: 1536 3) Тип хоста: Serverless.
Выпуск Centos Linux 8.5.2111 используется в качестве ОС Linux. VM Cloud Linux с публичным IP (необязательно) был протестирован на веб -интерфейс. Местный IP также может быть использован. Создайте виртуальную среду Python (необязательно, но рекомендуется) для изоляции зависимостей проекта.
Приложение предоставляет веб -интерфейс, построенный из Flask, веб -структуры Python. Пользователи могут загружать PDF-документ, вводить запросы, выбирать модель Language Openai для использования (GPT-3.5-Turbo, GPT-4 или GPT-4O) и получать подробные ответы на основе информации, извлеченной из загруженных документов PDF.
Приглашение документа PDF и создание векторных вторжений
Приложение предоставляет веб -интерфейс, где пользователи могут загружать PDF -документы. После загрузки файла PDF текстовый содержимое извлекается из документа и разделяется на более мелкие куски, используя Recursivecharactertextsplitter из библиотеки Langchain. Этот процесс разделения гарантирует, что текст разделен на управляемые куски при сохранении контекста.
Затем для каждого текстового куска генерируются векторные встраивания с использованием модели Texbeding-ADA-002 Openai. Эти встраивания являются высокоразмерными векторами, которые отражают семантическое значение текста, что позволяет эффективно поиск сходства.
Хранение векторных встроений в Pinecone
Сгенерированные векторные встраивания, наряду с их соответствующими текстовыми кусками и номерами страниц, хранятся в базе данных векторных векторных. PineCone-это масштабируемая и эффективная векторная база данных, предназначенная для хранения и запроса высокоразмерных векторов.
Обработка запросов
Когда пользователь передает запрос через веб -интерфейс, приложение обрабатывает его в следующих шагах:
Уточнение запроса:
Запрос пользователя отправляется в языковую модель Openai (например, GPT-3.5-Turbo, GPT-4 или GPT-4O), чтобы уточнить и улучшить запрос для лучшей точности поиска.
Внедрение поколения для запроса
Рафинированный запрос преобразуется в векторное встраивание с использованием модели Texbeding-ADA-002 OpenAI.
Поиск сходства:
Встроение запроса используется для поиска базы данных Vector Pinecone для наиболее семантически похожих текстовых кусков на основе сходства вектора.
Примечание . Чтобы запросить индекс Pinecone и получить верхние результаты, используется следующий код (app.py)
#Создайте и экспериментируйте с значением TOP_K на основе вашего варианта использования
Результаты = PINECONE_INDEX.QUERY (VECTOR = PADDED_QUERY_VECTOR.TOLIST (), TOP_K = 1, include_metadata = true)
Параметр top_k указывает количество верхних результатов, чтобы вернуться из запроса. Регулировка значения TOP_K может повлиять на качество ответов на запросы. Более высокое значение top_k может дать более полные результаты, но также может ввести менее релевантные данные. И наоборот, более низкое значение top_k может дать более точные, но меньше результатов. Важно экспериментировать с различными значениями top_k, чтобы найти оптимальный баланс для вашего конкретного варианта использования. Кроме того, имейте в виду, что увеличение стоимости TOP_K также повлияет на затраты, особенно при использовании платной модели OpenAI для обработки результатов. Более высокие значения TOP_K приводят к тому, что больше данных отправляются и обрабатываются моделью, что может привести к увеличению зарядов использования.
ПРИМЕЧАНИЕ . Параметр оценки_THRESHOLD определяет минимальную оценку релевантности, необходимую для рассмотрения результата, который может повлиять на качество ответа на запрос. Итак, отрегулируйте пороговое значение на основе вашего варианта использования и экспериментов (app.py).
#Создайте пороговое значение на основе вашего варианта использования
SCOST_THRESHOLD = 0,65
Генерация ответов:
Соответствующие текстовые куски, извлеченные из базы данных, объединяются с предыдущим контекстом (если есть) и исходным пользовательским запросом. Эта информация затем отправляется в языковую модель Openai (ту же модель, которая использовалась для уточнения запросов) для создания комплексного и контекстуально релевантного ответа.
Ответ контекста:
Приложение поддерживает контекст предыдущих запросов и ответов. Этот контекст передается в языковую модель OpenAI на шаге генерации ответов, гарантируя, что сгенерированные ответы учитывают историю разговора и предоставляют точную и контекстуально релевантную информацию.
Чтобы запустить приложение, выполните следующие действия:
Активировать виртуальную среду Python (необязательно): (venv) [user@host project_directory]#
Запустите сценарий app.py: python app.py
Приложение начнет работать на порту 5000, и вы можете увидеть аналогичный вывод, как на следующем:
Убедитесь, что приложение активно прислушивается к входящим соединениям в порту 5000:
NetStat -aultpn | grep -i 5000 TCP 0 0 0.0.0.0:5000 0.0.0.0:* Слушайте 525661/Python
http://127.0.0.1:5000/ (для локального доступа)
http: // vm public ip: 5000/(для удаленного доступа через Интернет)
ПРИМЕЧАНИЕ . Если вы планируете получить доступ к приложению через публичный IP, обязательно разрешите входящий трафик в порту 5000 через брандмауэр виртуальной машины. Это обеспечит разрешению общения над публичным IP, и вы можете получить доступ к веб -интерфейсу удаленно.
Кроме того, убедитесь, что папка на вашей машине Linux, которая будет содержать загруженный файл PDF, не содержит файла PDF с тем же именем. Если файл уже существует, он будет перезаписан.
Выберите PDF -файл и загрузите его, используя кнопку «Загрузить».
Нажмите на «Файл процесса» (на этом этапе будут созданы и хранятся Vector Entgeddings в базе данных Pinecone).
Введите свой поисковый запрос. Выберите «Openai Language Models» в раскрывающемся меню.
Проверьте ответ запроса. Отправить последующие запросы.
После того, как это сделано, нажмите «Конец сеанса» (он запустит очистку - удаление загруженного файла и векторных встроений в базе данных)
На Linux Macine нажмите Ctrl+C, чтобы закрыть приложение (app.py).