Cómo llamar a Hugging Face AI desde una base de datos Oracle usando JavaScript

Llamar a Hugging Face AI desde una base de datos Oracle usando JavaScript.

En este artículo, te mostraré cómo crear rápidamente una aplicación completamente gratuita utilizando un programa JavaScript que se ejecuta dentro de la base de datos gratuita de Oracle y llama a Hugging Face AI, cuyos resultados se almacenan en la base de datos y luego se pueden acceder utilizando SQL, JSON, REST u cualquier otro lenguaje. Todo el código fuente está disponible aquí.

Un flujo común de aplicaciones en general y aplicaciones de IA específicamente implica que una aplicación llame a un servicio de IA y luego almacene la información en la base de datos donde se puede recuperar y procesar (por ejemplo, utilizando OML) más adelante y/o analizar y consultar posteriormente.

Al emitir el comando desde la propia base de datos, los datos se almacenan de inmediato y, por lo tanto, también son más confiables, ya que están en proceso y no requieren una llamada de red adicional para persistir. Además, al tener la lógica (e incluso el código) en la base de datos, se puede aprovechar implícita e inherentemente la alta disponibilidad, gestión, observabilidad, etc. del poder de la base de datos de Oracle.

Esta es una capacidad única de la base de datos de Oracle, ya que incluye Java y, como veremos en este blog, motores de tiempo de ejecución de JavaScript dentro de la propia base de datos.

Hugging Face desarrolla herramientas para construir aplicaciones utilizando aprendizaje automático. Es especialmente conocido por su biblioteca de transformers creada para aplicaciones de procesamiento de lenguaje natural y su plataforma que permite a los usuarios compartir modelos y conjuntos de datos de aprendizaje automático. Se ha vuelto extremadamente popular en los últimos años.

En resumen, haremos lo siguiente:

  1. Crear una cuenta y seleccionar un modelo.
  2. Crear la base de datos de Oracle y un usuario de base de datos.
  3. Agregar una billetera con un certificado para permitir llamadas HTTPS.
  4. Crear una tabla.
  5. Ejecutar un programa JavaScript en la base de datos para realizar una llamada al modelo de IA de Hugging Face y almacenar los resultados en la tabla.
  6. Opcionalmente, consultar estos resultados utilizando SQL, JSON, REST, etc.

Configurar una cuenta de Hugging Face y un modelo de IA

Ve a https://huggingface.co y Regístrate. Ve a tu Perfil y haz clic en el botón Configuración.

Haz clic en Access Tokens, crea un token y copia su valor para usarlo más adelante.

Haz clic en Models y selecciona un modelo. En este caso, seleccionaremos un modelo de la sección de Procesamiento de Lenguaje Natural para Responder preguntas.

Selecciona un modelo (quizás uno de los más populares), observa la información en la Tarjeta del Modelo a la izquierda y luego selecciona el menú desplegable Desplegar a la derecha.

Selecciona Inference API y luego selecciona la opción JavaScript para ver un fragmento de código de ejemplo para llamar al modelo.

Configurar la base de datos de Oracle

Podemos utilizar cualquier versión de la base de datos de Oracle a partir de la versión 21c. En la nube, podemos usar la base de datos autónoma gratuita de Oracle siempre disponible (lo cual es bueno ya que podemos exponerla a través de Internet y hacer que el juego esté verdaderamente disponible a nivel mundial/en línea en un par de minutos) o podemos usar la versión gratuita de Oracle 23c donde simplemente podemos instalarla o usar una imagen de contenedor localmente. O, por supuesto, podríamos usar el entorno local para desarrollo y la nube para producción, etc., y cualquiera de estas opciones se configura muy rápidamente.

Opción de base de datos siempre gratuita en Oracle Cloud

Puedes ir aquí para configurar una Base de Datos Autónoma Oracle Cloud Always Free. Los pasos son muy intuitivos. Simplemente selecciona Procesamiento de Transacciones Autónomo en la pantalla del menú de la Base de Datos de Oracle como se muestra a continuación y luego haz clic en el botón Crear Base de Datos Autónoma. Puedes tomar todas las opciones por defecto y simplemente proporcionar una contraseña de usuario administrador.

Opción gratuita de base de datos Oracle

Puedes ir aquí para configurar la Base de Datos Oracle Free 23c.

Usar la imagen de contenedor es muy sencillo. Simplemente puedes ejecutar la siguiente línea, reemplazando -e ORACLE_PASSWORD=Welcome12345 con una contraseña de tu elección y reemplazando -v oracle-volume:/somedirectory con una ubicación de directorio (o omitiéndolo por completo si solo deseas tener una base de datos en memoria). Observa el parámetro --add-host docker.for.mac.host.internal:host-gateway que permite realizar llamadas desde el contenedor. Esta es la configuración para Mac y será diferente si se ejecuta en un sistema operativo diferente.

docker pull 
container-registry.oracle.com/database/free:latest; docker run --add-host docker.for.mac.host.internal:host-gateway -e ORACLE_PASSWORD=Welcome12345 -v oracle-volume:/somedirectory container-registry.oracle.com/database/free:latest

Configurar SQLcl (o Database Actions) y Conectarse

Si estás utilizando una base de datos en la nube, puedes trabajar con SQL y JavaScript haciendo clic en Database Actions y luego en SQL en la consola de OCI para administrar la base de datos en la nube.

También puedes instalar SQLcl para administrar cualquiera de las bases de datos/opciones mencionadas siguiendo los siguientes pasos:

  1. Descarga e instala desde esta ubicación. Esto proporcionará un ejecutable [SQLcl_INSTALL_DIR]/bin/sql que utilizaremos para administrar la base de datos. Para mayor comodidad, puedes agregar [SQLcl_INSTALL_DIR]/bin a tu PATH.

  2. Inicia sesión reemplazando [SQLcl_INSTALL_DIR] con la ubicación de tu SQLcl y reemplazando Welcome12345 por el que proporcionaste como ORACLE_PASSWORD al crear la base de datos.

Aquí tienes un ejemplo cuando utilizas una instalación local (por ejemplo, la imagen del contenedor de Oracle Database Free):

Y aquí tienes un ejemplo cuando utilizas una base de datos en la nube (por ejemplo, Oracle Always Free Autonomous):

Crear una Billetera

Crea una billetera para guardar el certificado para llamadas SSL/HTTPS realizadas desde JavaScript en la base de datos a Hugging Face.

Vamos a crear el archivo PEM para el certificado SSL de la API de Hugging Face, guardarlo en una billetera, subir la billetera (específicamente el archivo ewallet.p12) a la base de datos e indicar a la base de datos que lo utilice para las llamadas HTTPS. Específicamente, estaremos indicando al paquete UTL_HTTP mapeado/utilizado por el comando fetch de JavaScript en la base de datos de Oracle que lo utilice para las llamadas HTTPS.

1. Primero, obtén el certificado SSL de Hugging Face (api-infeerence.hugging.face.co:443) y guárdalo en un archivo PEM utilizando el siguiente comando.

2. Ejecuta los siguientes comandos en el prompt de SQLcl para crear una billetera, agregar el archivo PEM a ella y verificar mostrando los resultados. El argumento -cert apunta al archivo PEM que acabas de crear anteriormente.

3. Ahora tienes un directorio de billetera que contiene un archivo ewallet.p12 que contiene el certificado de la API de Hugging Face (pem). Si aún no lo has hecho, abre otra ventana de terminal, clona o descarga los repositorios src (vinculados al comienzo de este artículo), cd al directorio raíz (huggingface-javascript-oracle) y copia el archivo ewallet.p12 en el directorio src/main/resources. En otras palabras:

4. Vuelve a la terminal de SQLcl y ejecuta/instala el archivo sql/writefile.sql desde los repositorios src.

5. Esto instalará el procedimiento almacenado write_file que llamaremos desde una pequeña utilidad de Java que subirá nuestro ewallet.p12 a la base de datos para utilizarlo en las llamadas HTTPS. En la terminal de los repositorios src (nuevamente desde el directorio raíz (huggingface-javascript-oracle)), ejecuta el siguiente comando, reemplazando los valores de conexión de la base de datos según corresponda. Por ejemplo, en el caso de la base de datos de la imagen del contenedor Oracle Free:

Deberías ver una salida como HuggingFaceFromOracleDatabaseApplication ewallet.p12 wallet uploaded to DATA_DUMP_DIR.

6. Vuelve a la terminal de SQLcl y ejecuta el siguiente comando para obtener la ubicación de DATA_DUMP_DIR donde se cargó el archivo ewallet.p12.

Deberías ver una salida como la siguiente.

7. sql/create_aijs_acl.sql instruirá a la base de datos (paquete UTL_HTTP) para utilizar el certificado en ewallet.p12 para realizar llamadas HTTPS al host mencionado en el principal aijs. Reemplaza los dos valores de wallet_path en este archivo con el que se devolvió de la consulta anterior /dba_directories y reemplaza el valor [WALLET_PASSWORD].

wallet_path => 'file:/opt/oracle/admin/FREE/dpdump/FB9997ED60890BBDE0536402000AF33F',
[...]
'file:/opt/oracle/admin/FREE/dpdump/FB9997ED60890BBDE0536402000AF33F', '[WALLET_PASSWORD]'

8. Ahora ejecuta los siguientes archivos SQL para crear el usuario aijs, sus concesiones necesarias y ACLs (ten en cuenta que estos se pueden ajustar aún más para una mejor seguridad).

9. Ahora conecta al usuario y crea una tabla para almacenar los resultados de la llamada a Hugging Face.

Ahora todo está listo para ejecutarse.

Ejecutar la aplicación y gestionar los resultados

Finalmente, ejecuta la consulta HuggingFace desde el código JavaScript en la base de datos:

Luego, verifica los resultados JSON almacenados en la tabla haciendo una consulta SQL.

Al observar el código que acabamos de ejecutar, podemos ver el fragmento de JavaScript:

Los parámetros útiles y la información de depuración para Hugging Face se pueden encontrar en la documentación.

Los resultados ahora se pueden consultar, analizar, etc. utilizando SQL o JSON (simultáneamente, gracias a la nueva funcionalidad de dualidad JSON), REST o incluso la API de MongoDB.

Oracle Database es la base de datos perfecta para la Inteligencia Artificial por varias razones, particularmente porque es una base de datos vectorial con capacidades como las siguientes ya disponibles hoy:

  • Tipos de datos nativos para representación y almacenamiento vectorial: RAW, BLOB, JSON
  • Almacén de columnas en memoria para almacenar y buscar incrustaciones vectoriales con núcleos SIMD para un rendimiento increíble
  • Marco de indexación extensible para crear índices específicos del modelo de datos (por ejemplo, texto, espacial)
  • APIs de aprendizaje automático nativas de Oracle: modelado, clasificación, puntuación, agrupación, etc.
  • DMLs, carga paralela, particionamiento, compresión avanzada, consulta paralela, RAC, fragmentación, etc.

También es posible llamar a Oracle OCI AI y otros servicios desde dentro de la base de datos de Oracle.

Conclusión

El artículo explicó cómo llamar a las APIs de Hugging Face desde dentro de la base de datos de Oracle utilizando JavaScript, demostrando así una combinación poderosa de características perfectamente adecuada para una amplia gama de soluciones de IA y amigable para los desarrolladores de JavaScript.

Algunos otros blogs relacionados con JavaScript en la base de datos, en general, el Motor MultiLingüe (MLE) que lo hace posible, etc. se pueden encontrar en las publicaciones de Martin Bach y esta publicación sobre la importación de módulos JavaScript ES en 23c.

Espero cualquier comentario o pregunta que puedas tener y realmente agradezco tu tiempo de lectura.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Conoce CommonCanvas Un modelo de difusión abierto que ha sido entrenado usando imágenes con licencia Creative Commons

La inteligencia artificial ha avanzado significativamente en la generación de texto a imagen en los últimos años. Tra...

Inteligencia Artificial

Los 5 mejores cursos de IA generativa para hacer en 2023

Introducción Es imperativo mantenerse actualizado sobre la información y habilidades más recientes relacionadas con l...

Inteligencia Artificial

NVIDIA brinda apoyo a los esfuerzos de Washington para garantizar la seguridad de la inteligencia artificial

En un evento en la Casa Blanca hoy, NVIDIA anunció su apoyo a compromisos voluntarios que la Administración Biden des...

Inteligencia Artificial

Del Texto más allá de las Palabras

Hola lectores, hoy en día vivimos en la era de los Modelos de Lenguaje Grandes (LLMs), los cuales potencian software ...

Aprendizaje Automático

Google DeepMind está trabajando en un algoritmo para superar a ChatGPT.

En un anuncio innovador, Demis Hassabis, el CEO del laboratorio de IA DeepMind de Google, presentó el desarrollo de u...