Skip to content
Arthur Maciel edited this page Aug 11, 2025 · 4 revisions

ENGENHORCA

EMBEDDING:

Um embedding é basicamente uma representação matemática de um texto, imagem ou outro dado, feita de forma que o significado (semântico) do conteúdo seja preservado — mas transformado em números que o computador consegue comparar e processar rapidamente.

Pensa assim:

Palavras e frases não têm “número” naturalmente.

Para a IA conseguir buscar, comparar e encontrar conteúdo parecido, ela precisa converter isso para um formato matemático — um vetor.

Esse vetor é um embedding: uma lista de números (geralmente entre -1 e 1) que captura o “sentido” do conteúdo.

🛠 Como funciona

Você dá um texto, por exemplo:

"ventilação natural"

O modelo de embeddings (como all-MiniLM-L6-v2 que você está usando) processa esse texto e devolve algo assim:

[0.12, -0.53, 0.87, ..., -0.05]  # Pode ter 384, 768 ou até milhares de dimensões

Textos com significado parecido terão vetores próximos no espaço matemático.

"ventilação natural" e "entrada de ar" → vetores próximos

"ventilação natural" e "compressor scroll" → vetores distantes

🔍 Por que é útil no seu chatbot HVAC

  • Quando o usuário faz uma pergunta, você gera um embedding dessa pergunta.

  • Busca no seu banco vetorial (Chroma) os chunks cujo embedding é mais próximo.

  • Isso traz só o conteúdo semântico relevante para responder, mesmo que as palavras não sejam exatamente iguais.

📌 Resumindo

  • O que é: vetor numérico que representa o significado de um conteúdo.

  • Pra que serve: comparar e buscar por similaridade sem depender só de palavras exatas.

  • Por que importa pra você: é a base do RAG — sem embeddings, seu chatbot não saberia quais partes do PDF buscar.


Chroma

O Chroma é um banco de dados vetorial (vector database) — ou seja, um sistema feito para armazenar embeddings e permitir buscas rápidas por similaridade entre eles.

Nesse caso, ele é o lugar onde você guarda o “conhecimento” do chatbot em forma de vetores.

🛠 O que ele faz na prática

  • Recebe documentos (ou resumos deles).

  • Converte cada parte do documento em um embedding (lista de números).

  • Armazena esses embeddings junto com metadados (nome do arquivo, página, tipo — texto, imagem, tabela etc.).

  • Na busca, você passa um novo embedding (da pergunta do usuário), e ele devolve os embeddings mais próximos no espaço vetorial.

🔍 Por que ele é importante no seu chatbot HVAC

No seu código, por exemplo:

vectorstore = Chroma(collection_name="multi_modal_rag", embedding_function=embedding_function)

Você está dizendo:

Quero um banco vetorial chamado "multi_modal_rag"

Ele vai usar essa função embedding_function (no seu caso HuggingFaceEmbeddings) para transformar textos em vetores.

Quando o usuário perguntar:

"Qual a norma NBR para ventilação em cozinhas?"

O fluxo será:

  • Criar o embedding dessa pergunta.

  • O Chroma procura no seu banco vetorial os embeddings mais próximos.

  • Retorna os trechos do PDF que mais se parecem semanticamente com a pergunta.

  • Esses trechos são passados para o modelo (Groq LLaMA, por exemplo) junto com a pergunta.

  • O modelo responde com base só nesses trechos.

📌 Por que escolhemos o Chroma

  • Gratuito e open source

  • Fácil de integrar com LangChain

  • Funciona em memória ou com persistência em disco (persist_directory)

  • Rápido para coleções pequenas e médias

  • Aceita texto, imagens (via metadados) e outros formatos


Pipeline

image