Correspondência de CV
Um fluxo que compara currículos com requisitos, calcula correspondências e devolve o candidato com maior ajuste.
+2
graph TD
%%{init: {'theme': 'mc','layout': 'elk'}}%%
TextInput-dvpjv[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Carrera]
style TextInput-dvpjv stroke:#a170ff
TextInput-s2vgd[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Certificados]
style TextInput-s2vgd stroke:#a170ff
TextInput-oz3io[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Habilidades]
style TextInput-oz3io stroke:#a170ff
TextInput-6r3sb[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Experiencia]
style TextInput-6r3sb stroke:#a170ff
TextInput-ep0wz[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Educación]
style TextInput-ep0wz stroke:#a170ff
ChatOutput-zlpn1[<div><img alt="logo" src="/_astro/messages-square.BaSDmT6g.svg" style="height: 20px !important;width: 20px !important"/></div>Chat Output]
style ChatOutput-zlpn1 stroke:#a170ff
OpenAIEmbeddings-5myel[<div><img alt="logo" src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI Embeddings]
style OpenAIEmbeddings-5myel stroke:#a170ff
GDriveFilesComponent-3xa20[<div><img alt="logo" src="/_astro/google_drive.wKmDsV2c.svg" style="height: 20px !important;width: 20px !important"/></div>Obtener CV]
style GDriveFilesComponent-3xa20 stroke:#a170ff
Prompt-3a8sl[<div><img alt="logo" src="/_astro/square-terminal.BMOXc-nZ.svg" style="height: 20px !important;width: 20px !important"/></div>Requisitos]
style Prompt-3a8sl stroke:#a170ff
OpenAIEmbeddings-6p7a2[<div><img alt="logo" src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI Embeddings2]
style OpenAIEmbeddings-6p7a2 stroke:#a170ff
LanguageRecursiveTextSplitter-rweqg[Language Recursive Text Splitter]
style LanguageRecursiveTextSplitter-rweqg stroke:#a170ff
AstraDB-un98t[Astra DB]
style AstraDB-un98t stroke:#a170ff
AstraDB-un1f3[Astra DB2]
style AstraDB-un1f3 stroke:#a170ff
LanggraphRAGAgent-cgjw7[RAG Agent]
style LanggraphRAGAgent-cgjw7 stroke:#a170ff
OpenAIModel-448zp[<div><img alt="logo" src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI]
style OpenAIModel-448zp stroke:#a170ff
TextInput-dvpjv -.- Prompt-3a8sl
linkStyle 0 stroke:#a170ff
TextInput-s2vgd -.- Prompt-3a8sl
linkStyle 1 stroke:#a170ff
TextInput-ep0wz -.- Prompt-3a8sl
linkStyle 2 stroke:#a170ff
TextInput-6r3sb -.- Prompt-3a8sl
linkStyle 3 stroke:#a170ff
TextInput-oz3io -.- Prompt-3a8sl
linkStyle 4 stroke:#a170ff
GDriveFilesComponent-3xa20 -.- LanguageRecursiveTextSplitter-rweqg
linkStyle 5 stroke:#a170ff
LanguageRecursiveTextSplitter-rweqg -.- AstraDB-un98t
linkStyle 6 stroke:#a170ff
OpenAIEmbeddings-5myel -.- AstraDB-un98t
linkStyle 7 stroke:#a170ff
LanggraphRAGAgent-cgjw7 -.- ChatOutput-zlpn1
linkStyle 8 stroke:#a170ff
OpenAIEmbeddings-6p7a2 -.- AstraDB-un1f3
linkStyle 9 stroke:#a170ff
AstraDB-un1f3 -.- LanggraphRAGAgent-cgjw7
linkStyle 10 stroke:#a170ff
Prompt-3a8sl -.- LanggraphRAGAgent-cgjw7
linkStyle 11 stroke:#a170ff
OpenAIModel-448zp -.- LanggraphRAGAgent-cgjw7
linkStyle 12 stroke:#a170ff
Documentação do Fluxo de Trabalho – Correspondência de CV
🧩 Descrição Geral
O fluxo automatiza a comparação de currículos com requisitos definidos pelo usuário. Ele extrai dados de CVs armazenados no Google Drive, cria embeddings usando a API do OpenAI, armazena esses embeddings em uma coleção Astra DB e, quando um usuário fornece critérios de seleção, utiliza um agente RAG para recuperar o CV mais adequado e gerar a resposta em linguagem natural.
⚙️ Funcionalidades Principais
- Coleta de requisitos – Permite ao usuário especificar formação, carreira, experiência, certificados e habilidades.
- Integração com Google Drive – Busca os arquivos de CV disponíveis na pasta designada e os converte em dados processáveis.
- Geração de embeddings – Utiliza o modelo de embeddings da OpenAI para transformar textos em vetores.
- Armazenamento vetorial – Persiste os embeddings em uma coleção Astra DB, facilitando buscas por similaridade.
- RAG com agente Langgraph – Recupera documentos relevantes, consulta o modelo LLM e produz a resposta final em formato de chat.
🔄 Passos do Fluxo de Trabalho
| Nome do Componente | Papel no Fluxo | Entradas Principais | Saídas Principais |
|---|---|---|---|
| Carrera | Entrada de usuário – carreira desejada. | Texto livre (ex.: “Computer Science Engineer”) | Texto “Carrera” |
| Certificados | Entrada de usuário – certificados requeridos. | Texto livre (ex.: “Engineer”) | Texto “Certificados” |
| Educación | Entrada de usuário – formação acadêmica. | Texto livre (ex.: “University”) | Texto “Educación” |
| Experiencia | Entrada de usuário – anos de experiência. | Texto livre (ex.: “1 year”) | Texto “Experiencia” |
| Habilidades | Entrada de usuário – habilidades técnicas. | Texto livre (ex.: “Python and C#”) | Texto “Habilidades” |
| Requisitos (Prompt) | Constrói a mensagem de solicitação que será enviada ao agente. | Dados de “Carrera”, “Certificados”, “Educación”, “Experiencia”, “Habilidades” | Mensagem formatada “Requisitos” |
| Obtener CV (GDriveFilesComponent) | Busca os arquivos de CV na pasta “CVs” no Google Drive e os disponibiliza. | N/A (configuração de pasta e credenciais) | Dados brutos dos arquivos (Data) |
| Language Recursive Text Splitter | Divide os textos dos CVs em blocos menores para facilitar a tokenização. | Dados de CV (Data) | Blocos de texto (Data) |
| OpenAI Embeddings (OpenAI Embeddings 1) | Cria embeddings para os blocos de texto obtidos do split. | Blocos de texto (Data) | Vetores de embeddings (Embeddings) |
| Astra DB (Astra DB 1) | Armazena os embeddings gerados na coleção “CVs” do Astra DB. | Vetores de embeddings (Embeddings) | Resultado de ingestão (None/Success) |
| OpenAI Embeddings (OpenAI Embeddings 2) | Cria embeddings que serão usados para a recuperação de documentos. | Dados de CV (Data) | Vetores de embeddings (Embeddings) |
| Astra DB (Astra DB 2) | Cria o repositório de recuperação (retriever) que o agente irá consultar. | Vetores de embeddings (Embeddings) | Retriever (Retriever) |
| RAG Agent (LanggraphRAGAgent) | Executa a lógica de RAG: recupera CVs relevantes, consulta o LLM e gera a resposta. | Mensagem “Requisitos”, LLM (OpenAI), Retriever (Astra DB 2) | Mensagem de resposta (Message) |
| OpenAI (OpenAI) | Modelo de linguagem que gera o texto final a partir da consulta e dos documentos recuperados. | Entrada do agente (texto) | Mensagem de saída (Message) |
| Chat Output (Chat Output) | Exibe a resposta do agente no playground. | Mensagem gerada (Message) | Mensagem exibida (Message) |
Observação: O passo de ingestão de CVs (GDrive → Split → Embeddings → Astra DB) ocorre apenas uma vez ou quando há atualizações nos arquivos de CV. Os demais passos são executados a cada nova requisição do usuário.
🧠 Notas
- A coleta de CVs depende de permissões de leitura no Google Drive e da existência da pasta “CVs”.
- Os embeddings são gerados com o modelo text‑embedding‑3‑small por padrão, mas podem ser alterados na configuração do componente OpenAI Embeddings.
- O repositório Astra DB suporta buscas por similaridade e MMR (Max Marginal Relevance), podendo ser configurado conforme necessidade.
- O agente LanggraphRAG inclui verificações de qualidade, verificação de document relevance e detecção de alucinações, garantindo respostas confiáveis.
- O fluxo não inclui lógica explícita de tratamento de erros; erros de conexão ou limites de token são gerenciados internamente pelos componentes de modelo e storage.
- Todos os componentes operam em modo de lote padrão (batch mode desativado), podendo ser habilitado para processar múltiplos registros simultaneamente.