Documentación del Flujo de Trabajo: Coincidencia de CV
Descripción General
Este flujo de trabajo está diseñado para ayudar a los equipos de reclutamiento a identificar al candidato más compatible dentro de un grupo de postulantes, en función de unos requisitos especificados. Toma como entrada criterios definidos por el usuario (Formación, Carrera, Experiencia, Certificados, Habilidades) y los compara con los CV de los candidatos almacenados en una base de datos vectorial. La salida final es un mensaje en formato de chat que resume el mejor emparejamiento.
Resumen de Componentes
El flujo de trabajo utiliza los siguientes componentes:
- Archivo: Carga los datos de los CV de los candidatos desde archivos subidos.
- CharacterTextSplitter: Divide el texto de los CV en fragmentos más pequeños para generar embeddings de forma eficiente.
- OpenAIEmbeddings: Genera embeddings para los fragmentos de texto utilizando un modelo de OpenAI.
- Componente Chroma VectorStore: Almacena y consulta los embeddings, permitiendo la búsqueda por similitud semántica.
- Entrada de Texto: Permite que el usuario ingrese los requisitos específicos para la selección del candidato (Formación, Carrera, Experiencia, Certificados, Habilidades).
- Prompt: Genera prompts basados en los datos ingresados por el usuario y la información extraída de los CV, para guiar al modelo de lenguaje.
- Modelo OpenAI: Un LLM que procesa los prompts y determina el candidato más compatible.
- Entrada de Chat: Facilita la interacción del usuario mediante preguntas.
- Salida de Chat: Presenta la respuesta del LLM en una interfaz de chat.
- Parsear Datos: Convierte los datos recuperados de la base vectorial en un formato utilizable por el prompt.
Descripción Detallada de los Componentes
Archivo
- Descripción: Carga datos desde archivos subidos (.txt, .md, .csv, etc.).
- Parámetros de Entrada: Ruta del archivo.
- Parámetros de Salida: Datos (contenido procesado del archivo).
- Configuraciones Clave: El parámetro
silent_errors
determina si se deben suprimir los errores durante la carga.
CharacterTextSplitter
- Descripción: Divide el texto de entrada en fragmentos más pequeños según el número de caracteres.
- Parámetros de Entrada: Texto de entrada, tamaño de fragmento, solapamiento, separador.
- Parámetros de Salida: Lista de fragmentos de texto.
- Configuraciones Clave:
chunk_size
ychunk_overlap
controlan el tamaño y el solapamiento de los fragmentos. Elseparator
define el carácter o conjunto de caracteres por los cuales se divide.
OpenAIEmbeddings
- Descripción: Genera embeddings para los textos de entrada usando un modelo de OpenAI.
- Parámetros de Entrada: Fragmentos de texto, nombre del modelo, y otros parámetros de API.
- Parámetros de Salida: Embeddings (representaciones numéricas del texto).
- Configuraciones Clave: Requiere clave API de OpenAI. Se puede ajustar con diferentes parámetros para optimizar la generación de embeddings.
Componente Chroma VectorStore
- Descripción: Almacena y busca embeddings usando ChromaDB.
- Parámetros de Entrada: Embeddings, consulta de búsqueda.
- Parámetros de Salida: Resultados de búsqueda (datos).
- Configuraciones Clave:
collection_name
especifica la colección en ChromaDB.search_type
define el tipo de búsqueda (por ejemplo: Similitud, MMR).
Entrada de Texto
- Descripción: Recoge los criterios ingresados por el usuario.
- Parámetros de Entrada: Ninguno.
- Parámetros de Salida: Texto (entrada del usuario).
- Configuraciones Clave: No tiene condiciones especiales.
Prompt
- Descripción: Crea una plantilla de prompt que incorpora variables dinámicas.
- Parámetros de Entrada: Requisitos definidos por el usuario.
- Parámetros de Salida: Mensaje de prompt (texto).
- Configuraciones Clave: La plantilla del prompt define cómo se integran los datos de entrada.
Modelo OpenAI
- Descripción: Un modelo de lenguaje que genera texto basado en el prompt recibido.
- Parámetros de Entrada: Prompt, nombre del modelo, otros parámetros del LLM.
- Parámetros de Salida: Texto generado (respuesta del modelo).
- Configuraciones Clave: Requiere clave API de OpenAI. El parámetro
model_name
define qué modelo se usa.
Entrada de Chat
- Descripción: Acepta mensajes de chat del usuario.
- Parámetros de Entrada: Ninguno.
- Parámetros de Salida: Mensaje del usuario.
- Configuraciones Clave: Se pueden definir metadatos como remitente e ID de conversación.
Salida de Chat
- Descripción: Muestra los mensajes del modelo en la interfaz de chat.
- Parámetros de Entrada: Mensaje generado por el modelo.
- Parámetros de Salida: Ninguno.
- Configuraciones Clave: Controla el formato y la presentación del mensaje.
Parsear Datos
- Descripción: Convierte los datos en texto mediante una plantilla.
- Parámetros de Entrada: Datos, plantilla.
- Parámetros de Salida: Texto como mensaje.
- Configuraciones Clave: La plantilla define cómo se formatea el contenido de los datos.
Ejecución del Flujo de Trabajo
- Ingesta de Datos: Los CV de los candidatos se cargan utilizando el componente Archivo. Se utilizan dos instancias de este componente para permitir la carga de múltiples archivos.
- División del Texto: El componente CharacterTextSplitter divide los textos de los CV en fragmentos más pequeños para su procesamiento.
- Generación de Embeddings: El componente OpenAIEmbeddings genera embeddings para cada fragmento.
- Almacenamiento en la Base Vectorial: Los embeddings se almacenan en Chroma VectorStore.
- Entrada del Usuario y Generación de Prompt: El usuario proporciona los requisitos mediante múltiples componentes Entrada de Texto. Esta información, junto con los datos procesados de los CV, se utiliza para generar prompts a través del componente Prompt.
- Procesamiento del LLM: El Modelo OpenAI procesa los prompts usando los datos de los CV recuperados mediante Chroma VectorStore y formateados por Parsear Datos.
- Visualización de Resultados: El componente Salida de Chat muestra la respuesta del modelo, resumiendo el candidato más compatible según la pregunta del usuario ingresada vía Entrada de Chat.
Notas Adicionales
El rendimiento del flujo depende del tamaño de los CV y de la eficiencia tanto del modelo de embeddings como del LLM de OpenAI. Se deben asegurar cuotas de API suficientes y recursos adecuados para garantizar una ejecución óptima. La base de datos ChromaDB debe estar bien configurada para permitir almacenamiento y recuperación eficaces. Se recomienda implementar manejo de errores y registros para entornos de producción.