Postgres Q&A é um projeto que demonstra como usar word embeddings e Postgres para construir um chatbot. O chatbot é implementado usando Vercel Edge Functions e o driver @neondatabase/serverless, e depende da API GPT-3 da OpenAI para gerar respostas.
Para começar este projeto, você precisará ter:
Depois de instalar os pré-requisitos, siga estas etapas para colocar o projeto em funcionamento:
Clone o repositório:
git clone https://github.com/neondatabase/postgres-qa.git
cd ask-postgres
Esta seção é derivada do exemplo do livro de receitas da OpenAI. Você pode usar o código Python aqui para construir um rastreador da web e extrair o texto necessário para criar embeddings. Já criamos os arquivos de texto baseados em https://www.postgresql.org/docs/, que você pode encontrar no diretório data/text
.
Para começar, vá para o diretório data
, crie um novo ambiente e instale as dependências:
cd data
python -m venv env
source env/bin/activate
pip install -r requirements.txt
Importe o esquema para seu banco de dados:
psql < database-url > -f database.sql
Vamos agora adicionar DATABASE_URL
e OPENAI_API_KEY
às nossas variáveis de ambiente:
export DATABASE_URL= < YOUR_NEON_CONEECTION_STRING > OPENAI_API_KEY= < YOUR_OPENAI_API_KEY >
Execute main.py
para importar a incorporação para seu banco de dados Neon:
python main.py
Relaxe e tome uma xícara de café, pois esta seção pode levar 10 minutos para ser processada!
Resultado esperado:
Saving to CSV...
Loading tokenizer...
Embedding text...
Connecting to database...
Done !
Instale as dependências do projeto:
cd app
npm install
Crie um arquivo .env
touch .env.local
Defina as seguintes variáveis de ambiente:
OPENAI_API_KEY= Your OpenAI API key.
DATABASE_URL= The connection URL for your Neon database.
Inicie o servidor:
npm run dev
Aceitamos contribuições para este projeto! Se você encontrar um bug, tiver uma sugestão ou quiser contribuir com código, abra um problema ou pull request no repositório GitHub.
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter mais informações.