Este repositório contém um projeto que demonstra como usar a estrutura de geração de recuperação de recuperação (RAG) com o modelo GPT-4O do OpenAI e o banco de dados vetorial do Pinecone para consultar um conjunto de dados CSV. O projeto envolve a criação de incorporações de vetor a partir dos dados no arquivo CSV, armazenando incorporações no banco de dados Pinecone e, em seguida, consultando os dados de incorporação do vetor usando consultas de linguagem natural.
Índice
Introdução
Pré -requisitos
Plataforma e pacotes testados
Uso
Ingestão de dados e criação de incorporações
Consultando os dados
Como funciona
Licença
Este projeto mostra o uso de técnicas de processamento de linguagem natural para consultar dados armazenados em um arquivo CSV. Ao alavancar o modelo GPT-4 do OpenAI e o banco de dados vetorial da Pinecone, podemos criar incorporação para os dados e usar essas incorporações para recuperar respostas precisas às consultas do usuário.
Antes de começar, verifique se você tem o seguinte:
Integração da API : para integrar com o OpenAI e Pinecone, você precisa obter e configurar as respectivas informações de API, host (Pinecone) para essas plataformas. Defina suas teclas API OpenAI e Pinecone e o host Pinecone como variáveis de ambiente no Linux. Use os seguintes comandos Linux para exportar essas variáveis:
Exportar OpenAI_API_KEY = 'Your-Openai-api-Key'
Exportar Pinecone_Api_Key = 'Your-Pinecone-Api-Key'
exportar pinecone_host = 'seu pinecone-host'
API OpenAI: modelo OpenAI "Text-Ada-Ada-002" e "GPT-4O" usados para gerar incorporações e suporte LLM. Certifique -se de ter uma conta OpenAI com chaves de API válidas. Você pode obter suas chaves da API da plataforma OpenAI (https://platform.openai.com/) e gerenciá-las (https://platform.openai.com/organization/api-keys). Além disso, verifique se sua conta possui cota de uso suficiente, pois este exemplo requer uma conta OpenAI paga.
Ambiente Pinecone (conta livre de pinecone usada https://www.pinecone.io/): 1) Índice de Pinecone é usado 2) Dimensões: 1536 3) Tipo de host: Sem servidor.
CentOS Linux Release 8.5.2111. Crie um ambiente virtual (opcional, mas recomendado) para isolar as dependências do projeto.
Python 3.8.8
PANDAS 2.0.3
Openai 1.30.3
Pinecone 4.0.0
Numpy 1.24.4
argparse 1.1
Ingestão de dados e criação de incorporações
csv_path = "your_csv_file_path" [Create-chunks-Embetbeddings-store-vectordb-csv-dataset.py]
Pinecone_index_name = "your_pinecone_index_name" [Create-Chunks-Embortdings-Store-VectordB-Csv-dataset.py]
index_name = "your_pinecone_index_name" [query-prompt-for-vector-embeddings.py]
Modifique os títulos da coluna na função read_csv_data para corresponder às colunas no seu arquivo CSV. Consulte o personalização da seção de arquivos CSV para obter detalhes.
Você pode usar os modelos Openai LLM com base em suas necessidades:
Model = "GPT-4O", # Você pode usar o GPT-4 ou GPT-3.5-Turbo ou outro modelo OpenAI LLM. [Query-prompt for- vector-embeddings.py]
Execute o script para ler os dados, gerar incorporação e armazená -los em Pinecon
#Python Create-chunks-Embetbeddings-store-vectordb-csv-dataset.py
Consultando os dados
#python query-prrompt for- vector-incortingings.py "Sua consulta aqui"
Exemplo: Python query-prompt for-vector-embateddings.py "Conte-me sobre o enredo do filme XYZ"
Digite sua próxima consulta (ou digite 'saída' para sair): Em que ano este filme foi lançado?
Chunking os dados do CSV, crie incorporações de vetor e armazenamento de incorporações no banco de dados Pinecone
O script "Create-chunks-incorbeddings-store-vectordb-csv-dataset.py" lê o arquivo CSV e combina colunas relevantes em uma única sequência de texto para cada linha. Esta sequência de texto inclui detalhes das colunas para cada linha - cada linha contém informações distintas (por exemplo, informações para um filme). O texto combinado para cada linha é usado para gerar incorporações usando a API do OpenAI. As incorporações do vetor são armazenadas em um índice de pinecone.
Aproveitando o GPT-4 LLM do OpenAi
O projeto aproveita o GPT-4 Language Model (LLM) do OpenAI de duas maneiras primárias:
Gerando incorporação: os dados de texto de cada linha do arquivo CSV são usados como entrada para o modelo de incorporação do OpenAI (Text-ABEDDING-ADA-002). Este modelo transforma o texto em um vetor de alta dimensão incorporando que captura o significado semântico do texto. Essas incorporações são então armazenadas no banco de dados vetorial da Pinecone para recuperação eficiente.
Consulta de linguagem natural: quando um usuário envia uma consulta, o script gera uma incorporação para o texto da consulta usando o mesmo modelo de incorporação. Essa incorporação de consulta é usada para pesquisar no banco de dados do vetor pinecone para obter os pedaços de texto mais semanticamente semelhantes (ou seja, linhas do arquivo CSV). Os pedaços de texto relevantes são recuperados e passados para o modelo GPT-4 do OpenAI para gerar uma resposta abrangente e contextualmente precisa à consulta do usuário.
Combinando o contexto para respostas aprimoradas
Para garantir que as respostas sejam precisas e relevantes, o script mantém um contexto de consultas e respostas anteriores. Esse contexto é combinado com os pedaços de texto recuperados para fornecer ao GPT-4 uma visão abrangente das informações. Essa abordagem aprimora a capacidade do modelo de gerar respostas detalhadas e precisas fundamentadas nos dados fornecidos no arquivo CSV.
Personalização do seu arquivo CSV
Para garantir que o script funcione corretamente com o seu arquivo CSV, atualize as colunas "Create-Chunks-Embeddings-Store-VectordB-CSV-dataset.py" para corresponder às colunas no seu arquivo CSV. Aqui está um exemplo de como você pode personalizar a função:
#Users devem substituir as colunas pela lista de nomes de colunas que desejam usar - exemplo abaixo
colunas = ["classificação", "diretor", "gênero", "plot", "atores", "ratings"] # substitua colunas por nomes de colunas do seu arquivo CSV
Este projeto está licenciado sob a licença Apache 2.0. Consulte o arquivo de licença para obter detalhes.