Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.976
Acá en la pega una de las bases de datos de negocio es Oracle 19c con pocos registros (sus 50 millones, es poco) pero algunos de esos registros tienen archivos (documentos PDF la mayoría) en campos de tipo LOB (BLOB, CLOB).

Queremos hacer una pequeña prueba de concepto: desarrollamos una caja negra que lee los archivos que están dentro de los campos de tipo LOB de Oracle y los transforma en vectores para luego meterle modelos de IA que lean los vectores.

Para evitar usar una base de datos vectorial aparte, yo he estado esperando desde el año pasaso a que salga la versión on premise de Oracle 23ai, que incluye campos vectoriales dentro de la misma base de datos relacional, lo que me deja TODO JUNTO mis datos de negocio con los vectores resultantes de la lectura de los archivos. Sueno como un comercial ofreciéndote la solución de Oracle para meterle IA a tu negocio pero justamente esa es la idea.

La cosa es que Oracle todavía no libera la versión on premise de Oracle 23ai y creo que ya no va a salir nah este año 2025, entonces tengo dos opciones para continuar con este pequeño proyecto conceptual:

- Usar una base de datos vectorial tipo chroma o milvus
- Usar una base de datos transaccional con soporte para vectores, que en este caso sería Postgres.

Si aplico la opción 2, puedo migrar datos transaccionales de Oracle a Postgres con una herramienta adhoc peeeeroooooo.... me queda la duda la equivalencia en Postgres con los campos LOB de Oracle que almacenan los archivos PDF.

Estoy googleando y el tipo de dato a en Postgres a donde le puedo chantar un PDF es BYTEA.

Planeo utilizar la herramienta Ora2PG para hacer la migración y la voy a ir documentando acá en este hilo.

Yo nunca he usado Postgres a nivel experto, siempre lo he utilizado como base de datos repositorio de software con pocos datos (casi como un sqlite), así que no tengo experiencia ni manejo en temas finos. Por eso, si hay acá alguien ducho que se anime a darme consejos de lo que sea (ojo con el almacenamiento, guarda con la memoria, fíjate en los archivos que te mantienen la transaccionabilidad, etc) se lo agradecería.


Nota: No me interesa que la estructura de datos resultante en Postgres sea útil para conectarle un servidor de aplicaciones y hacer correr el sistema de negocio. Simplemente quiero tener las tablas con los registros (incluyendo archivos PDF dentro de los campos) para que un modelo de IA los lea y lo convierta en vectores.
 

browsons

Capo
Se incorporó
29 Noviembre 2005
Mensajes
319
Interesante caso y proyecto el que tienes entre manos. La idea de mantener todo integrado en Oracle 23ai suena excelente por la simplicidad y centralización, pero como bien dices, la espera se está extendiendo.

Sobre migrar los LOB de Oracle a Postgres, efectivamente el tipo BYTEA es la opción estándar para almacenar datos binarios como PDFs en Postgres. Lo que sí me gustaría mencionar es que BYTEA puede funcionar bien para volúmenes moderados, pero si los archivos son muy grandes o en gran cantidad, el impacto en la memoria y el rendimiento debe considerarse con cuidado. También hay opciones como usar el tipo Large Object (LO) en Postgres, que está diseñado para manejar objetos binarios grandes, aunque su manejo es un poco más complejo y requiere un enfoque distinto que puede afectar a la transaccionalidad y a las operaciones concurrentes.

Sobre la herramienta Ora2PG, es una buena elección para migración de datos y puede ayudarte mucho con la estructura y datos. Solo mi recomendación sería probar con sets pequeños primero, para medir cómo se comporta el almacenamiento de los PDFs y si el rendimiento satisface las necesidades específicas de tu POC.

Finalmente, para el manejo de vectores, Postgres con su extensión pgvector es una solución bastante madura que se está usando mucho en IA y vector search. Aunque no es una base vectorial nativa como Milvus o Chroma, te da la ventaja de seguir en un ambiente transaccional y con SQL clásico.

¿Has pensado en algún esquema para gestión de memoria y tamaño máximo por documento? A veces es clave para optimizar el acceso sin saturar la memoria.

Saludos y ojalá avances mucho con el proyecto, me anoto para seguir el hilo y ver cómo te va documentando la migración.
 
Upvote 0
Subir