Armazenamentos vetoriais: Chroma e FAISS
Criação e persistência de armazenamentos vetoriais, busca por similaridade, recuperação MMR e busca híbrida.
Armazenamentos vetoriais: Chroma e FAISS é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 3 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 Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
O que é um armazenamento vetorial?
Um armazenamento vetorial mantém suas partes vetorizadas e encontra as mais semelhantes a um vetor de consulta. Ele é o mecanismo de busca no centro do RAG. Duas opções populares são Chroma e FAISS.
pip install langchain-chroma faiss-cpuCriando um armazenamento Chroma
Chroma.from_documents gera representações vetoriais das suas partes e cria um índice para elas em uma única chamada. Passe os documentos e um objeto de vetorização. O Chroma retorna um armazenamento que você pode pesquisar imediatamente.
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(chunks, embeddings)Persistindo o Chroma no disco
Passe persist_directory para que o índice seja salvo no disco e sobreviva às reinicializações. Recarregue-o depois construindo o Chroma com o mesmo diretório e as mesmas representações vetoriais, evitando o custo de gerar as representações novamente.
db = Chroma.from_documents(
chunks, embeddings,
persist_directory="./chroma_db"
)
# Reload later
db = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)Busca por similaridade
Faça uma consulta com similarity_search(query, k=4). Ele gera a representação vetorial da consulta, encontra as k partes mais próximas e as retorna como documentos. k controla quantos trechos você recupera.
results = db.similarity_search("How do I reset my password?", k=4)
for doc in results:
print(doc.page_content[:80])Pontuações da busca
Use similarity_search_with_score para também obter uma pontuação de distância para cada resultado. Uma distância menor significa maior similaridade. As pontuações ajudam a filtrar correspondências fracas antes de enviá-las ao LLM.
pairs = db.similarity_search_with_score("password reset", k=4)
for doc, score in pairs:
print(round(score, 3), doc.page_content[:60])Apresentando FAISS
FAISS (Pesquisa de Similaridade de IA do Facebook) é uma biblioteca de alto desempenho para busca vetorial. Ela é extremamente rápida e eficiente em termos de memória, sendo ideal para índices locais grandes sem um servidor separado.
Criando um armazenamento FAISS
A API é semelhante à do Chroma: FAISS.from_documents cria o índice. O FAISS mantém o índice na memória, por isso é excelente para buscas intensivas em leitura dentro do processo.
from langchain_community.vectorstores import FAISS
db = FAISS.from_documents(chunks, embeddings)
results = db.similarity_search("refund policy", k=3)Salvando e carregando o FAISS
Persista um índice FAISS com save_local e recarregue-o com load_local. O recarregamento exige allow_dangerous_deserialization=True porque o índice usa pickle.
db.save_local("faiss_index")
db = FAISS.load_local(
"faiss_index", embeddings,
allow_dangerous_deserialization=True
)Relevância versus diversidade
Uma busca simples por similaridade pode retornar quatro partes quase idênticas. Às vezes, você quer resultados diversos que cubram diferentes aspectos da resposta. É aí que o MMR ajuda.
Recuperação com MMR
Relevância Marginal Máxima (MMR) equilibra relevância e diversidade, escolhendo partes relevantes, mas não redundantes. Use search_type="mmr" por meio da interface do recuperador.
retriever = db.as_retriever(
search_type="mmr",
search_kwargs={"k": 4, "fetch_k": 20}
)
docs = retriever.invoke("password reset")Escolhendo entre Chroma e FAISS
Chroma é fácil de usar, persistente e adequado para protótipos e aplicações pequenas. FAISS é mais rápido em grande escala e ideal para buscas na memória. Ambos disponibilizam similarity_search e as_retriever, portanto é fácil alternar entre eles.
Verificação rápida
Teste seu conhecimento sobre armazenamentos vetoriais.
Recapitulação: Chroma e FAISS
Você criou armazenamentos vetoriais com Chroma.from_documents (usando persist_directory) e FAISS.from_documents, fez buscas com similarity_search(query, k=4) e salvou e carregou ambos. Você usou as_retriever com MMR para obter resultados diversos e aprendeu quando escolher cada armazenamento.
Perguntas Frequentes
A aula “Armazenamentos vetoriais: Chroma e FAISS” é grátis?
Sim — o texto completo de “Armazenamentos vetoriais: Chroma e FAISS” é 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 Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Armazenamentos vetoriais: Chroma e FAISS”?
Criação e persistência de armazenamentos vetoriais, busca por similaridade, recuperação MMR e busca híbrida. Você pratica Learn AI with Python 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 Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python 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 3 de 4.
Quanto tempo leva a aula “Armazenamentos vetoriais: Chroma e FAISS”?
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 Learn AI with Python?
Sim. Cada aula de Learn AI with Python 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
- Arquitetura do LangChain e LCEL
- Carregamento, divisão e embedding de documentos
- Armazenamentos vetoriais: Chroma e FAISS
- Construção de um sistema de perguntas e respostas com RAG de ponta a ponta