Этот репозиторий содержит проект, который демонстрирует, как использовать структуру для поиска-аугированного поколения (RAG) с моделью GPT-4O OpenAI и базой данных Vector Vector Pinecone для запроса набора данных CSV. Проект включает в себя создание векторных встраиваний из данных в файле CSV, хранение встраиваний в базе данных Pinecone, а затем запросы данных векторных встроенных данных с использованием запросов естественного языка.
Оглавление
Введение
Предварительные условия
Протестированная платформа и пакеты
Использование
Проглатывание данных и создание встраиваний
Запрос данных
Как это работает
Лицензия
Этот проект демонстрирует использование методов обработки естественного языка для запроса данных, хранящихся в файле CSV. Используя модель GPT-4 от OpenAI и векторную базу данных Pinecone, мы можем создать встроенные встроенные данные для данных и использовать эти вставки для получения точных ответов на запросы пользователей.
Прежде чем начать, убедитесь, что у вас есть следующее:
Интеграция API : для интеграции с OpenAI и PineCone вам необходимо получить и настройка соответствующих ключей API, Host (PineCone) для этих платформ. Установите свои клавиши 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: модель Openai «Текст-вполнение-ADA-002» и «GPT-4O», используемая для генерации вторжений, и поддержки LLM. Убедитесь, что у вас есть аккаунт 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 Release 8.5.2111. Создайте виртуальную среду (необязательную, но рекомендуемой) для изоляции зависимостей проекта.
Python 3.8.8
Панды 2.0.3
Openai 1.30.3
Pinecone 4.0.0
Numpy 1.24.4
Argparse 1.1
Проглатывание данных и создание встраиваний
csv_path = "your_csv_file_path" [Create-Chunks-Embeddings Store-Vectordb-CSV-dataset.py]
pinecone_index_name = "your_pinecone_index_name" [create-chunks-embeddings-store-vectordb-csv-dataset.py]
index_name = "your_pinecone_index_name" [Query-prompt-for-vector-embeddings.py]
Измените заголовки столбца в функции read_csv_data, чтобы соответствовать столбцам в вашем файле CSV. Для получения подробной информации см. Настройку для вашего раздела файла CSV .
Вы можете использовать модели OpenAI LLM на основе ваших потребностей:
model = "gpt-4o", # Вы можете использовать GPT-4 или GPT-3.5-Turbo или другая модель Openai LLM. [Query-Prompt-For-Vector-Embeddings.py]
Запустите сценарий, чтобы прочитать данные, генерировать встраивание и хранить их в Pinecon
#python create-chunks-embeddings Store-Vectordb-csv-dataset.py
Запрос данных
#python Query-prompt-for-vector-embeddings.py «Ваш запрос здесь»
Пример: python Query-prompt-for-vector-embeddings.py "Расскажи мне о сюжете фильма xyz"
Введите свой следующий запрос (или введите «выход», чтобы уйти): в какой год был выпущен этот фильм?
Обжаловать данные CSV, создать векторные встроения и хранение встроений в базе данных Pinecone
Скрипт "Create-Chunks-Embeddings Store-VectordB-CSV-dataset.py" считывает файл CSV и объединяет соответствующие столбцы в одну текстовую строку для каждой строки. Эта текстовая строка включает в себя детали столбцов для каждой строки - каждая строка содержит различную информацию (например, информацию для фильма). Комбинированный текст для каждой строки затем используется для генерации встроений с использованием API Openai. Векторные встроения хранятся в индексе Pinecone.
Использование GPT-4 LLM OpenAI
Проект использует большую языковую модель GPT-4 (LLM) от Openai двумя основными способами:
Сгенерирование внедрений: текстовые данные из каждой строки файла CSV используются в качестве входного ввода в модель встраивания OpenAI (текстовое ввержение-ADA-002). Эта модель преобразует текст в высокомерный векторный встраивание, которое отражает семантическое значение текста. Эти встроения затем хранятся в векторной базе данных Pinecone для эффективного поиска.
Запрос естественного языка: когда пользователь подчиняет запрос, скрипт генерирует встраивание для текста запроса, используя ту же модель встраивания. Этот запрос встраивается затем для поиска базы данных Vector Pinecone для наиболее семантически похожих текстовых кусков (то есть строк из файла CSV). Соответствующие текстовые куски получены и передаются в модель GPT-4 OpenAI, чтобы генерировать комплексный и контекстуально точный ответ на запрос пользователя.
Объединение контекста для улучшенных ответов
Чтобы гарантировать, что ответы являются точными и актуальными, сценарий поддерживает контекст предыдущих запросов и ответов. Этот контекст объединяется с полученными текстовыми кусками, чтобы предоставить GPT-4 с полным представлением информации. Этот подход усиливает способность модели генерировать подробные и точные ответы, которые заземлены в данных, представленных в файле CSV.
Настройка для вашего файла CSV
Чтобы убедиться, что скрипт работает правильно с вашим файлом CSV, обновите столбцы «Create Chunks-Embeddings Store-Vectordb-CSV-dataset.py», чтобы соответствовать столбцам в вашем файле CSV. Вот пример того, как вы можете настроить функцию:
#Users должны заменить столбцы в список имен столбцов, которые они хотят использовать - пример ниже
Columns = [«Rank», «Director», «Жанр», «Сюжет», «Актеры», «рейтинги»] # Заменить столбцы на имена столбцов вашего файла CSV
Этот проект лицензирован по лицензии Apache 2.0. Смотрите файл лицензии для получения подробной информации.