A intenção deste repositório é usar o OpenAI para resposta a perguntas com base em um banco de dados SQL e poucas outras tarefas de resposta a perguntas baseadas em recuperação usando o Langchain.
O Movie-Dialog-Corpus de Cornell é usado neste repositório e seu pré-processamento é feito juntamente com sua conversão para um banco de dados SQL relacional com a adição de restrições de banco de dados relacionais, como chave primária, chave estrangeira etc.
O pré-processamento foi realizado no corpus inicial (Diretório Movie-Dialog-Corpus) e o banco de dados é exportado como um banco de dados SQLite no diretório do banco de dados. O notebook está disponível no diretório de notebooks para o pré -processamento e a conversão (preprocess_and_convert_to_sqlite_db.ipynb). (Este notebook pode ser ignorado, pois o arquivo sqlite db está disponível no repositório e pode ser usado diretamente no próximo caderno)
A resposta das perguntas é feita usando o modelo DaVinci do Openai, juntamente com o Langchain, a abordagem é descrita no caderno. question_answering_on_sql_database.ipynb. Este notebook usa o banco de dados SQLite criado no Notebook anterior.
Para obter dados de busca/raspagem dos URLs de script de filme e para criar índices de banco de dados vetoriais baseados em FAISSs usando o OpenAi incorpeddings, consulte o Notebook Fetch_Movie_scripts_and_Create_indexes.ipynb. Este notebook pode ser ignorado e os arquivos gerados podem ser baixados na pasta do Google Drive.
Para consultar o OpenAI para qualquer consulta após obter índices relevantes dos índices vetores criados no Notebook anterior, use o Notebook consulso_from_openai_after_retrieval_from_indexes
Para usar agentes e unir várias ferramentas e construir um sistema básico de resposta a perguntas, juntando -se ao módulo de banco de dados SQL e à consulta baseada em vetores em scripts de filmes e ferramentas adicionais, passe pelo notebook usando_agents_for_qa_on_sql_and_vectorsb.ipynb.
O arquivo de dados do SQLite Moviesdb.db pode ser visualizado usando um visualizador para banco de dados SQLite, como https://sqlitebrowser.org/
Para visualizar o banco de dados em Python, execute o código abaixo no mesmo diretório que o banco de dados
import sqlite3
import pandas as pd
con = sqlite3.connect("moviesdb.db")
df = pd.read_sql_query("SELECT * from movie_titles", con)
O diagrama de ER do banco de dados está abaixo: -