Thanks to visit codestin.com
Credit goes to github.com

Skip to content

giovaninogueira/live-rag-dynamodb

Repository files navigation

live-rag-match

Agente de matchmaking serverless com memória real, construído com LangGraph, AWS Lambda, DynamoDB e Amazon OpenSearch Serverless.

Apresentado na live: "Agentes serverless com memória real: LangGraph, Step Functions e DynamoDB na AWS"

Arquitetura

Usuário → API (Lambda Function URL)
            ↓
         LangGraph StateGraph
            ↓
    ┌───────────────────────┐
    │  chat                 │  ← conversa com a Lua (Gemini)
    │  summarization        │  ← extrai perfil estruturado
    │  register_user        │  ← gera UUID, salva DynamoDB + OpenSearch
    │  rag_search           │  ← kNN vetorial no OpenSearch (Gemini Embeddings)
    │  present_matches      │  ← gera explicações personalizadas (Gemini)
    └───────────────────────┘
            ↓
    DynamoDB (3 tabelas)      OpenSearch Serverless
    ├── checkpoints           └── user-profiles (kNN, 3072 dims)
    ├── memory store
    └── chat history

Stack

Camada Tecnologia
Runtime Node.js 20 + TypeScript
Orquestração LangGraph JS (StateGraph)
LLM Gemini 3.5 Flash (@langchain/google-genai)
Embeddings gemini-embedding-001 (3072 dims)
Memória DynamoDB — checkpointer, memory store, chat history
Busca vetorial Amazon OpenSearch Serverless (kNN)
Deploy Serverless Framework v4 + Lambda Function URL

Pré-requisitos

  • Node.js 20+
  • AWS CLI configurado (aws configure)
  • Serverless Framework v4 (npm i -g serverless)
  • Docker (para DynamoDB local)
  • Conta Google AI Studio com API key
  • Collection no Amazon OpenSearch Serverless

Variáveis de ambiente

Crie um arquivo .env na raiz (ou exporte no shell antes do deploy):

export GOOGLE_API_KEY=sua_chave_aqui
export OPENSEARCH_ENDPOINT=https://<id>.aoss.us-east-1.on.aws

O env.yml usa ${env:VARIAVEL} para ler do shell no momento do deploy.

Desenvolvimento local

# Sobe DynamoDB local e cria as tabelas
npm run start:dev

# Em outro terminal — popula perfis de teste no OpenSearch
node scripts/seed-profiles.mjs

A UI fica em ui/index.html — abra direto no browser ou sirva com:

npx serve ui -p 3000

Deploy na AWS

serverless deploy

Após o deploy a saída mostra a URL:

endpoint: https://<id>.lambda-url.us-east-1.on.aws/

Atualize const API em ui/index.html com a nova URL.

Fluxo do grafo

START → chat
          ├── usuário retornando (userId + perfil) → rag_search → present_matches → END
          ├── novo usuário com perfil completo      → summarization → register_user → rag_search → present_matches → END
          └── ainda coletando dados                 → END

Tabelas DynamoDB

Tabela Finalidade
live-rag-match-echo-checkpoints LangGraph checkpointer (estado da conversa por thread_id)
live-rag-match-echo-writes LangGraph writes (pendências do checkpointer)
live-rag-match-echo-memory Memory store — perfil do usuário por user_id
live-rag-match-echo-chat-history Histórico de mensagens por userId + sessionId

Infraestrutura OpenSearch

  • Collection tipo Vector Search no Amazon OpenSearch Serverless
  • Index user-profiles com mapeamento kNN (3072 dims, gemini-embedding-001)
  • Scale-to-zero automático — custo zero quando ocioso
  • Política de acesso: aoss:APIAccessAll para o role do Lambda

Por que essa stack?

O objetivo é demonstrar que não precisamos de infraestrutura complexa para construir um agente de IA com RAG e memória real. Lambda + DynamoDB + OpenSearch Serverless escalam a zero — custo praticamente zero quando em repouso.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors