Construindo um RAG ingênuo com FAISS ou Chroma
Escreva 40 linhas de Python: gere o embedding da consulta, obtenha as K partes mais próximas, insira-as no prompt e pergunte ao LLM.
Construindo um RAG ingênuo com FAISS ou Chroma é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Um RAG de 40 linhas
Agora você tem todos os componentes. Vamos reuni-los em um RAG ingênuo funcional sobre um pequeno conjunto de documentos.
Step 1: Install
# pip install openai chromadbStep 2: Sample Corpus
docs = [
'Python is a high-level interpreted programming language created by Guido van Rossum in 1991.',
'Pizza is a savory dish of Italian origin consisting of a round flat base of dough.',
'The Eiffel Tower is a wrought-iron lattice tower in Paris, France, completed in 1889.',
'NumPy is a Python library used for working with arrays and numerical computing.',
'The Great Wall of China is a series of fortifications built across northern China.'
]
print(f"Loaded {len(docs)} documents")
for i, d in enumerate(docs):
print(f"{i+1}. {d[:50]}...")
Step 3: Set Up Chroma
import chromadb
from openai import OpenAI
client = chromadb.Client()
collection = client.create_collection('demo')
openai_client = OpenAI()Step 4: Embed and Store
embed_response = openai_client.embeddings.create(
model='text-embedding-3-small',
input=docs
)
vectors = [d.embedding for d in embed_response.data]
collection.add(
ids=[f'd{i}' for i in range(len(docs))],
embeddings=vectors,
documents=docs
)Step 5: Embed the Query
query = 'Tell me about Python programming'
query_vec = openai_client.embeddings.create(
model='text-embedding-3-small',
input=query
).data[0].embeddingStep 6: Retrieve Top-K
results = collection.query(
query_embeddings=[query_vec],
n_results=2
)
retrieved = results['documents'][0]
print(retrieved)
# ['Python is a high-level...', 'NumPy is a Python library...']Step 7: Build the RAG Prompt
context = '\n'.join(f'- {chunk}' for chunk in retrieved)
prompt = f'''
Using only the context below, answer the question. If unknown, say so.
Context:
{context}
Question: {query}
'''Step 8: Call the LLM
response = openai_client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
temperature=0,
)
print(response.choices[0].message.content)Alternativa com FAISS
Se você quiser uma solução totalmente local, sem servidor de banco de dados, o FAISS é ainda mais simples:
import faiss
import numpy as np
index = faiss.IndexFlatIP(1536) # inner product, normalised vectors
index.add(np.array(vectors).astype('float32'))
D, I = index.search(np.array([query_vec]).astype('float32'), k=2)
retrieved = [docs[i] for i in I[0]]Limitações deste RAG ingênuo
- Sem divisão em trechos — funciona apenas para documentos curtos
- Sem reclassificação
- Sem filtragem de metadados
- Sem avaliação
Corrigiremos tudo isso nos cursos posteriores.
Custo por consulta
Para cada consulta realizada:
- 1 chamada de incorporação (cerca de US$ 0,00002)
- 1 conclusão de conversa com cerca de 500 tokens de contexto (cerca de US$ 0,0001)
Total: cerca de um centésimo de centavo por pergunta.
Publique e aprimore
Este RAG de 40 linhas já supera a maioria dos chatbots sem contexto em perguntas e respostas factuais sobre seus dados. Publique-o, observe como os usuários o quebram e, então, adicione técnicas avançadas onde elas forem mais necessárias.
Os K mais relevantes do RAG ingênuo
O que significa recuperar os K mais relevantes?
Recapitulação
O senhor construiu um RAG. Agora veremos bancos de dados vetoriais que ampliam isso para além de um único laptop.
Perguntas Frequentes
A aula “Construindo um RAG ingênuo com FAISS ou Chroma” é grátis?
Sim — o texto completo de “Construindo um RAG ingênuo com FAISS ou Chroma” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Construindo um RAG ingênuo com FAISS ou Chroma”?
Escreva 40 linhas de Python: gere o embedding da consulta, obtenha as K partes mais próximas, insira-as no prompt e pergunte ao LLM. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Construindo um RAG ingênuo com FAISS ou Chroma”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O que o RAG resolve (limite de conhecimento, alucinações)
- Estratégias de divisão em partes (fixa, por frase, semântica)
- Indexando um conjunto de documentos
- Construindo um RAG ingênuo com FAISS ou Chroma