0% acharam este documento útil (0 voto)
1 visualizações6 páginas

Tutorial Rag Langchain Nodejs Completo

O documento é um tutorial completo sobre como criar uma aplicação RAG (Retrieval-Augmented Generation) utilizando Node.js, LangChain e OpenAI. Ele abrange desde a configuração do ambiente até a implementação de funcionalidades como leitura de PDFs, criação de embeddings e um chat inteligente. O guia inclui etapas detalhadas para a construção do projeto, instalação de dependências e execução do sistema.

Enviado por

benjamin.amaral
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
1 visualizações6 páginas

Tutorial Rag Langchain Nodejs Completo

O documento é um tutorial completo sobre como criar uma aplicação RAG (Retrieval-Augmented Generation) utilizando Node.js, LangChain e OpenAI. Ele abrange desde a configuração do ambiente até a implementação de funcionalidades como leitura de PDFs, criação de embeddings e um chat inteligente. O guia inclui etapas detalhadas para a construção do projeto, instalação de dependências e execução do sistema.

Enviado por

benjamin.amaral
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Tutorial Completo — RAG com

LangChain e [Link]
Baseado no minicurso: IA Além do ChatGPT - RAG com LangChain e [Link]
Autor: DECIO FERNANDO MATTEI – [Link]@[Link]

Este documento apresenta um guia completo para criar uma aplicação RAG
(Retrieval-Augmented Generation / Geração Aumentada por Retorno) utilizando [Link],
LangChain e OpenAI.

A implementação inclui:
• Leitura de PDFs
• Criação de embeddings
• Busca vetorial
• Integração com GPT
• Chat inteligente baseado em documentos

Pré-requisitos
• Ambiente com [Link] instalado
• Chave de API Open AI com crédito disponível

Conceitos Fundamentais

RAG (Retrieval-Augmented Generation)


Busca informações relevantes antes de gerar respostas.
Em português: Geração Aumentada por Recuperação

Embeddings
Representações matemáticas de textos.

Chunking
Divisão de documentos em pequenos blocos.

Vector Store
Banco especializado em busca vetorial.

Retriever
Busca os chunks mais relevantes.
1. Criando o Projeto

Nesta etapa criamos a estrutura inicial do projeto [Link].


O comando abaixo cria a pasta e inicializa o [Link].

mkdir langchain-rag
cd langchain-rag
npm init -y

2. Iniciando Editor de Código


Em nosso estudo utilizaremos VS Code

3. Instalando Dependências

Agora instalamos as bibliotecas necessárias para construir o sistema RAG.

npm install dotenv @langchain/classic @langchain/core @langchain/openai


@langchain/textsplitters langchain pdf-parse@1.1.1
4. Configurando [Link]

Precisamos habilitar ESModules no [Link].

{
"name": "langchain-rag",
"version": "1.0.0",
"type": "module"
}

5. Criando o .env

O .env armazena sua API Key da OpenAI.

OPENAI_API_KEY=sua_chave_aqui

6. Estrutura do Projeto

Após as configurações iniciais sua estrutura ficará assim.

langchain-rag/

├── node_modules/
├── [Link]
├── .env
├── [Link]
└── [Link]

7. Importações

Importamos bibliotecas para PDF, embeddings, GPT e vector store.

import "dotenv/config";
import fs from "fs";
import readline from "node:readline/promises";
import pdf from "pdf-parse/lib/[Link]";
import { ChatOpenAI, OpenAIEmbeddings } from "@langchain/openai";
import { RecursiveCharacterTextSplitter } from "@langchain/textsplitters";
import { MemoryVectorStore } from "@langchain/classic/vectorstores/memory";
8. Função de Leitura do PDF
Essa função abre o PDF e extrai o texto.

async function loadPdfText(pdfPath) {


const pdfBuffer = [Link](pdfPath);
const parsed = await pdf(pdfBuffer);
return [Link] || "";
}

9. Chunking
Dividimos o documento em pequenos blocos chamados chunks.

const PDF_PATH = "[Link]";


const CHUNK_SIZE = 1200;
const CHUNK_OVERLAP = 200;

10. Split do Texto


O splitter cria automaticamente os chunks.

const pdfText = await loadPdfText(PDF_PATH);

const splitter = new RecursiveCharacterTextSplitter({


chunkSize: CHUNK_SIZE,
chunkOverlap: CHUNK_OVERLAP,
});

const chunks = await [Link](pdfText);

11. Embeddings
Embeddings transformam texto em vetores matemáticos.

const embeddings = new OpenAIEmbeddings({


model: "text-embedding-3-small",
openAIApiKey: [Link].OPENAI_API_KEY,
});

12. Banco Vetorial


Armazenamos os embeddings no Vector Store.

const vectorStore = await [Link](


chunks,
[Link](() => ({})),
embeddings
);

13. Retriever
O retriever busca os chunks mais relevantes.

const TOP_K = 4;

const retriever = [Link](TOP_K);

14. GPT
Inicializamos o modelo GPT.

const model = new ChatOpenAI({


model: "gpt-4.1-mini",
temperature: 0,
openAIApiKey: [Link].OPENAI_API_KEY,
});

15. Chat Terminal


Criamos uma interface interativa no terminal.

[Link]("PDF carregado!");

const rl = [Link]({
input: [Link],
output: [Link],
});

16. answerQuestion()
Função principal do sistema RAG.

async function answerQuestion(question, retriever, model) {

const relevantDocs = await [Link](question);

const context = relevantDocs


.map(doc => [Link])
.join("\n\n");

const prompt = `
Você é um assistente que responde perguntas usando o contexto abaixo.

Contexto:
${context}
Pergunta:
${question}
`;

const response = await [Link](prompt);

[Link]("\nResposta:\n");

[Link]([Link]);
}

17. Loop Principal


Mantém o chat funcionando continuamente.

try {

while (true) {

const question = (
await [Link]("Pergunta> ")
).trim();

if (!question) continue;

const normalized = [Link]();

if (
normalized === "sair" ||
normalized === "exit" ||
normalized === "quit"
) {
break;
}

await answerQuestion(
question,
retriever,
model
);

[Link]("\n----------------\n");
}

} finally {

[Link]();
}

18. Executando o Projeto


Agora execute o sistema.

node [Link]

Você também pode gostar