# orderedItems[].object.content
PD: Encontré estos tips para Open WebUI que me han parecido bastante correctos: https://hostkey.com/blog/74-10-tips-fo r-open-webui-to-enhance-your-work-with-ai/

Lo añado al hilo.

# orderedItems[].object.contentMap.es
PD: Encontré estos tips para Open WebUI que me han parecido bastante correctos: https://hostkey.com/blog/74-10-tips-fo r-open-webui-to-enhance-your-work-with-ai/

Lo añado al hilo.

# orderedItems[].object.content
Yo diría que parte del futuro de la IA en asistentes conversacionales, amén de las tareas "a nivel personal" que puede hacerte un chatbot, va por aquí.

Las grandes empresas lo saben, y por eso este tipo de sistemas son uno de sus modelos de negocio.

Pero que puedas explotar una IA, además de con su propio entrenamiento, con TUS datos, ejecutando modelos IA relativamente pequeños, localmente para equipos de tamaño concreto, con TU control (sin perder privacidad ni independencia) es prometedor.

# orderedItems[].object.contentMap.es
Yo diría que parte del futuro de la IA en asistentes conversacionales, amén de las tareas "a nivel personal" que puede hacerte un chatbot, va por aquí.

Las grandes empresas lo saben, y por eso este tipo de sistemas son uno de sus modelos de negocio.

Pero que puedas explotar una IA, además de con su propio entrenamiento, con TUS datos, ejecutando modelos IA relativamente pequeños, localmente para equipos de tamaño concreto, con TU control (sin perder privacidad ni independencia) es prometedor.

# orderedItems[].object.content
Las buenas: Esto mejora por días. Tener esta base hoy no es tiempo perdido, además de la experiencia técnica y de organización necesaria (documental sobre todo) para llegar aquí.

Incluso tu propia instancia es escalable (no deja de ser un servidor Ollama) y con los técnicos apropiados, con salida a internet.

Y qué coño, mola pegarse con estas cosas: comunitarias y open source.

# orderedItems[].object.contentMap.es
Las buenas: Esto mejora por días. Tener esta base hoy no es tiempo perdido, además de la experiencia técnica y de organización necesaria (documental sobre todo) para llegar aquí.

Incluso tu propia instancia es escalable (no deja de ser un servidor Ollama) y con los técnicos apropiados, con salida a internet.

Y qué coño, mola pegarse con estas cosas: comunitarias y open source.

# orderedItems[].object.content
Las malas noticias: la explotación de datos NO llega, en mi experiencia a día de hoy, a la calidad de cuando subes PDFs a ChatGPT o Gemini y preguntas sobre el mismo.

Es más, he probado NotebookLM de Google (https://notebooklm.google.com) y funciona mejor.

Pero claro, ya pasas por el aro de una empresa privada. Y mañana, te pondrá eso de pago.

Amén que si tus datos tienen un mínimo de privacidad, olvídate porque se la saltan y lo dicen (hay precedentes).

# orderedItems[].object.contentMap.es
Las malas noticias: la explotación de datos NO llega, en mi experiencia a día de hoy, a la calidad de cuando subes PDFs a ChatGPT o Gemini y preguntas sobre el mismo.

Es más, he probado NotebookLM de Google (https://notebooklm.google.com) y funciona mejor.

Pero claro, ya pasas por el aro de una empresa privada. Y mañana, te pondrá eso de pago.

Amén que si tus datos tienen un mínimo de privacidad, olvídate porque se la saltan y lo dicen (hay precedentes).

# orderedItems[].object.content
Por tanto, para agilizar esas pruebas y ver si tiene sentido todo esto o no, yo diría que se necesita un mínimo de

a) Técnicos medio-capaces. Yo no tengo mucha idea y he podido llegar a algo.

b) Un PC con una CPU decente y una GPU de al menos 8 GB, por lo menos para no morir de asco en las pruebas y el embebido de datos.

c) Una base documental normal.

Y con todo ello ver resultados.

# orderedItems[].object.contentMap.es
Por tanto, para agilizar esas pruebas y ver si tiene sentido todo esto o no, yo diría que se necesita un mínimo de

a) Técnicos medio-capaces. Yo no tengo mucha idea y he podido llegar a algo.

b) Un PC con una CPU decente y una GPU de al menos 8 GB, por lo menos para no morir de asco en las pruebas y el embebido de datos.

c) Una base documental normal.

Y con todo ello ver resultados.

# orderedItems[].object.content
f) Conclusiones.

Hay que probar. No garantizo nada. Es algo dependiente de tus datos, de tu hardware, de cómo configures el modelo... y de si tiene sentido el uso que le des o no.

Por ejemplo, las explotaciones de datos puros en texto o de hojas de cálculo las hace decentemente bien. Y eso es algo que "antes" no tenías y ahora sí, con pocos recursos.

Pero otras veces "alucina" o no encuentra datos evidentes... hay que ir probando formatos, configuraciones...

# orderedItems[].object.contentMap.es
f) Conclusiones.

Hay que probar. No garantizo nada. Es algo dependiente de tus datos, de tu hardware, de cómo configures el modelo... y de si tiene sentido el uso que le des o no.

Por ejemplo, las explotaciones de datos puros en texto o de hojas de cálculo las hace decentemente bien. Y eso es algo que "antes" no tenías y ahora sí, con pocos recursos.

Pero otras veces "alucina" o no encuentra datos evidentes... hay que ir probando formatos, configuraciones...

# orderedItems[].object.content
Otra fuente que estoy barruntando es capturar una serie de correos automáticos (con incidencias), guardarlos como archivo e ir añadiéndolos.

No he visto una forma totalmente automática, creo que las opciones de integración en todas estas aplicaciones irán mejorando, pero tampoco "sé" qué "límite" de información entre acumular esto y saturar el contexto hay.

Pero las posibilidades son grandes.

De momento, se harán actualizaciones "a mano" cada X tiempo.

# orderedItems[].object.contentMap.es
Otra fuente que estoy barruntando es capturar una serie de correos automáticos (con incidencias), guardarlos como archivo e ir añadiéndolos.

No he visto una forma totalmente automática, creo que las opciones de integración en todas estas aplicaciones irán mejorando, pero tampoco "sé" qué "límite" de información entre acumular esto y saturar el contexto hay.

Pero las posibilidades son grandes.

De momento, se harán actualizaciones "a mano" cada X tiempo.

# orderedItems[].object.content
También se podría utilizar Selenium e incluso capturar información de aplicaciones de escritorio o simplemente utilizar un script crawler en Python.

# orderedItems[].object.contentMap.es
También se podría utilizar Selenium e incluso capturar información de aplicaciones de escritorio o simplemente utilizar un script crawler en Python.

# orderedItems[].object.content
También es muy habitual tener documentación en aplicaciones web. Algunos de estos programas tienen conectores web, pero suelen ser simples y no incluyen la posibilidad de hacer "logins".

En mi caso, utilicé JMeter (https://jmeter.apache.org) para acceder a una web e ir descargando como pdf, html y md los contenidos.

Es un uso habitual de JMeter, encontrarás abundante info de como hacerlo.

# orderedItems[].object.contentMap.es
También es muy habitual tener documentación en aplicaciones web. Algunos de estos programas tienen conectores web, pero suelen ser simples y no incluyen la posibilidad de hacer "logins".

En mi caso, utilicé JMeter (https://jmeter.apache.org) para acceder a una web e ir descargando como pdf, html y md los contenidos.

Es un uso habitual de JMeter, encontrarás abundante info de como hacerlo.

# orderedItems[].object.content
Poniéndonos en los casos reales más habituales: documentación en "doc", "odt", "pdf": es posible. Cuanto más categorizada, e incluso si haces un índice y se lo indicas al contexto del embedding, mejor.

Los PDF, mejor si les haces OCR antes, para ahorrar tiempo y mayor control. Sin hacer nada, para cosas rápidas, funciona.

Lo mejor sería hacer distintas colecciones/bases de conocimiento: las "estáticas" (documentos que no cambiarán) o las que necesites ir actualizando: mantenimiento más cómodo.

# orderedItems[].object.contentMap.es
Poniéndonos en los casos reales más habituales: documentación en "doc", "odt", "pdf": es posible. Cuanto más categorizada, e incluso si haces un índice y se lo indicas al contexto del embedding, mejor.

Los PDF, mejor si les haces OCR antes, para ahorrar tiempo y mayor control. Sin hacer nada, para cosas rápidas, funciona.

Lo mejor sería hacer distintas colecciones/bases de conocimiento: las "estáticas" (documentos que no cambiarán) o las que necesites ir actualizando: mantenimiento más cómodo.

# orderedItems[].object.content
Cuanto más estructurados estén los datos, no solo en su redacción y diseño, también en su propio formato, mejor.

¿A qué me refiero? Entenderá hojas de cálculo, tablas o formatos CSV.

Debería entender mejor lenguajes jerarquizados como markdown (aunque he de decir que por mi experiencia no hay tanta diferencia con un documento a pelo).

# orderedItems[].object.contentMap.es
Cuanto más estructurados estén los datos, no solo en su redacción y diseño, también en su propio formato, mejor.

¿A qué me refiero? Entenderá hojas de cálculo, tablas o formatos CSV.

Debería entender mejor lenguajes jerarquizados como markdown (aunque he de decir que por mi experiencia no hay tanta diferencia con un documento a pelo).

# orderedItems[].object.content
e) La base documental.

Para acabar, comentar que la calidad de los documentos e información que vectorizes en RAG es determinante por mi experiencia.

Es cierto que se traga "todo". PDFs con texto, sin texto escaneados, documentos, documentos md (markdown)...

Pero la calidad de estos mismos, como la jerarquía intrínseca de cómo está escrito y su estructura documental puede significar que el modelo "entienda" mejor o no los datos (por eso es importante "títulos", "párrafos", etc).

# orderedItems[].object.contentMap.es
e) La base documental.

Para acabar, comentar que la calidad de los documentos e información que vectorizes en RAG es determinante por mi experiencia.

Es cierto que se traga "todo". PDFs con texto, sin texto escaneados, documentos, documentos md (markdown)...

Pero la calidad de estos mismos, como la jerarquía intrínseca de cómo está escrito y su estructura documental puede significar que el modelo "entienda" mejor o no los datos (por eso es importante "títulos", "párrafos", etc).

# orderedItems[].object.content
Incluso, para pocas personas y determinados casos de uso, no hay problema en usar CPUs. Por ejemplo, he probado con CPU de 20 hilos (insisto, asegúrate que usa todos) y equipos con 16/32 GB de RAM y es usable.

Claro, depende del "workflow" para el que se vaya a usar la IA. Si son explotaciones que únicamente puede hacer la IA, te merece la pena esperar 30 segundos...

Pero es cierto que el uso de GPU/CUDA es un salto en comodidad notable.

# orderedItems[].object.contentMap.es
Incluso, para pocas personas y determinados casos de uso, no hay problema en usar CPUs. Por ejemplo, he probado con CPU de 20 hilos (insisto, asegúrate que usa todos) y equipos con 16/32 GB de RAM y es usable.

Claro, depende del "workflow" para el que se vaya a usar la IA. Si son explotaciones que únicamente puede hacer la IA, te merece la pena esperar 30 segundos...

Pero es cierto que el uso de GPU/CUDA es un salto en comodidad notable.

# orderedItems[].object.content
¿Por qué es importante todo esto? Porque no es lo mismo 2 personas lanzando consultas a un modelo de IA que 10.

El tiempo que tarden los procesos y las respuestas cambiará.

Es tan variable que es complicado poner un ejemplo. Un 5800X + 3070 8 GB completa respuestas en unos 7 segundos a ciertas preguntas. Ese equipo hoy lo valoraría en unos 1.000 €.

La carga del RAG al ejecutar una pregunta, además, se come más tiempo, por lo que más potencia de proceso es necesaria.

# orderedItems[].object.contentMap.es
¿Por qué es importante todo esto? Porque no es lo mismo 2 personas lanzando consultas a un modelo de IA que 10.

El tiempo que tarden los procesos y las respuestas cambiará.

Es tan variable que es complicado poner un ejemplo. Un 5800X + 3070 8 GB completa respuestas en unos 7 segundos a ciertas preguntas. Ese equipo hoy lo valoraría en unos 1.000 €.

La carga del RAG al ejecutar una pregunta, además, se come más tiempo, por lo que más potencia de proceso es necesaria.

# orderedItems[].object.content
Comentar también que AMD tiene su alternativa (ROCm) y muchas aplicaciones (como Ollama) que usan procesamiento CUDA, tienen su alternativa para ROCm: https://github.com/likelovewant/ollama-for-amd

O incluso se pueden usar con ZLUDA: https://www. reddit.com/r/ollama/comments/1 cf5tq1/ollama_windows_10_rx6600xt_zluda

Yo lo he usado (NO en este caso) y funciona. Hace el apaño y es mejor que "solo" la CPU (Ollama puede aprovechar ambos, GPU y CPU).

Sobre todo teniendo en cuenta que así sí puedes hacerte con 16 GB de VRAM por unos 500 €.

# orderedItems[].object.contentMap.es
Comentar también que AMD tiene su alternativa (ROCm) y muchas aplicaciones (como Ollama) que usan procesamiento CUDA, tienen su alternativa para ROCm: https://github.com/likelovewant/ollama-for-amd

O incluso se pueden usar con ZLUDA: https://www. reddit.com/r/ollama/comments/1 cf5tq1/ollama_windows_10_rx6600xt_zluda

Yo lo he usado (NO en este caso) y funciona. Hace el apaño y es mejor que "solo" la CPU (Ollama puede aprovechar ambos, GPU y CPU).

Sobre todo teniendo en cuenta que así sí puedes hacerte con 16 GB de VRAM por unos 500 €.

# orderedItems[].object.content
Incluso si "la cosa va bien" y alguien de la organización se especializa, no es (fuera de "precios de hogar") especialmente caro GPUs data center de 5.000 o 10.000 euros, si realmente el uso de la organización lo merece y hay un técnico que lo sepa aprovechar, porque, hay MUCHOS CASOS en los que NO, NO MERECE la pena que una organización implante esto.

# orderedItems[].object.contentMap.es
Incluso si "la cosa va bien" y alguien de la organización se especializa, no es (fuera de "precios de hogar") especialmente caro GPUs data center de 5.000 o 10.000 euros, si realmente el uso de la organización lo merece y hay un técnico que lo sepa aprovechar, porque, hay MUCHOS CASOS en los que NO, NO MERECE la pena que una organización implante esto.

# orderedItems[].object.content
Para empezar el hardware es un factor limitante para que, literalmente, puedas "cargar" el modelo, en función de su tamaño, como comentaba.

Por tanto, depende de la "inversión" o rendimiento que quieras: modelos "mejores".

Una GPU con CUDA y 8/10/12 GB de VRAM, por el monopolio de NVIDIA, puede irse entre 700 y 1000 euros.

Si saltas a más potencia o cantidad, el doble.

Aun así, considero que son cantidades asumibles para la mayoría de las organizaciones pequeñas. Incluso solo para probar.

# orderedItems[].object.contentMap.es
Para empezar el hardware es un factor limitante para que, literalmente, puedas "cargar" el modelo, en función de su tamaño, como comentaba.

Por tanto, depende de la "inversión" o rendimiento que quieras: modelos "mejores".

Una GPU con CUDA y 8/10/12 GB de VRAM, por el monopolio de NVIDIA, puede irse entre 700 y 1000 euros.

Si saltas a más potencia o cantidad, el doble.

Aun así, considero que son cantidades asumibles para la mayoría de las organizaciones pequeñas. Incluso solo para probar.

# orderedItems[].object.content
d) Qué hardware necesito.

Realmente, "lo que tengas". Cuanto más, mejor o menos tiempo tardará en responder.

Lo recomendado es una tarjeta gráfica con procesamiento CUDA y una buena cantidad de memoria RAM (VRAM).

Pero en determinados casos, una CPU + RAM moderna puede salvar el apaño, aunque los tiempos son superiores y los modelos que podrás usar serán "más pequeños" (3B, 7B, etc) y, posiblemente, los resultados peores.

# orderedItems[].object.contentMap.es
d) Qué hardware necesito.

Realmente, "lo que tengas". Cuanto más, mejor o menos tiempo tardará en responder.

Lo recomendado es una tarjeta gráfica con procesamiento CUDA y una buena cantidad de memoria RAM (VRAM).

Pero en determinados casos, una CPU + RAM moderna puede salvar el apaño, aunque los tiempos son superiores y los modelos que podrás usar serán "más pequeños" (3B, 7B, etc) y, posiblemente, los resultados peores.

# orderedItems[].object.content
Y nada, ya a probar con las preguntas. Open WebUI tiene una opción de "Arena" para lanzar las preguntas sobre varios modelos en distintas columnas en la misma ventana (porque puedes tener varios modelos e ir eligiendo).

En función de resultados deberías ir cambiando la forma de 'embeber' la base de conocimiento, el modelo de IA y las configuraciones de ambas.

# orderedItems[].object.contentMap.es
Y nada, ya a probar con las preguntas. Open WebUI tiene una opción de "Arena" para lanzar las preguntas sobre varios modelos en distintas columnas en la misma ventana (porque puedes tener varios modelos e ir eligiendo).

En función de resultados deberías ir cambiando la forma de 'embeber' la base de conocimiento, el modelo de IA y las configuraciones de ambas.

# orderedItems[].object.content
Y por último, añade las bases de conocimiento y otorga el mejor contexto que puedas (importante y útil) en la configuración de cada modelo (y a la base de conocimiento al embeber).

También deberás probar cambios en la "temperatura".

Aquí insistir de nuevo que Open WebUI nos va a permitir completar la experiencia añadiendo plug-ins para generar imágenes o audio (en algún caso, si necesita otra app, con Pinokio la podrás instalar fácilmente). También tiene salida a búsqueda por internet.

# orderedItems[].object.contentMap.es
Y por último, añade las bases de conocimiento y otorga el mejor contexto que puedas (importante y útil) en la configuración de cada modelo (y a la base de conocimiento al embeber).

También deberás probar cambios en la "temperatura".

Aquí insistir de nuevo que Open WebUI nos va a permitir completar la experiencia añadiendo plug-ins para generar imágenes o audio (en algún caso, si necesita otra app, con Pinokio la podrás instalar fácilmente). También tiene salida a búsqueda por internet.