Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

[Projeto] Minha implementação da Atividade com RAG e VETORIAL em MEMORIA (FAISS)

Apesar de nas aulas1 não mostrar nada de banco vetorial, usei conhecimentos que eu já possuo e um pouco de pesquisa para modelo mais atual de embeddings

ps.: Depois vi no repositório que o assunto será visto na aula 2, bom mas de qualquer forma fiz a minha implementação, poderia ter sido outro banco vetorial e mais elaborado, mas segue.

Passos:

Instala bibliotecas do FAISS e dos text-splitters

!pip install faiss-cpu langchain-text-splitters  # PARA RAG COM BANCO VETORIAL EM MEMORIA
# Exercício RAG com banco vetorial
# Converta os chunks em embeddings e indexe-os em um banco de dados vetorial para busca semântica;

#importa as bibliotecas
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain_community.vectorstores import FAISS

Implemente o fluxo RAG conectando o prompt aumentado à LLM, comparando o resultado com o prompt tradicional.

# 1. Dividir o documento em blocos de 500 tokens e sobreposição de 50
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)
chunks = text_splitter.split_documents(documento)

# 2. Configurar o modelo de Embeddings do Google
embeddings = GoogleGenerativeAIEmbeddings(model="gemini-embedding-2-preview")

# 3. Criar o índice FAISS e armazenar os chunks
vectorstore = FAISS.from_documents(chunks, embeddings)

# 4. Recuperar os trechos mais relevantes para a pergunta 2 blocos
retriever = vectorstore.as_retriever(search_kwargs={"k": 2})
docs_recuperados = retriever.invoke(pergunta)

# Juntar o conteúdo recuperado para formar o contexto do RAG
contexto_rag = "\n\n".join([doc.page_content for doc in docs_recuperados])

# 5. Executar o RAG com o contexto recuperado pelo FAISS mesma chain do bloco anterior
resposta_rag = chain_rag.invoke({"contexto": contexto_rag, "pergunta": pergunta})
print(resposta_rag.content)

Comparando as saídas do rag sem e com FAISS

sem

# Exibe o dicionário completo de uso de tokens da chamada
print(resposta_rag.usage_metadata)

{'input_tokens': 563, 'output_tokens': 1388, 'total_tokens': 1951, 'input_token_details': {'cache_read': 0}, 'output_token_details': {'reasoning': 1059}}

COM
{'input_tokens': 311, 'output_tokens': 811, 'total_tokens': 1122, 'input_token_details': {'cache_read': 0}, 'output_token_details': {'reasoning': 636}}

Da pra perceber uma** redução grande nos tokens** e entrada e saida e raciocínio, ficando no total quase a metade menor em consumo de tokens com resposta similar e mais relevante para:

pergunta = "Qual é a política de home office da nossa empresa?"

SEM
A política de trabalho da empresa é predominantemente híbrida, não exclusivamente home office. As diretrizes são as seguintes:

  • Modalidade: A modalidade padrão é híbrida, compreendendo 3 (três) dias de trabalho remoto (home office) e 2 (dois) dias de trabalho presencial no escritório por semana.
  • Dias Presenciais: Os dias de trabalho presencial são definidos em comum acordo entre a equipe e o gestor, mas as terças-feiras são designadas como o dia presencial obrigatório para alinhamento de equipe e reuniões estratégicas.
  • Elegibilidade: Todos os funcionários em tempo integral, que completaram o período de experiência de 90 dias e cujas funções são compatíveis com o trabalho remoto, são elegíveis, sujeitos à aprovação do gestor direto.
  • Horário: A jornada de trabalho de 8 horas diárias pode ser cumprida com flexibilidade, iniciando entre 07:00 e 10:00. O horário de 'core time', no qual todos devem estar disponíveis online ou no escritório, é das 10:00 às 16:00.
  • Equipamentos e Auxílio de Custo: A Empresa XYZ fornecerá notebook e, mediante solicitação e aprovação, monitor, teclado e mouse. Um auxílio de custo mensal no valor de R$ 150,00 será concedido para cobrir despesas com internet de alta velocidade.

COM
A política de home office da empresa é baseada em um modelo híbrido:

  • Modalidade Padrão: 3 (três) dias de trabalho remoto (home office) e 2 (dois) dias de trabalho presencial no escritório, por semana.
  • Elegibilidade: Todos os funcionários em tempo integral, que completaram o período de experiência de 90 dias e cujas funções são compatíveis com o trabalho remoto, são elegíveis. A aprovação final está sujeita ao acordo com o gestor direto.
  • Definição dos Dias: Os dias de trabalho presencial (e, consequentemente, os de home office) serão definidos em comum acordo entre a equipe e o gestor, priorizando as terças-feiras para reuniões de alinhamento geral da equipe.