<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Rafael Scheidt</title>
    <description>The latest articles on Forem by Rafael Scheidt (@rafael_scheidt_d4be592651).</description>
    <link>https://forem.com/rafael_scheidt_d4be592651</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3569199%2F0d54dfc2-b10f-4979-9a4f-2257f2622d7d.jpg</url>
      <title>Forem: Rafael Scheidt</title>
      <link>https://forem.com/rafael_scheidt_d4be592651</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rafael_scheidt_d4be592651"/>
    <language>en</language>
    <item>
      <title>IA com propósito: como construir seu próprio ChatGPT usando RAG + OpenAI (Como ensinar a IA a falar a língua da sua organização)</title>
      <dc:creator>Rafael Scheidt</dc:creator>
      <pubDate>Thu, 16 Oct 2025 14:35:24 +0000</pubDate>
      <link>https://forem.com/rafael_scheidt_d4be592651/ia-com-proposito-como-construir-seu-proprio-chatgpt-usando-rag-openai-como-ensinar-a-ia-a-falar-1boi</link>
      <guid>https://forem.com/rafael_scheidt_d4be592651/ia-com-proposito-como-construir-seu-proprio-chatgpt-usando-rag-openai-como-ensinar-a-ia-a-falar-1boi</guid>
      <description>&lt;p&gt;Nos últimos meses, o mundo corporativo tem testemunhado uma verdadeira corrida pela adoção de inteligência artificial (IA). Empresas de todos os tamanhos estão buscando integrar IA em seus produtos e processos, muitas vezes na esperança de replicar o sucesso de ferramentas como o ChatGPT.&lt;/p&gt;

&lt;p&gt;Mas há um dado que merece atenção:&lt;/p&gt;

&lt;p&gt;Segundo o MIT, 95% dos projetos de IA falham — e a principal razão não é técnica, mas estratégica.&lt;br&gt;
A maioria das empresas tenta começar pelo modelo, quando na verdade o ponto de partida deve ser o dado. Não é sobre “ter um GPT”, mas sobre ensinar a IA a falar a língua da sua organização. E é aqui que entra um dos conceitos mais transformadores do momento: o RAG (Retrieval-Augmented Generation).&lt;/p&gt;

&lt;p&gt;🔍 O que é RAG e por que ele importa?&lt;br&gt;
RAG é uma técnica que combina busca inteligente (retrieval) com geração contextualizada (generation). Em vez de treinar um modelo do zero — algo caro e complexo — o RAG permite usar um modelo existente (como o GPT-4) e conectá-lo aos seus próprios dados corporativos.&lt;/p&gt;

&lt;p&gt;Funciona assim:&lt;/p&gt;

&lt;p&gt;A IA busca informações relevantes dentro do seu dataset (documentos, planilhas, PDFs, base de conhecimento etc.).&lt;br&gt;
Ela usa esse contexto para gerar uma resposta personalizada e fundamentada — sem alucinar.&lt;/p&gt;

&lt;p&gt;É, em outras palavras, o cérebro do GPT com a memória da sua empresa.&lt;/p&gt;

&lt;p&gt;Imagine poder perguntar:&lt;/p&gt;

&lt;p&gt;“Quais são os principais riscos de segurança do nosso sistema de saúde?” ou “Qual foi a evolução dos indicadores financeiros do último trimestre?”&lt;br&gt;
E obter uma resposta clara, fundamentada e 100% baseada nos seus dados. Esse é o poder do RAG.&lt;/p&gt;

&lt;p&gt;💡 Um exemplo prático com Google Colab&lt;br&gt;
A seguir, mostro como você pode criar seu próprio ChatGPT corporativo em minutos, usando:&lt;/p&gt;

&lt;p&gt;OpenAI (GPT-4o-mini) para geração de respostas;&lt;br&gt;
ChromaDB para armazenamento vetorial (seu “banco de memória semântica”);&lt;br&gt;
Google Colab para rodar tudo facilmente, sem precisar configurar servidores.&lt;/p&gt;

&lt;p&gt;1️⃣ Instalação das dependências&lt;br&gt;
Primeiro, instalamos as bibliotecas necessárias:&lt;/p&gt;

&lt;p&gt;!pip install -q chromadb openai pandas rich &lt;br&gt;
chromadb: o banco de dados vetorial que guarda os embeddings (representações matemáticas dos textos).&lt;br&gt;
openai: cliente oficial para usar os modelos de linguagem e de embeddings.&lt;br&gt;
pandas: para manipular os dados do CSV.&lt;br&gt;
rich: apenas para formatações visuais mais elegantes nos logs.&lt;/p&gt;

&lt;p&gt;2️⃣ Configuração inicial&lt;br&gt;
Em seguida, configuramos o ambiente e a chave de API da OpenAI. No Colab, é possível colar a chave manualmente (sem salvá-la no Drive):&lt;/p&gt;

&lt;p&gt;from openai import OpenAI&lt;br&gt;
from chromadb.config import Settings&lt;br&gt;
import pandas as pd, os, uuid, time, getpass&lt;/p&gt;

&lt;p&gt;if 'OPENAI_API_KEY' not in os.environ:&lt;br&gt;
    os.environ['OPENAI_API_KEY'] = getpass.getpass('Cole sua OPENAI_API_KEY: ')&lt;br&gt;
print("✅ OPENAI_API_KEY configurada com sucesso")&lt;/p&gt;

&lt;p&gt;PERSIST_DIR = "/content/chroma_artigos_openai"&lt;br&gt;
CSV_PATH = "/content/artigosNeoPed.csv"&lt;br&gt;
COLLECTION_NAME = "artigos_openai" &lt;br&gt;
O PERSIST_DIR é onde o ChromaDB vai salvar as informações. Assim, mesmo que o notebook seja reiniciado, o conhecimento continua disponível.&lt;/p&gt;

&lt;p&gt;3️⃣ Conexão com OpenAI e ChromaDB&lt;br&gt;
Agora inicializamos os clientes:&lt;/p&gt;

&lt;p&gt;client_oai = OpenAI()&lt;br&gt;
import chromadb&lt;br&gt;
chroma_client = chromadb.Client(Settings(persist_directory=PERSIST_DIR, is_persistent=True))&lt;br&gt;
col = chroma_client.get_or_create_collection(COLLECTION_NAME)&lt;br&gt;
print("✅ Collection pronta") &lt;br&gt;
O OpenAI() é o conector para gerar embeddings e respostas.&lt;br&gt;
O ChromaDB é o responsável por armazenar esses embeddings de forma pesquisável.&lt;/p&gt;

&lt;p&gt;4️⃣ Ingestão de dados (indexação)&lt;br&gt;
Aqui acontece a mágica da construção do seu dataset. O código abaixo lê o CSV, cria embeddings (representações vetoriais) de cada artigo e os adiciona ao Chroma:&lt;/p&gt;

&lt;p&gt;df = pd.read_csv(CSV_PATH, sep=";", encoding="utf-8", dtype=str).fillna("")&lt;br&gt;
batch_size = 20&lt;br&gt;
total = 0&lt;/p&gt;

&lt;p&gt;for i in range(0, len(df), batch_size):&lt;br&gt;
    chunk = df.iloc[i:i+batch_size]&lt;br&gt;
    ids, texts, metas = [], [], []&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for _, row in chunk.iterrows():
    doc_id = str(uuid.uuid4())
    titulo = row.get("Título do artigo", "")
    resumo = row.get("Resumo Intro", "")
    conteudo = row.get("Conteúdo do artigo", "")
    text = f"{titulo}\n{resumo}\n{conteudo}".strip()
    if not text:
        continue

    ids.append(doc_id)
    texts.append(text[:8000])
    metas.append({
        "titulo": titulo,
        "fonte": row.get("Fonte", ""),
        "data": row.get("Data da publicação", ""),
        "autor": row.get("Autor", ""),
        "categoria": row.get("Categoria", ""),
        "link": row.get("Link fonte", "")
    })

embeddings = client_oai.embeddings.create(
    model="text-embedding-3-small",
    input=texts
).data
vectors = [e.embedding for e in embeddings]

col.add(ids=ids, documents=texts, metadatas=metas, embeddings=vectors)
total += len(texts)
print(f"✅ Inseridos {total} artigos") 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;🔹 Cada linha do CSV é transformada em um vetor numérico (embedding). 🔹 Esses vetores representam semanticamente o conteúdo dos artigos. 🔹 Depois, o ChromaDB passa a “entender” o contexto e buscar por similaridade.&lt;/p&gt;

&lt;p&gt;5️⃣ Função de busca inteligente&lt;br&gt;
Quando o usuário faz uma pergunta, ela também é transformada em embedding. O ChromaDB então busca os textos mais próximos semanticamente:&lt;/p&gt;

&lt;p&gt;def search_articles(query: str, k: int = 5):&lt;br&gt;
    emb = client_oai.embeddings.create(model="text-embedding-3-small", input=[query]).data[0].embedding&lt;br&gt;
    res = col.query(query_embeddings=[emb], n_results=k, include=["metadatas", "documents", "distances"])&lt;br&gt;
    out = []&lt;br&gt;
    for i in range(len(res["ids"][0])):&lt;br&gt;
        out.append({&lt;br&gt;
            "score": 1 - float(res["distances"][0][i]),&lt;br&gt;
            "meta": res["metadatas"][0][i],&lt;br&gt;
            "text": res["documents"][0][i]&lt;br&gt;
        })&lt;br&gt;
    return out &lt;br&gt;
Aqui o parâmetro k define quantos documentos serão retornados (por padrão, 5).&lt;/p&gt;

&lt;p&gt;6️⃣ Geração de respostas contextualizadas&lt;br&gt;
Após recuperar os artigos mais relevantes, passamos os textos ao GPT, que gera uma resposta com base apenas nesses documentos:&lt;/p&gt;

&lt;p&gt;def local_generate(question: str, contexts, max_chars_per_doc=800):&lt;br&gt;
    ctx = "\n\n".join([&lt;br&gt;
        f"[Artigo {i+1}] {c['meta']['titulo']}\n{c['text'][:max_chars_per_doc]}"&lt;br&gt;
        for i, c in enumerate(contexts)&lt;br&gt;
    ])&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prompt = f"""
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Você é um assistente especializado em medicina neonatal e artigos científicos.&lt;br&gt;
Responda de forma detalhada com base apenas nas informações abaixo.&lt;/p&gt;

&lt;p&gt;Pergunta: {question}&lt;/p&gt;

&lt;p&gt;Artigos:&lt;br&gt;
{ctx}&lt;/p&gt;

&lt;p&gt;Resposta:&lt;br&gt;
"""&lt;br&gt;
    completion = client_oai.chat.completions.create(&lt;br&gt;
        model="gpt-4o-mini",&lt;br&gt;
        messages=[{"role": "user", "content": prompt}],&lt;br&gt;
        temperature=0.2,&lt;br&gt;
        max_tokens=800&lt;br&gt;
    )&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return completion.choices[0].message.content.strip() 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;temperature=0.2 → deixa o modelo mais técnico e menos criativo.&lt;br&gt;
max_tokens=800 → controla o tamanho máximo da resposta.&lt;/p&gt;

&lt;p&gt;7️⃣ Fazendo uma pergunta real&lt;br&gt;
Por exemplo:&lt;/p&gt;

&lt;p&gt;query = "Existe algum medicamento que impacta em bebês nascidos com autismo?"&lt;br&gt;
results = search_articles(query, k=4)&lt;/p&gt;

&lt;p&gt;for i, r in enumerate(results, 1):&lt;br&gt;
    meta = r['meta']&lt;br&gt;
    print(f"[{i}] {meta['titulo']} (score={r['score']:.3f})")&lt;br&gt;
    print(f"   🧾 Fonte: {meta.get('fonte','')}")&lt;br&gt;
    print(f"   🔗 Link: {meta.get('link','')}\n")&lt;/p&gt;

&lt;p&gt;answer = local_generate(query, results)&lt;br&gt;
print("\n💬 Resposta gerada:\n", answer) &lt;br&gt;
💬 Exemplo de resposta:&lt;br&gt;
Com base nas informações apresentadas, o uso de certos medicamentos durante a gravidez pode impactar o desenvolvimento neuropsicomotor dos bebês, incluindo um possível aumento do risco de transtornos do espectro autista (TEA)...&lt;br&gt;
(e segue com análise detalhada dos artigos recuperados).&lt;/p&gt;

&lt;p&gt;🔧 Ajustando o comportamento da IA&lt;br&gt;
Você pode adaptar facilmente:&lt;/p&gt;

&lt;p&gt;temperature — para respostas mais técnicas (baixo) ou criativas (alto).&lt;br&gt;
max_chars_per_doc — para controlar quanto texto cada artigo fornece ao prompt.&lt;br&gt;
k — para buscar mais ou menos documentos por vez.&lt;/p&gt;

&lt;p&gt;Esses ajustes são simples, mas fazem grande diferença na qualidade e velocidade da resposta.&lt;/p&gt;

&lt;p&gt;🚀 Conclusão: o valor do RAG está nos dados&lt;br&gt;
O RAG não é apenas uma técnica — é uma estratégia de conhecimento corporativo. Ele permite que empresas usem seus próprios dados para gerar inteligência de forma segura, contextual e escalável.&lt;/p&gt;

&lt;p&gt;Em vez de depender de uma IA genérica, você constrói uma IA com o DNA da sua empresa.&lt;/p&gt;

&lt;p&gt;Como costumo dizer:&lt;/p&gt;

&lt;p&gt;“A verdadeira vantagem competitiva da IA não está nos modelos — está nos dados que a alimentam.”&lt;br&gt;
🔗 Se quiser o notebook completo e funcional, posso compartilhar o link do Google Colab. Basta comentar “quero testar o RAG” e envio o acesso.&lt;/p&gt;

&lt;h1&gt;
  
  
  InteligenciaArtificial #RAG #OpenAI #ChromaDB #DataDriven #MachineLearning #GoogleColab #Inovacao #Python #TechLeadership #AIForBusiness
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/pulse/intelig%25C3%25AAncia-artificial-com-prop%25C3%25B3sito-como-construir-seu-scheidt-vwlyf/" rel="noopener noreferrer"&gt;https://www.linkedin.com/pulse/intelig%25C3%25AAncia-artificial-com-prop%25C3%25B3sito-como-construir-seu-scheidt-vwlyf/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>ai</category>
      <category>openai</category>
      <category>chatgpt</category>
    </item>
  </channel>
</rss>
