Correspondência de CV
Um fluxo que compara currículos com requisitos, calcula correspondências e retorna o candidato mais adequado.
🧩 Visão Geral
O fluxo automatiza a comparação de currículos (CVs) de candidatos com um conjunto de requisitos definidos pelo usuário. Ele recupera documentos do Google Drive, divide o texto em partes menores, gera embeddings, armazena esses embeddings em um banco de dados vetorial Chroma, recupera os CVs mais relevantes, extrai dados estruturados, monta prompts a partir das entradas do usuário e, por fim, gera uma recomendação do candidato mais adequado usando um modelo da OpenAI.
⚙️ Funcionalidades Principais
- Recupera e processa arquivos de CV de uma pasta específica do Google Drive.
- Divide o texto do CV em partes menores com reconhecimento de idioma.
- Gera embeddings tanto para ingestão quanto para busca usando OpenAI Embeddings.
- Armazena embeddings no Chroma e recupera os CVs mais pertinentes.
- Converte os CVs recuperados em texto simples.
- Monta prompts dinâmicos com base nas entradas do usuário (educação, experiência etc.).
- Gera instruções de correspondência usando um modelo da OpenAI.
- Exibe a recomendação final no chat.
🔄 Etapas do Fluxo
| Nome do Componente | Papel no Fluxo | Entradas Principais | Saídas Principais |
|---|---|---|---|
| Obtener CV | Lê arquivos de CV do Google Drive e envia ao pipeline. | Caminho da pasta no Drive, parâmetros de seleção. | Conteúdo do CV como Data. |
| Language Recursive Text Splitter | Divide o texto do CV em partes menores com reconhecimento de idioma. | Data do CV. | Data fragmentado. |
| OpenAI Embeddings (ingest) | Cria embeddings para os fragmentos a serem armazenados no banco vetorial. | Data fragmentado. | Vetores de embedding. |
| Subir a DB | Armazena fragmentos e embeddings no Chroma. | Data fragmentado, vetores. | Embeddings persistidos no Chroma. |
| OpenAI Embeddings (search) | Cria embeddings para a consulta de busca (CV). | Data da consulta. | Vetores de busca. |
| Cargar de DB | Recupera os CVs mais semelhantes no Chroma. | Data da consulta, vetores de busca. | Resultados da busca como Data. |
| ParseData | Converte os CVs recuperados em texto simples. | Data recuperado. | Texto puro (Data). |
| Carrera (Entrada de Texto) | Captura a área de estudo do candidato. | Entrada do usuário. | Texto. |
| Certificados (Entrada de Texto) | Captura certificações do candidato. | Entrada do usuário. | Texto. |
| Educación (Entrada de Texto) | Captura informações educacionais. | Entrada do usuário. | Texto. |
| Experiencia (Entrada de Texto) | Captura experiência profissional. | Entrada do usuário. | Texto. |
| Habilidades (Entrada de Texto) | Captura habilidades do candidato. | Entrada do usuário. | Texto. |
| Requisitos | Monta um template de prompt com placeholders para as entradas do usuário. | Carrera, Certificados, Educación, Experiencia, Habilidades. | Prompt com placeholders. |
| Instrucciones | Gera o prompt final contendo o texto do CV e os requisitos. | Texto do CV, prompt dos Requisitos. | Prompt final. |
| OpenAI Model | Gera a recomendação com base no prompt. | Prompt final. | Texto gerado. |
| Chat Output | Exibe a recomendação no playground. | Texto gerado. | Mensagem visível para o usuário. |
Todos os componentes são executados sequencialmente conforme definido pelas conexões no fluxo.
🧠 Observações
- Credenciais: São necessárias credenciais válidas do Google Drive e da OpenAI.
- Embeddings: O fluxo usa dois componentes de embeddings — um para ingestão e outro para busca.
- Vector Store: O Chroma é configurado para persistir dados no diretório
CV_matche retornar até 10 documentos semelhantes. - Fragmentação (Chunking): O divisor usa tamanho de 1000 tokens com sobreposição de 200 tokens para preservar contexto.
- Geração de Prompt: O componente Requisitos insere dinamicamente as informações do usuário em um template que descreve o que o CV ideal deve conter.
- Tratamento de Erros: Caso nenhum CV relevante seja encontrado, o ParseData retorna texto vazio, e o modelo da OpenAI responderá de acordo.
- Performance: Ingestão e geração de embeddings são as etapas mais custosas; caching está ativado para evitar recomputações desnecessárias.
Este documento fornece uma visão funcional e objetiva do fluxo, seus componentes e interações, sem entrar nos detalhes internos de implementação.