Construindo um RAG com PHP na prática.

Posted on: January 26, 2026 06:29 PM

Posted by: Renato

Views: 262

Construindo um RAG com PHP na prática.

 

 

Ricardo Minzé

Desenvolvedor Sênior | Backend | PHP, Laravel, Zend, Go, Microserviços, APIs | +10 anos de experiência

19 de janeiro de 2026

Neste artigo, exploramos de forma prática como construir um sistema de (RAG) utilizando PHP, desmistificando a ideia de que soluções modernas de Inteligência Artificial estão restritas a linguagens como Python. A partir de um fluxo real ingestão de dados, vetorização, busca semântica e geração de respostas com LLMs mostramos como o ecossistema PHP pode ser utilizado para criar aplicações inteligentes, escaláveis e alinhadas com arquiteturas de produção já existentes.

O que é RAG ?

É uma técnica revolucionária que combina busca inteligente com geração de respostas. Em vez de depender apenas do conhecimento pré-treinado de uma IA, o sistema primeiro busca informações relevantes em documentos reais.

fluxo simples de um sistem RAG (acervo pessoal)

IA Pura x RAG

LLM pura x LLM RAG (acervo pessoal)

Na abordagem de IA baseada apenas em modelos previamente treinados, o sistema fica restrito a um conjunto de informações estáticas, que não evoluem ao longo do tempo. Isso faz com que as respostas tendam a ser mais genéricas e, em alguns casos, levem à chamada alucinação, quando o modelo gera informações incorretas ou não verificáveis. Além disso, a incorporação de novos conhecimentos exige um novo processo de treinamento ou fine-tuning, que geralmente demanda alto custo computacional, tempo e infraestrutura especializada.

Já em um Sistema RAG (Retrieval-Augmented Generation), o modelo é apoiado por uma base de dados de documentos reais e atualizáveis, permitindo que o conhecimento seja expandido continuamente sem a necessidade de re-treinamento do modelo. Nesse contexto, as respostas passam a ser mais precisas, contextualizadas e fundamentadas em fontes confiáveis, reduzindo significativamente o risco de alucinações e aproximando a IA de cenários reais de uso em produção.

Etapas de um Sistema RAG

Geração de Embdddings (ingestão):

É o processo em que cada pedaço de informação coletado na ingestão é transformado em vetores numéricos de alta dimensão que representam semanticamente o conteúdo. Esses vetores funcionam como “impressões digitais” do significado do texto, permitindo que o sistema compare similaridade, encontre trechos relevantes e recupere conhecimento com precisão. É uma etapa fundamental porque converte texto em um formato que os modelos conseguem indexar, buscar e correlacionar de forma eficiente.

geração de embedding (acervo pessoal)

Armazenamento Vetorial:

É a etapa em que todos os embeddings gerados são salvos em um vector store, um banco especializado em buscas por similaridade. Nesse repositório, cada vetor fica associado ao seu texto original e a metadados importantes, permitindo buscas rápidas que identificam quais informações são mais relevantes para uma pergunta. Essa camada funciona como a “memória organizada” do sistema RAG, garantindo recuperação precisa e em tempo real.

tabela contendo texto e seu respectivo embedding (acervo pessoal)

Busca Semântica:

É o processo em que a pergunta do usuário é convertida em um embedding e comparada contra todos os vetores armazenados, permitindo encontrar trechos de conhecimento que têm relação de significado, não apenas palavras iguais. Diferente de uma busca tradicional por palavras-chave, a busca semântica entende contexto, intenção e similaridade conceitual, retornando exatamente os pedaços de informação mais relevantes para compor a resposta final do RAG.

busca semântica (acervo pessoal)

A busca semântica pode ser entendida como a representação de textos, perguntas e documentos em um espaço vetorial multidimensional, onde cada ponto do gráfico corresponde a um significado, e não apenas a palavras isoladas. Nesse espaço, conteúdos semanticamente semelhantes ficam próximos entre si, mesmo que utilizem termos diferentes, enquanto significados distintos ficam mais distantes. Quando uma pergunta é feita, ela também é transformada em um vetor e posicionada nesse gráfico; o sistema então busca os pontos mais próximos, identificando os conteúdos com maior similaridade semântica. Essa abordagem permite recuperar informações relevantes com muito mais precisão, servindo como base para sistemas RAG que fornecem respostas contextualizadas e alinhadas ao real significado da pergunta.

grafico representando aproximação semântica das palavras (NVIDIA)

Geração de Resposta:

É a etapa final do RAG em que o modelo de linguagem utiliza os trechos recuperados pela busca semântica como contexto para produzir uma resposta clara, precisa e fundamentada. Aqui o LLM combina o que sabe internamente com as evidências externas fornecidas pelo RAG, garantindo respostas atualizadas, alinhadas ao conteúdo real e com menor risco de alucinação.

geração de resposta (acervo pessoal)

Arquitetura RAG

arquitetura RAG (acervo pessoal)

Arquitetura do Projeto PHP-RAG

Ingestão de Dados

Nesta etapa, foi utilizado um PDF contendo as regras do futebol editado pela CBF, que é processado pela aplicação em PHP, responsável por extrair o conteúdo relevante. Esses dados representam o conhecimento inicial do sistema e são preparados para seguir no pipeline, garantindo que informações não estruturadas possam ser utilizadas posteriormente pela IA.

Vetorização de Dados

Após a ingestão, os textos são enviados para um modelo de embeddings (como via Ollama), que transforma cada trecho em vetores numéricos. Esses vetores representam o significado semântico do conteúdo e são armazenados em um banco de dados vetorial (PostgreSQL com suporte a vetores), permitindo buscas baseadas em similaridade semântica.

Recuperação da Informação (Retrieval)

Quando o usuário faz uma pergunta seja por texto ou voz (convertida em texto) essa pergunta também é vetorizada. Um componente em PHP executa então uma busca semântica no banco vetorial, recuperando os documentos mais relevantes e formando um contexto que representa o conhecimento necessário para responder à pergunta.

Geração de Texto (LLM)

A pergunta original, combinada com o contexto recuperado, é enviada para o modelo de linguagem (LLM). O papel do LLM é interpretar essas informações e gerar uma resposta coerente, precisa e alinhada ao conteúdo real dos documentos, reduzindo alucinações e aumentando a confiabilidade da resposta.

Geração de Áudio (opcional)

Por fim, a resposta gerada em texto pode ser convertida em áudio utilizando um serviço de Text-to-Speech, como o ElevenLabs. Isso permite que o sistema ofereça uma experiência multimodal, entregando a resposta ao usuário tanto em texto quanto em áudio, dependendo do canal de interação escolhido.

arquitetura do projeto PHP-RAG (acervo pessoal)

Show me the code

A seguir, pequenos trechos de código que demonstram como a implementação de um RAG com LLM pode ser simples e objetiva.

  • Serviço de Embedding (vetorização do dado):

serviço de vetorização de texto (acervo pessoal)

  • Serviço de Armazenamento Vetorial (criação de chunks no banco de dados):

serviço de armazenamento de dados vetorizados (acervo pessoal)

  • Srviço de Busca Semântica (nos dados armazenados na ingestão):

serviço de busca semântica de dados (acervo pessoal)

Conclusão

Como vimos ao longo do artigo, a construção de um sistema RAG na prática com PHP não apenas é viável, como também se integra de forma natural a arquiteturas já consolidadas no ecossistema backend. Ao combinar ingestão de dados, vetorização, busca semântica e geração de respostas com LLMs, conseguimos transformar documentos estáticos em uma base de conhecimento dinâmica, atualizável e confiável. Esse modelo reduz drasticamente alucinações, elimina a necessidade de re-treinamentos constantes e abre espaço para aplicações inteligentes realmente alinhadas ao contexto do negócio. No fim, o RAG mostra que o valor da IA não está apenas no modelo, mas na forma como conectamos dados reais, infraestrutura e código e o PHP pode, sim, ocupar esse papel de protagonismo.

Github

Para um melhor entendimento de como foi construído o PHPRAG, segue um repositório de estudos, no qual aplico ideias e novos conhecimentos para aprendizado pessoal.

https://github.com/lucenarenato/phprag 

#PHP #RAG #LLM #AI #Backend #OpenSource #ArquiteturaDeSoftware #BuscaSemantica #InteligenciaArtificial

Fonte: https://www.linkedin.com/pulse/construindo-um-rag-com-php


1

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

Laravel (227) PHP (151) linux (124) Variados (110) ubuntu (58) Dicas (58) developer (48) postgresql (45) database (44) sql (42) Docker (32) front-end (31) mysql (31) devops (26) webdev (24) programming (23) tecnologia (19) eloquent (19) aws (19) dba (18) OUTROS (17) backend (16) laravelphp (16) debian (12) dev (12) 100DaysOfCode (10) git (10) react (10) reactjs (10) inteligencia-artificial (9) PHP Swoole (9) node (9) javascript (9) nginx (9) Architecture (8) linux-tools (8) vue (7) github (7) ciencia (7) webservice (6) jwt (6) vim (6) windows (6) arquitetura (6) nodejs (6) api (6) vscode (6) reactnative (5) rest (5) DevSecOps (5) servers (5) apache (5) macox (5) s3 (5) authentication (5) ia (5) autenticacao (4) shell (4) mongodb (4) angular (4) artigo (4) wsl (4) Swoole (4) lets-encrypt (4) query (4) Raspberry (4) angularjs (4) inteligenciadedados (4) Padrao de design (4) google (4) npm (4) openai (4) jenkins (4) Kubernetes (4) gitlab (4) opensource (4) mariadb (4) containers (3) json (3) authorization (3) phpswoole (3) ddd (3) blade (3) terminal (3) log (3) mac (3) fedora (3) web (2) jobs (3) websocket (3) ssh (3) bash (3) hardware (3) tests (3) macos (3) db (3) politica (3) script (3) performance (3) js (3) mysqli (3) Black Hat (3) RabbitMQ (3) educacao (3) intel (3) CMS (2) sail (3) artificialintelligence (2) security (2) bancodedados (2) tailwind (2) homeOffice (2) html (2) openswoole (2) java (2) saude (1) seguranca (2) auth (2) cron (2) phpunit (2) kube (2) multiple_authen (2) policia (2) neovim (2) golang (2) noticias (2) livros (2) Transcribe (2) ElonMusk (2) redis (2) claude (2) ArchLinux (2) JQuery (2) phpfpm (2) autorizacao (2) monitoring (2) laptop (2) gnome (2) powerbi (2) telefonia (2) nvm (2) imagick (2) maps (2) colors (2) Passport (2) webhook (2) microservices (2) Curisidades (2) Solid (2) zsh (2) Go (2) BigLinux (2) POO (2) LazyVim (2) gource (2) Python (2) Oauth2 (2) android (2) unix (2) magento (2) iot (2) ffmpeg (2) combustivel (2) community (1) Samurai (1) payment (1) messaging (1) Jesus (1) flutter (1) Migration (1) workflow (1) cqrs (1) kitematic (1) geospacial (1) yeshua (1) data (1) sonarqube (1) Axios (1) pipelines (1) Mozilla (1) kvm (1) GitOps (1) sqlite (1) podcast (1) n8n (1) LaravelFilament (1) God (1) DesenvolvimentoProfissional (1) sw (1) bigtech (1) postgres (1) NoCookies (1) LeetCode (1) governancadedados (1) prf (1) nosql (1) Lideranca (1) Hackers (1) Bots (1) pytorch (1) nuxt (1) liquid (1) ec2 (1) transaction (1) c4 (1) rancher (1) algoritimo (1) Observability (1) Elasticsearch (1) translate (1) certbot (1) Oh My Zsh (1) ibm (1) escopos (1) usb (1) ckeditor (1) API_KEY_GOOGLE_MAPS (1) Manjaro (1) vicuna (1) coding (1) rust (1) markdown (1) JasperReports (1) Fibonacci (1) Filament (1) compactar (1) paypal (1) microg (1) forcas armadas (1) militar (1) fullsta (1) smartphones (1) automacao (1) Monitor (1) zend (1) spaceship (1) PKCE (1) l2tp (1) Glacier (1) laraveloctane (1) Deus (1) binaural (1) gpt (1) bolsonaro (1) privacidade (1) linkedin (1) documentation (1) brain (1) adb (1) nvidia (1) host (1) ecommerce (1) c4-models (1) altadisponibilidade (1) octane (1) lucena (1) http (1) TypeScript (1) chatgpt (1) idiomas (1) eventdrive (1) uuid (1) restfull (1) aplicativo (1) optimization (1) mapas (1) Fetch (1) collections (1) RustLang (1) matematica (1) MeioAmbiente (1) firefox (1) composer (1) scheduling (1) Asahi (1) pendrive (1) microservice (1) front (1) cor (1) auth (1) modelagemdedados (1) k8s (1) gasolina (1) wsl2 (1) csv (1) soap (1) piada (1) KubeCon (1) zorin-os (1) spring-boot (1) backup (1) playwright (1) Deepin (1) storage (1) benchmark (1) networking (1) Swoole (1) biologia (1) node-red (1) LETSENCRYPT (1) Grunt (1) Diagramas (1) boot (1) haru (1) dracula (1) TrabalhoEmEquipe (1) Brasil (1) queue (1) agi (1) llama (1) hotfix (1) economia (1) transcription (1) cache (1) Amazon (1) October (1) lumen (1) Hyperf (1) replication (1) faceapp (1) vala (1) cloudstack (1) rpi (1) apple (1) oracle (1) iode (1) ffaa (1) vpn (1) ArquiteturaDeSoftware (1) Passwordless (1) memcached (1) flow (1) compression (1) athena (1) front (1) wine (1) covid19 (0) services (1) phpjasper (1) models (1) kali-linux (1) geojson (1) yarn (1) picpay (1) Monolith (1) banco (1) PNPM (1) Desenvolvedor (1) Structurizr (1) symfony (1) presenter (1) lider (1) guard (1) tensorflow (1) bootstrap (1) nuance (1) historia (1) dropbox (1) traefik (1) bug (1) akitando (1) llm (1) htm (1) transformers (1) cavalotroia (1) odd (1) m1 (1) Error (1) cinnamon (1) repmgr (1) federal (1) ruby (1) AppSec (1) orm (1) controllers (0) OOD (0)

New Articles



Get Latest Updates by Email