Olá, sejam bem-vindos a este curso na Alura. Meu nome é Alan Spadini.
Audiodescrição: Alan é um homem branco, com cabelos castanhos. Ele está no estúdio da Alura, com luzes azuis e roxas ao fundo.
Neste curso, vamos trabalhar com REG (Retrieval Augmented Learning), que significa que adicionaremos uma base de dados de conhecimento a alguma LLM, para que ela consiga responder sobre um assunto específico do nosso interesse de maneira mais precisa. Para isso, utilizaremos bibliotecas como LangChain e LangGraph. Esperamos vê-los nos próximos vídeos deste curso. Até lá!
Como podemos fazer com que uma LLM (Modelo de Linguagem Grande) responda de maneira detalhada e precisa sobre um assunto específico de nosso interesse? Para isso, vamos utilizar a biblioteca LinkedIn, que nos permitirá conectar a uma LLM específica e verificar se ela consegue responder sobre o tema desejado de forma precisa.
Para trabalhar com a LLM, utilizaremos o Google Colab, um sistema de notebook do Google que nos permite executar código Python. Inicialmente, instalaremos algumas bibliotecas necessárias. Após a instalação, executamos o comando Shift + Enter
na célula de código para instalar o LinkedIn e outras bibliotecas que utilizaremos ao longo do curso. Com essas bibliotecas instaladas, podemos começar a trabalhar.
%pip install -qU pypdf
%pip install -U langchain
%pip install -U langchain-community
%pip install -U langchain-groq
%pip install langchain-huggingface
%pip install langgraph
Para conectar à LLM, precisamos de uma chave de API. Existem diversos provedores de chave de API, como o Google Gemini e a OpenAI, que geralmente são pagos. Para o desenvolvimento deste projeto, escolhemos trabalhar com o Grote, um fornecedor de chave de API que oferece as LLMs da Lama, desenvolvidas pela Meta, de forma gratuita até o momento. Esses modelos do Lama também podem ser baixados localmente, caso desejemos trabalhar com eles sem depender de uma API externa. Por isso, escolhemos os modelos do Lama e o provedor Grote.
Para obter a chave de API, acessamos o site do Grote em grote.com. Após fazer login no site, clicamos em "Start Building" e, em seguida, em "Create API Key". Após a verificação de segurança, uma chave de API é gerada. Copiamos essa chave e a inserimos no Google Colab. No canto esquerdo do Google Colab, no símbolo de chave, podemos adicionar um novo segredo, nomeando-o como "API do Grote" e colando a chave de API gerada.
Já temos uma chave de API adicionada, que utilizaremos neste curso, nomeada como Grote API Key
. No sistema de Secrets do Google, há um exemplo de código que nos permite copiar essa chave de API para nosso código. Copiamos esse trecho de código, colamos em uma célula de código e substituímos o Secret Name
pelo nome da chave de API que adicionamos, GROQ_API_KEY
. Assim, conseguimos armazenar o valor da chave de API dentro de uma variável, como API_Key
.
from google.colab import userdata
api_key = userdata.get('GROQ_API_KEY')
Além disso, na biblioteca LinkedIn que vamos utilizar, precisamos informar que estamos utilizando a chave de API do Grote. Para isso, adicionaremos essa informação ao sistema. Vamos importar o módulo os
e, em seguida, utilizar os.environ
para definir a variável de ambiente. Faremos isso abrindo e fechando colchetes e adicionando GROQ_API_KEY
igual à chave de API. Com isso, a informação GROQ_API_KEY
com o valor da chave será adicionada às nossas variáveis de ambiente, permitindo que o LinkedIn entenda que estamos utilizando a chave de API do Grote. É importante que a variável de ambiente tenha exatamente esse nome, GROQ_API_KEY
, para que possamos utilizar o modelo do Llama através do Grote.
import os
os.environ['GROQ_API_KEY'] = api_key
Dentro do LinkedIn, precisamos importar o chat_Groq
do LinkedIn. Faremos isso com from langchain_groq import ChatGroq
. Com isso, conseguimos definir nossa LLM. Vamos definir LLM
igual a chat_Groq
e, dentro do chat_Groq
, especificar o modelo que vamos utilizar, colocando model
igual a "Llama 3.3-70B-Versatil"
. Este é um dos exemplos de modelos disponíveis no Grote. Na página do Grote, em API Keys ou Models, podemos ver outros modelos que podemos testar, como o modelo do Llama 4, os modelos do Quen, da empresa Alibaba, além do Gema e do Mistral, todos modelos interessantes.
from langchain_groq import ChatGroq
llm = ChatGroq(model='llama-3.3-70b-versatile')
Após definir a LLM, vamos verificar se ela consegue responder a alguma pergunta sobre um assunto de interesse. Suponhamos que nosso interesse seja a ida a Marte. Queremos perguntar sobre Marte e verificar se a LLM responde. Vamos adicionar um prompt, definindo prompt
igual a três aspas, seguido de um trecho de texto. Adicionaremos messages
e dois pontos, seguido de uma informação. Colaremos a informação pré-definida, que é: "Segundo a NASA, quais seriam os benefícios científicos de ir para Marte?". Vamos ver se a LLM sabe responder a isso.
prompt = '''
messages: Segundo a NASA quais seriam os beneficios cientificos de ir para Marte?
'''
Definimos o prompt, e dentro da variável prompt
temos essa informação. Em seguida, definimos resposta
igual a llm.invoke(prompt)
, perguntando à LLM sobre essa questão. Ao executar, podemos ver que temos a mensagem da IA e o conteúdo da resposta, que menciona vários benefícios científicos de ir para Marte.
resposta = llm.invoke(prompt)
resposta
Agora, suponhamos que tenhamos um documento sobre Marte, como um documento da NASA. Escolhemos propositalmente um documento da NASA, pois é um órgão público e seus documentos geralmente estão em domínio público. Este documento está em domínio público, mas não é de conhecimento da LLM, pois ela foi treinada até uma determinada data, e o documento foi publicado posteriormente. Queremos que a LLM responda sobre o conteúdo desse documento. Como fazemos isso?
O intuito do reg é adicionar conhecimento de uma base de dados externa, seja da internet ou de um documento PDF que tenhamos localmente, ou um documento de conhecimento da nossa empresa. No próximo vídeo, veremos como carregar esse documento e como começar a trabalhar com ele para que a LLM possa responder sobre seu conteúdo.
Agora, queremos adicionar informações a partir de um documento em texto que tenhamos salvo de alguma forma, para que a LLM consiga responder sobre esse documento. Neste caso, trata-se de um documento que fala sobre Marte e a NASA.
No início do nosso conteúdo, realizamos a instalação de algumas bibliotecas, como a PyPDF
e a LinkedIn Community
. Vamos começar instalando essas bibliotecas necessárias para o nosso projeto:
%pip install -qU pypdf
%pip install -U langchain
%pip install -U langchain-community
%pip install -U langchain-groq
%pip install langchain-huggingface
%pip install langgraph
A partir da LinkedIn Community
, conseguimos carregar alguns loaders (carregadores de informação de documentos), e é isso que vamos fazer.
O documento está disponível em um repositório no GitHub, é um documento em PDF. Colocamos o link desse documento dentro de uma variável chamada url
:
url = 'https://raw.githubusercontent.com/allanspadini/curso-flash-rag/main/m2m_strategy_and_objectives_development.pdf'
Em seguida, fazemos a importação do PyPDFLoader
com o comando correto:
from langchain_community.document_loaders import PyPDFLoader
Utilizamos o PyPDFLoader
para criar uma variável chamada loader
, que será igual a PyPDFLoader(url)
, definindo assim nosso loader:
loader = PyPDFLoader(url)
No entanto, não queremos carregar todo o documento em um único bloco; vamos carregá-lo dividido em páginas, por exemplo. Para isso, criamos uma lista vazia chamada pages
:
pages = []
E utilizamos um laço for
para iterar sobre loader.lazy_load()
, adicionando página por página dentro dessa lista:
for page in loader.lazy_load():
pages.append(page)
Após corrigir um erro de digitação no nome da biblioteca, conseguimos realizar o carregamento das informações, dividindo o documento em páginas.
Outra forma comum de carregar documentos e informações é em chunks (blocos) de trechos de texto que possuem uma certa quantidade de caracteres.
Carregar o documento em páginas é bastante conveniente, pois representa uma divisão lógica do nosso documento. Isso é interessante porque precisamos buscar informações dentro desse documento de alguma forma. Para verificar a informação, podemos tentar imprimir o conteúdo da primeira página, que é a página zero. Podemos usar o comando:
print(f"{pages[0].metadata}\n")
Para visualizar os metadados do documento carregado, que é um arquivo PDF da biblioteca versão 17.0. Esses metadados incluem as datas do documento, a origem do carregamento e o número total de páginas, que é 68. Também conseguimos visualizar o conteúdo da página.
Para isso, utilizamos:
print(pages[0].page_content)
E, ao executar, vemos que a página zero contém informações da capa do documento, como o nome "nasasmustemars", que está em inglês. Temos essas informações do documento e queremos continuar trabalhando com ele. Uma das formas de adicionar conhecimento para a LLM é inserir o texto no prompt e perguntar sobre ele, facilitando a busca de informações.
No entanto, ao observar os metadados, percebemos que o documento tem 78 páginas no total, o que é bastante extenso. Se já interagimos com o ChatGPT ou o Gemini, notamos que, quanto mais longa a conversa, maior a tendência de confusão, erros ou esquecimento das primeiras interações. Isso se deve ao problema de janela de contexto.
Por essa razão, ao trabalhar com documentos e bases de conhecimento, não adicionamos diretamente todo o conhecimento no prompt para a LLM. Em vez disso, rastreamos a informação relevante para responder à pergunta que estamos fazendo. Vamos explorar como fazer isso no próximo vídeo.
O curso Flash Skills: RAG e Agentes de IA possui 66 minutos de vídeos, em um total de 20 atividades. Gostou? Conheça nossos outros cursos de IA para Programação em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você participa de eventos exclusivos, pode tirar dúvidas em estudos colaborativos e ainda conta com mentorias em grupo com especialistas de diversas áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Para estudantes ultra comprometidos atingirem seu objetivo mais rápido.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Conecte-se ao mercado com mentoria personalizada, vagas exclusivas e networking estratégico que impulsionam sua carreira tech para o próximo nível.