Crear Embeddings#

Consideremos un ejemplo de un robot que toma instrucciones sobre un automóvil de un archivo de texto, lo divide en fragmentos y calcula un embedding para cada fragmento: un vector de características para la búsqueda posterior de las partes necesarias del documento por similitud. Los fragmentos de texto junto con los embeddings correspondientes se registran en un archivo CSV. Este proyecto es preparatorio para el uso del proyecto SearchEmbeddings y debe ejecutarse una sola vez.

El proyecto del robot consta de un diagrama. Así, si se describe paso a paso, este robot funciona de la siguiente manera:

  1. Lee el contenido del archivo especificado en las propiedades.
  2. Divide este contenido en fragmentos.
  3. Calcula el embedding para cada elemento.
  4. Registra los embeddings obtenidos en Tablas de Datos.
  5. Guarda los fragmentos de texto con los embeddings correspondientes en un archivo CSV.

El diagrama del proyecto se ve así (para mayor comodidad, los bloques del diagrama están numerados):

  1. Bloque “Inicio” (desde este bloque comienza cualquier diagrama).
  2. Bloque “Leer línea del archivo” lee el contenido del archivo secuencialmente (línea por línea). Para este bloque se especifican las siguientes propiedades:
  • Nombre del archivo (nombre del archivo del cual se leerá la información);
  • Codificación (codificación del archivo del cual se leerá la información);
  • Omitir líneas vacías (al activar esta opción se habilita la función de omitir líneas vacías al leer información del archivo).
  1. Bloque “Condición” verifica la veracidad de la condición especificada, después de lo cual la ejecución del guion continúa hacia la salida “Sí” (si la condición se cumple) o hacia la salida “No” (si la condición no se cumple).

La condición se escribe en el formato: “variable” es igual (==)/ mayor (>)/ menor (<) “valor”.

Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces salida “Sí”, de lo contrario – salida “No”.

$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces salida “Sí”, de lo contrario – salida “No”.

En este caso, la condición establecida es: $Lines.Count > 0, es decir, esta condición verifica si el valor de la variable $Lines es mayor que cero, entonces salida “Sí”, de lo contrario – salida “No”.

  1. Bloque “Obtener embeddings” permite obtener embeddings a partir de una línea o lista de líneas utilizando el servicio de Open AI. Para este bloque se especifican las siguientes propiedades:
  • Texto (texto de entrada para el cual se calcularán los embeddings);
  • Modelo (modelo de red neuronal para generar la respuesta);
  • Como tabla de datos (al activar esta opción se habilita la función de devolver el resultado en forma de tabla de datos con dos columnas: “Texto” y “Embeddings”);
  • Tiempo de espera (tiempo máximo de espera por respuesta en segundos).
  1. Bloque “Unir Tablas de Datos” permite unir dos Tablas de Datos en una. Para este bloque se especifican las siguientes propiedades:
  • Primera Tabla de Datos;
  • Segunda Tabla de Datos;
  • Tipo de unión (tipo de unión de tablas, si los esquemas de las tablas especificadas son diferentes. En este caso, tipo “Agregar”, es decir, añadir).
  1. Bloque “Guardar en CSV” permite guardar la Tabla de Datos en un documento CSV. Para este bloque se especifican las siguientes propiedades:
  • Tabla de Datos (Tabla de Datos que se debe guardar en el documento);
  • Ruta del archivo (ruta del archivo en el que se debe guardar la Tabla de Datos);
  • Separador (símbolo separador);
  • Codificación (codificación del archivo).
  1. Bloque “Log” permite registrar en el log mensajes arbitrarios y/o valores de variables durante la ejecución del guion del robot. Para este bloque se especifica la propiedad “Valor”. En las comillas se indica una constante de texto, y el nombre de la variable comienza con el símbolo $. Es decir, este bloque registra en el log del robot un mensaje sobre la lectura de una línea del archivo indicando esta línea mediante la variable.
  1. Bloque “Agregar elemento a la lista” permite añadir el elemento especificado al final de la lista. Para este bloque se especifican las siguientes propiedades:
  • Lista (lista a la que se debe agregar el nuevo elemento);
  • Elemento (variable que se debe agregar a la lista).
  1. Bloque “Condición” verifica la veracidad de la condición especificada, después de lo cual la ejecución del guion continúa hacia la salida “Sí” (si la condición se cumple) o hacia la salida “No” (si la condición no se cumple).

La condición se escribe en el formato: “variable” es igual (==)/ mayor (>)/ menor (<) “valor”.

Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces salida “Sí”, de lo contrario – salida “No”.

$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces salida “Sí”, de lo contrario – salida “No”.

En este caso, la condición establecida es: $Lines.Count > 20, es decir, si el valor de la variable $Lines es mayor que 20, entonces salida “Sí”, de lo contrario – salida “No”.

  1. Bloque “Obtener embeddings” permite obtener embeddings a partir de una línea o lista de líneas utilizando el servicio de Open AI. Para este bloque se especifican las siguientes propiedades:
  • Texto (texto de entrada para el cual se calcularán los embeddings);
  • Modelo (modelo de red neuronal para generar la respuesta);
  • Como tabla de datos (al activar esta opción se habilita la función de devolver el resultado en forma de tabla de datos con dos columnas: “Texto” y “Embeddings”);
  • Tiempo de espera (tiempo máximo de espera por respuesta en segundos).
  1. Bloque “Unir Tablas de Datos” permite unir dos Tablas de Datos en una sola. Para este bloque se especifican las siguientes propiedades:
  • Primera Tabla de Datos;
  • Segunda Tabla de Datos;
  • Tipo de unión (tipo de unión de tablas, si los esquemas de las tablas especificadas son diferentes. En este caso, el tipo es “Add”, es decir, agregar).
  1. Bloque “Guardar en CSV” permite guardar la Tabla de Datos en un documento CSV. Para este bloque se especifican las siguientes propiedades:
  • Tabla de Datos (Tabla de Datos que se debe guardar en el documento);
  • Ruta del archivo (ruta del archivo en el que se debe guardar la Tabla de Datos);
  • Separador (símbolo separador);
  • Codificación (codificación del archivo).
  1. Bloque “Limpiar lista” permite limpiar la lista eliminando todos sus elementos. Para este bloque se especifica la propiedad “Lista” (lista que se debe limpiar).
  1. Bloque “Fin” (este bloque finaliza la ejecución del guion o devuelve el diagrama del subproceso al proceso principal).