Este repositorio contiene un proyecto que demuestra cómo utilizar el marco de generación de recuperación (RAG) con el modelo GPT-4O de OpenAI y la base de datos de vector de Pinecone para consultar un conjunto de datos CSV. El proyecto implica la creación de incrustaciones vectoriales a partir de los datos en el archivo CSV, almacenando incrustaciones en la base de datos de Pinecone y luego consultando los datos de incrustaciones de vectores utilizando consultas de lenguaje natural.
Tabla de contenido
Introducción
Requisitos previos
Plataforma y paquetes probados
Uso
Ingerir datos y crear integridades
Consulta de los datos
Cómo funciona
Licencia
Este proyecto muestra el uso de técnicas de procesamiento del lenguaje natural para consultar datos almacenados en un archivo CSV. Al aprovechar el modelo GPT-4 de OpenAI y la base de datos de Vector de Pinecone, podemos crear integridades para los datos y usar estos incrustaciones para recuperar respuestas precisas a las consultas de los usuarios.
Antes de comenzar, asegúrese de tener lo siguiente:
Integración de API : para integrarse con OpenAI y Pinecone, debe obtener y configurar la información de las teclas API respectivas, host (Pinecone) para estas plataformas. Establezca sus teclas API OpenAI y Pinecone, y el host de Pinecone como variables de entorno en Linux. Use los siguientes comandos de Linux para exportar estas variables:
Exportar OpenAI_api_Key = 'Your-Openai-Api-Key'
Exportar pinecone_api_key = 'Your-Pinecone-API-Key'
Exportar pinecone_host = 'Your-Pinecone-Host'
API de OpenAI: modelo OpenAI "Texto-Embeding-ADA-002" y "GPT-4O" utilizado para generar embedidas y soporte LLM. Asegúrese de tener una cuenta de OpenAI con claves API válidas. Puede obtener sus claves API de la plataforma Operai (https://platform.openai.com/) y administrarlas (https://platform.openai.com/organization/api-keys). Además, asegúrese de que su cuenta tenga suficiente cuota de uso, ya que este ejemplo requiere una cuenta de OpenAI pagada.
Entorno Pinecone (cuenta gratuita de Pinecone utilizada https://www.pinecone.io/): 1) Se utiliza el índice de pinecone 2) Dimensiones: 1536 3) Tipo de host: sin servidor.
CentOS Linux Release 8.5.2111. Cree un entorno virtual (opcional pero recomendado) para aislar las dependencias del proyecto.
Python 3.8.8
Pandas 2.0.3
OPERAI 1.30.3
Pinecone 4.0.0
Numpy 1.24.4
Argparse 1.1
Ingerir datos y crear integridades
csv_path = "Your_csv_file_path" [create-chunks-embbeddings-store-vectordb-csv-dataset.py]
pinecone_index_name = "your_pinecone_index_name" [create-chunks-embbeddings-store-vectordb-csv-dataset.py]
index_name = "your_pinecone_index_name" [Query-Prompt-For-Vector-Embeddings.py]
Modifique los títulos de columna en la función Read_csv_Data para que coincida con las columnas en su archivo CSV. Consulte la personalización de su sección CSV para obtener más detalles.
Puede usar modelos OperaI LLM en función de sus necesidades:
modelo = "GPT-4O", # Puede usar GPT-4 o GPT-3.5-TURBO u otro modelo OpenAI LLM. [Query-Prompt-for-vector-embeddings.py]
Ejecute el script para leer los datos, generar integridades y almacenarlos en Pinecon
#python create-chunks-empeddings-store-vectordb-csv-dataset.py
Consulta de los datos
#python consulta-prompt-for-vector-embeddings.py "Su consulta aquí"
Ejemplo: Python Query-ProMpt-for-vector-embeddings.py "Cuéntame sobre la trama de la película xyz"
Ingrese su próxima consulta (o escriba 'Salir' para dejar de fumar): ¿En qué año se lanzó esta película?
Coloque los datos de CSV, crea integridades vectoriales y almacenamiento de incrustaciones en la base de datos de Pinecone
El script "Crear chunks-Embeddings-store-vectordb-csv-dataset.py" lee el archivo CSV y combina columnas relevantes en una sola cadena de texto para cada fila. Esta cadena de texto incluye detalles de columnas para cada fila: cada fila contiene información distinta (por ejemplo, información para una película). El texto combinado para cada fila se usa para generar incrustaciones utilizando la API de OpenAI. Las integridades del vector se almacenan en un índice de piña.
Aprovechando el GPT-4 LLM de Openai
El proyecto aprovecha el modelo de lenguaje grande GPT-4 de OpenAI (LLM) de dos maneras principales:
Generación de incrustaciones: los datos de texto de cada fila del archivo CSV se usan como entrada para el modelo de incrustación de OpenAI (texto incrustado-ADA-002). Este modelo transforma el texto en una incrustación de vectores de alta dimensión que captura el significado semántico del texto. Estas integridades se almacenan en la base de datos Vector de Pinecone para una recuperación eficiente.
Consulta del lenguaje natural: cuando un usuario envía una consulta, el script genera una incrustación para el texto de la consulta utilizando el mismo modelo de incrustación. Esta incrustación de consulta se usa para buscar en la base de datos de Vector Pinecone para los fragmentos de texto semánticamente similares (es decir, filas del archivo CSV). Los fragmentos de texto relevantes se recuperan y pasan al modelo GPT-4 de OpenAI para generar una respuesta integral y contextualmente precisa a la consulta del usuario.
Combinando el contexto para respuestas mejoradas
Para garantizar que las respuestas sean precisas y relevantes, el script mantiene un contexto de consultas y respuestas anteriores. Este contexto se combina con los trozos de texto recuperados para proporcionar a GPT-4 una visión integral de la información. Este enfoque mejora la capacidad del modelo para generar respuestas detalladas y precisas que se basan en los datos proporcionados en el archivo CSV.
Personalización para su archivo CSV
Para garantizar que el script funcione correctamente con su archivo CSV, actualice las columnas "Crear chunks-Embeddings-store-vectordb-csv-dataset.py" para que coincida con las columnas en su archivo CSV. Aquí hay un ejemplo de cómo puede personalizar la función:
#Los usuarios deben reemplazar las columnas con la lista de nombres de columnas que desean usar - Ejemplo a continuación
columnas = ["Rango", "Director", "Género", "Gráfico", "Actores", "Calificaciones"] # Reemplazar columnas con nombres de columnas de su archivo CSV
Este proyecto tiene licencia bajo la licencia Apache 2.0. Consulte el archivo de licencia para obtener más detalles.