Publicado em: 09, janeiro 2026
A maioria dos blogs faz isso:
“Posts relacionados” = mesma categoria ou mesmas tags
Isso funciona… até não funcionar mais.
Se você só tem 3 categorias (ex: tutoriais, notícias, pacotes), o que você realmente está recomendando é quase aleatório. O usuário lê sobre performance no Laravel e recebe um post sobre Groq ou alguma release aleatória — sem relação real de conteúdo.
A solução?
👉 Recomendação
semântica baseada em significado, não em rótulos.
Se você não assistiu ao vídeo anterior, aqui vai a definição direta:
Embeddings são vetores numéricos que representam o significado de um texto.
Dois textos semanticamente parecidos geram vetores próximos no espaço vetorial.
Textos diferentes → vetores
distantes.
Agora vem o desafio real.
Imagine:
Comparar todos os pedaços com todos os pedaços vira rapidamente um problema de complexidade absurda.
Isso:
Precisamos de uma forma de comprimir o significado do post inteiro em um único vetor.
O Embedding Centroid resolve exatamente isso.
É a média vetorial de todos os embeddings de um conteúdo.
Se um post tem vários vetores, o centroid representa o “centro semântico” daquele conteúdo.
Matematicamente:
centroid[d] = (v1[d] + v2[d] + v3[d] + ... + vn[d]) / n
Simples. Poderoso. Escalável.
Criamos uma migration adicionando uma coluna do tipo vector na tabela posts:
php artisan make:migration add_embedding_centroid_to_posts_table
Na migration:
$table->vector('embedding_centroid')->nullable();No model Post, adicionamos o cast:
protected $casts = [
'embedding_centroid' => 'array',
];Sem pacote. Sem mágica.
Criamos um Job responsável por:
Isso permite:
Esse job vira um bloco fundamental da arquitetura.
Criamos um Command que percorre todos os posts e dispara o Job:
Post::all()->each(function ($post) {
dispatch_sync(new PostEmbeddingCentroidJob($post));
});Resultado:
Agora vem a parte mais interessante.
Antes, tínhamos algo assim:
->where('category_id', $post->category_id)Agora, substituímos por:
orderByRaw(
'embedding_centroid <=> ?',
[$post->embedding_centroid]
)Resultado real:
Antes:
Depois:
Tudo isso sem um time de Machine Learning, apenas usando bem as ferramentas que já temos hoje.
No próximo conteúdo, vamos avançar ainda mais:
Ou seja: sair do conteúdo → entrar no comportamento.
Se você curtiu esse tipo de implementação prática, aplicada e sem hype, eu quero te fazer um convite direto.
📅 24 e
25 de janeiro
🎯 Dois dias intensivos
🧠 Laravel + IA como core de negócio, não como
acessório
Você vai aprender:
Mais de 10 anos de experiência com Laravel e sólidos conhecimentos em frameworks front-end, como ReactJS, React Native e Vue JS. Experiência em Design de Serviço. No primeiro projeto profissional como júnior, desenvolveu em e-commerce para a maior indústria de equipamentos odontológicos da América Latina. Atualmente, atua como Full Stack Engineer Specialist em uma grande multinacional. Lidera decisões técnicas e é um suporte fundamental para a equipe de desenvolvimento.