Monte uma memória semântica local e orquestre agentes para resolver tarefas sofisticadas com o mínimo de tokens pagos.
Motor de áudio para Apple Silicon, com exemplos de TTS/STT e servidor OpenAI-compatible.
RAG (Retrieval-Augmented Generation) é dar ao modelo acesso a documentos externos: ele busca os trechos mais relevantes e só então responde. Já a orquestração é decidir qual modelo faz cada parte do trabalho — um modelo leve classifica, um modelo médio executa e um Frontier revisa.
Pense em uma equipe de consultoria: um estagiário encontra os documentos, um analista escreve o rascunho e só o sócio senior aprova a versão final. Cada um faz o que é mais barato para a qualidade exigida.
O pipeline RAG recomendado no research_rag_local_mac.md usa nomic-embed-text-v2-moe ou BAAI/bge-m3 para embeddings, pgvector no Postgres local para vetores + full-text, BAAI/bge-reranker-v2-m3 para reranking e Qwen3-32B via mlx_lm para síntese.
Três padrões reduzem custo na nuvem: Sidekick/Architect–Editor (um planeja, outro executa), Fusion (dois modelos respondem e um juiz funde) e Roteamento por dificuldade (tarefas simples vão para modelo local, difíceis para Frontier).
Devin Fusion reporta 35–41% de redução de custo mantendo performance frontier. OpenRouter Fusion mostra painéis orçamento atingindo performance próxima de Fable 5 a metade do custo. Localmente, use LangGraph ou n8n para implementar esses padrões com mlx-lm/Ollama.
Para começar, você precisa de um banco vetorial local, um modelo de embeddings e um modelo de síntese. O Postgres com pgvector é a escolha recomendada porque une metadados, embeddings e busca full-text no mesmo lugar.
Stack mínima: brew install postgresql@16 pgvector, ollama pull nomic-embed-text-v2-moe, pip install markitdown crawl4ai sentence-transformers pgvector psycopg2-binary langchain mlx-lm. A ingestão usa MarkItDown para documentos e Crawl4AI/Firecrawl para web.
# ingestão e busca com Chroma (prototipagem) import chromadb from sentence_transformers import SentenceTransformer client = chromadb.Client() collection = client.create_collection("docs") emb = SentenceTransformer("BAAI/bge-m3") texts = ["doc1 em português", "doc2 em inglês"] collection.add(ids=["1","2"], documents=texts, embeddings=emb.encode(texts).tolist()) res = collection.query(query_embeddings=emb.encode(["pergunta"]).tolist(), n_results=5) print(res)
Teste o que aprendeu com exercícios rápidos.