# orderedItems[].object.content
Los programas que dije antes, en su configuración, suelen tener la opción para elegir modelo (poniendo su nombre desde un catálogo o incluirlo descargado desde huggingface.co).

Una vez elegido, por ejemplo, qwen2.5:7b, gemma2:9b, llama3.1:8b o llama3.2:3b, los vamos a configurar.

Yo creo que, habitualmente, tienes que asegurarte de subir el tamaño del contexto y asegurarte que los modelos estén usando todas tus GPUs/CPUs.

Eso, por ejemplo, en Open WebUI, se hace desde el workspace.

# orderedItems[].object.contentMap.es
Los programas que dije antes, en su configuración, suelen tener la opción para elegir modelo (poniendo su nombre desde un catálogo o incluirlo descargado desde huggingface.co).

Una vez elegido, por ejemplo, qwen2.5:7b, gemma2:9b, llama3.1:8b o llama3.2:3b, los vamos a configurar.

Yo creo que, habitualmente, tienes que asegurarte de subir el tamaño del contexto y asegurarte que los modelos estén usando todas tus GPUs/CPUs.

Eso, por ejemplo, en Open WebUI, se hace desde el workspace.

# orderedItems[].object.content
Puedes echar un ojo en esta especie de evaluaciones que hacen de distintos modelos:

- https://lmarena.ai/?leaderboard
- https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard

La librería de Ollama: https://ollama.com/library

Asegúrate que el tamaño (3B, 7B, etc) sea el apropiado para tu caso y que tengan lenguaje castellano (suele ser).

Si estás aquí, obviamente es que modelos 70B o 32B será menos probable que vayas a usar. Aunque dependiendo de la organización, tampoco es algo tan inalcanzable.

Vamos a empezar por alguna tipo 7B.

# orderedItems[].object.contentMap.es
Puedes echar un ojo en esta especie de evaluaciones que hacen de distintos modelos:

- https://lmarena.ai/?leaderboard
- https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard

La librería de Ollama: https://ollama.com/library

Asegúrate que el tamaño (3B, 7B, etc) sea el apropiado para tu caso y que tengan lenguaje castellano (suele ser).

Si estás aquí, obviamente es que modelos 70B o 32B será menos probable que vayas a usar. Aunque dependiendo de la organización, tampoco es algo tan inalcanzable.

Vamos a empezar por alguna tipo 7B.

# orderedItems[].object.content
¿Cómo elegí yo el modelo? Pues descargando varios y probando con las mismas 4 o 5 preguntas. Viendo cuál me ofrecía mejores resultados.

Estas preguntas deberían hacer referencia a datos concretos de los documentos y que necesitaran de un procesamiento "lógico" mezclando diferentes datos.

Hay varios modelos "padre" y muchos "fine-tuneados" de los mismos: Qwen, Llama, Mixtral y Gemma diría que son los principales (luego hay muchos "que heredan" de estos).

# orderedItems[].object.contentMap.es
¿Cómo elegí yo el modelo? Pues descargando varios y probando con las mismas 4 o 5 preguntas. Viendo cuál me ofrecía mejores resultados.

Estas preguntas deberían hacer referencia a datos concretos de los documentos y que necesitaran de un procesamiento "lógico" mezclando diferentes datos.

Hay varios modelos "padre" y muchos "fine-tuneados" de los mismos: Qwen, Llama, Mixtral y Gemma diría que son los principales (luego hay muchos "que heredan" de estos).

# orderedItems[].object.content
c) Qué modelo usar.

Hay muchos modelos libres que puedes usar y van saliendo y actualizando cada muy poco tiempo.

Dependerá de la potencia de tu hardware cuál usar o no.

Así, en resumen te diría que dependiendo de la "cantidad" de parámetros que tenga, y por ende, "potencia", mayor cantidad de proceso y memoria RAM (o VRAM) necesitará.

Por tanto, aquí te toca, de nuevo, probar y elegir el modelo apto y equilibrado para tu propósito y posibilidades.

# orderedItems[].object.contentMap.es
c) Qué modelo usar.

Hay muchos modelos libres que puedes usar y van saliendo y actualizando cada muy poco tiempo.

Dependerá de la potencia de tu hardware cuál usar o no.

Así, en resumen te diría que dependiendo de la "cantidad" de parámetros que tenga, y por ende, "potencia", mayor cantidad de proceso y memoria RAM (o VRAM) necesitará.

Por tanto, aquí te toca, de nuevo, probar y elegir el modelo apto y equilibrado para tu propósito y posibilidades.

# orderedItems[].object.content
Para ver cómo va todo debemos seguir hasta la parte c).

Antes de eso, date una vuelta por Open WebUI, porque ofrece opciones muy interesantes, como funciones o herramientas a modo de "plug-ins".

Lo que conseguiremos es, ejecutando en un PC/servidor, una dirección web a la que podrán conectar los compañeros/as.

Tienes que tener el puerto de comunicación abierto, básicamente bien hecha la configuración de red. No puedo pararme en eso aquí, pero hay info de sobra por la red.

# orderedItems[].object.contentMap.es
Para ver cómo va todo debemos seguir hasta la parte c).

Antes de eso, date una vuelta por Open WebUI, porque ofrece opciones muy interesantes, como funciones o herramientas a modo de "plug-ins".

Lo que conseguiremos es, ejecutando en un PC/servidor, una dirección web a la que podrán conectar los compañeros/as.

Tienes que tener el puerto de comunicación abierto, básicamente bien hecha la configuración de red. No puedo pararme en eso aquí, pero hay info de sobra por la red.

# orderedItems[].object.content
Probaremos creando una base documental. Open WebUI los llama "Knowledge Base". Puedes crearlos desde "Wordspace" o "Espacio de trabajo", según el idioma que hayas configurado.

Dependiendo de tu hardware, tipos de documentos y configuración, ojo, que puede tardar un rato la vectorización de documentos. Asumible.

Lo bueno de este sistema, es que puedes crear bases independientes que añadir o no a un modelo. Muy útil, por ejemplo, para separar información monolítica o actualizable.

# orderedItems[].object.contentMap.es
Probaremos creando una base documental. Open WebUI los llama "Knowledge Base". Puedes crearlos desde "Wordspace" o "Espacio de trabajo", según el idioma que hayas configurado.

Dependiendo de tu hardware, tipos de documentos y configuración, ojo, que puede tardar un rato la vectorización de documentos. Asumible.

Lo bueno de este sistema, es que puedes crear bases independientes que añadir o no a un modelo. Muy útil, por ejemplo, para separar información monolítica o actualizable.

# orderedItems[].object.content
Puedes configurar un indexer. Entiendo que "ayuda" a ubicar contenido de la base de conocimiento. Yo lo he hecho y lo que recomendaría es, como se puede activar/desactivar, hacer pruebas.

También permite hacer OCR al embeber (imágenes o escaneados a texto).

El resto de parámetros... pues toca hacer pruebas... Puedes aumentar el Top K (no tiene por qué ser mejor, depende del caso) o chunksize o overlap.

No quiero pararme a explicar mucho más. De hecho, podéis preguntar a la IA e ir probando.

# orderedItems[].object.contentMap.es
Puedes configurar un indexer. Entiendo que "ayuda" a ubicar contenido de la base de conocimiento. Yo lo he hecho y lo que recomendaría es, como se puede activar/desactivar, hacer pruebas.

También permite hacer OCR al embeber (imágenes o escaneados a texto).

El resto de parámetros... pues toca hacer pruebas... Puedes aumentar el Top K (no tiene por qué ser mejor, depende del caso) o chunksize o overlap.

No quiero pararme a explicar mucho más. De hecho, podéis preguntar a la IA e ir probando.

# orderedItems[].object.content
Para hacer esto también se utilizan sus propios modelos de IA. Puedes hacer pruebas con el modelo que trae Open WebUI, y de hecho, acostúmbrate que toca hacer pruebas y pruebas para ver qué te da mejor resultado.

Al final, yo me quedé con este modelo de embedding: https://huggingface.co/Alibaba-NLP/gte-Qwen2-1.5B-instruct

Dependerá de tu idioma y potencia de proceso poder elegir otro (https://huggingface.co/spaces/mteb/lea derboard). Yo me quedé con este por versátil y ligero.

# orderedItems[].object.contentMap.es
Para hacer esto también se utilizan sus propios modelos de IA. Puedes hacer pruebas con el modelo que trae Open WebUI, y de hecho, acostúmbrate que toca hacer pruebas y pruebas para ver qué te da mejor resultado.

Al final, yo me quedé con este modelo de embedding: https://huggingface.co/Alibaba-NLP/gte-Qwen2-1.5B-instruct

Dependerá de tu idioma y potencia de proceso poder elegir otro (https://huggingface.co/spaces/mteb/lea derboard). Yo me quedé con este por versátil y ligero.

# orderedItems[].object.content
Primero, da una vuelta por la configuración en general para ir dejando las cosas a tu gusto. Obviamente, la parte del modelo de IA es muy importante, pero la trataremos después.

Ahora, vamos a configurar el RAG. En el panel de administración, ve a "Documents".

Lo que vamos a hacer aquí es configurar ciertos aspectos de cómo vamos a nutrir con nuestros documentos a los modelos de IA (embedding).

# orderedItems[].object.contentMap.es
Primero, da una vuelta por la configuración en general para ir dejando las cosas a tu gusto. Obviamente, la parte del modelo de IA es muy importante, pero la trataremos después.

Ahora, vamos a configurar el RAG. En el panel de administración, ve a "Documents".

Lo que vamos a hacer aquí es configurar ciertos aspectos de cómo vamos a nutrir con nuestros documentos a los modelos de IA (embedding).

# orderedItems[].object.content
Ubicado y lanzado el paquete en Pinokio, el proceso de instalación únicamente te pide instalar Ollama (https://ollama.com) y luego va ejecutando automáticamente lo demás. No preocuparse, que avisa de una forma sencilla en pantalla de los escasos pasos a realizar.

Una vez terminado, tendrás ya instalado y podrás ejecutar Open WebUI con su correspondiente dirección en el navegador.

La primera vez que entras, crearás el usuario administrador (puedes configurar los siguientes como usuario).

# orderedItems[].object.contentMap.es
Ubicado y lanzado el paquete en Pinokio, el proceso de instalación únicamente te pide instalar Ollama (https://ollama.com) y luego va ejecutando automáticamente lo demás. No preocuparse, que avisa de una forma sencilla en pantalla de los escasos pasos a realizar.

Una vez terminado, tendrás ya instalado y podrás ejecutar Open WebUI con su correspondiente dirección en el navegador.

La primera vez que entras, crearás el usuario administrador (puedes configurar los siguientes como usuario).

# orderedItems[].object.content
Instalar Open WebUI puede hacerse "cuesta arriba" si no controlas Docker o si eres un usuario menos ducho en estas cosas.

Para eso, la solución es Pinokio: https://pinokio.computer

Es una aplicación que automatiza instalaciones complejas y hace una especie de contenedores que puedes lanzar en tu ordenador muy fácilmente, incluso más que Docker, opino.

Por supuesto, multiplataforma (todo lo que estoy diciendo aquí funciona en Linux) y código abierto.

# orderedItems[].object.contentMap.es
Instalar Open WebUI puede hacerse "cuesta arriba" si no controlas Docker o si eres un usuario menos ducho en estas cosas.

Para eso, la solución es Pinokio: https://pinokio.computer

Es una aplicación que automatiza instalaciones complejas y hace una especie de contenedores que puedes lanzar en tu ordenador muy fácilmente, incluso más que Docker, opino.

Por supuesto, multiplataforma (todo lo que estoy diciendo aquí funciona en Linux) y código abierto.

# orderedItems[].object.content
b) Ahora, el caso que entiendo será más común: que queramos que varias personas utilicen una IA conversacional con nuestros datos de la organización (en nuestra red interna) simplemente accediendo a una web, sin instalar nada.

En este caso, la opción ganadora y recomendadísima es Open WebUI: https://openwebui.com

Por detrás usa Ollama (que básicamente se encarga de comunicar nuestros modelos IA y el hardware) y al final es una web local a la que entras, como si fuera un ChatGPT.

# orderedItems[].object.contentMap.es
b) Ahora, el caso que entiendo será más común: que queramos que varias personas utilicen una IA conversacional con nuestros datos de la organización (en nuestra red interna) simplemente accediendo a una web, sin instalar nada.

En este caso, la opción ganadora y recomendadísima es Open WebUI: https://openwebui.com

Por detrás usa Ollama (que básicamente se encarga de comunicar nuestros modelos IA y el hardware) y al final es una web local a la que entras, como si fuera un ChatGPT.

# orderedItems[].object.content
Por cierto, mención aparte a https://jan.ai, que aunque ahora mismo no tiene nada de "RAG", es súper sencillo para tener un asistente el local con un modelo IA conversacional de código abierto que quieras.

Y un poco más avanzando (y que yo creo que en breve meterán más opciones de RAG, ahora depende de AnythingLLM como comentaba) el ya mencionado LM Studio, ¡muy recomendable!: https://lmstudio.ai

# orderedItems[].object.contentMap.es
Por cierto, mención aparte a https://jan.ai, que aunque ahora mismo no tiene nada de "RAG", es súper sencillo para tener un asistente el local con un modelo IA conversacional de código abierto que quieras.

Y un poco más avanzando (y que yo creo que en breve meterán más opciones de RAG, ahora depende de AnythingLLM como comentaba) el ya mencionado LM Studio, ¡muy recomendable!: https://lmstudio.ai

# orderedItems[].object.content
Luego, en cada una de ellas, podemos adjuntarle carpetas o documentos. En Msty lo llaman "Knowledge Stack" y Gpt4All "LocalDocs".

Date una vuelta por la configuración y añade tu "base documental".

El caso de LM Studio es algo más especial a día de hoy, la he puesto como "mención honorable".

Faltaría, claro, la parte común de elegir un modelo de IA, que ya hablaremos después.

¡Ah! Y claro que todas tienen la funcionalidad de adjuntar documentos en una conversación y preguntarle sobre estos.

# orderedItems[].object.contentMap.es
Luego, en cada una de ellas, podemos adjuntarle carpetas o documentos. En Msty lo llaman "Knowledge Stack" y Gpt4All "LocalDocs".

Date una vuelta por la configuración y añade tu "base documental".

El caso de LM Studio es algo más especial a día de hoy, la he puesto como "mención honorable".

Faltaría, claro, la parte común de elegir un modelo de IA, que ya hablaremos después.

¡Ah! Y claro que todas tienen la funcionalidad de adjuntar documentos en una conversación y preguntarle sobre estos.

# orderedItems[].object.content
a) Si lo vas a usar solo tú en tu PC, te diría estas recomendaciones de software código abierto muy sencillas y que funcionan bien.

El requisito es que tengan RAG o similar, que es como le haces llegar "tu información" concreta a los modelos de IA.

Básicamente, son instalar y ejecutar la aplicación.

1. Msty: https://msty.app
2. Gpt4All: https://gpt4all.io
3. LM Studio (https://lmstudio.ai) + AnythingLLM (https://anythingllm.com)

Son multiplataforma y de instalación sencilla.

# orderedItems[].object.contentMap.es
a) Si lo vas a usar solo tú en tu PC, te diría estas recomendaciones de software código abierto muy sencillas y que funcionan bien.

El requisito es que tengan RAG o similar, que es como le haces llegar "tu información" concreta a los modelos de IA.

Básicamente, son instalar y ejecutar la aplicación.

1. Msty: https://msty.app
2. Gpt4All: https://gpt4all.io
3. LM Studio (https://lmstudio.ai) + AnythingLLM (https://anythingllm.com)

Son multiplataforma y de instalación sencilla.

# orderedItems[].object.content
Tened en cuenta que RAG nutre de información y una base de conocimiento a nuestras consultas a un modelo de IA (Llama, Qwen, el que sea) en todas las conversaciones que iniciamos.

Es decir, podemos explotar cientos de documentos PDF u hojas de cálculo, por ejemplo, y los tendrá en cuenta en cada conversación.

No confundir con adjuntar 3 PDFs cada vez que abras una conversación...

Al tener toda esa base documental podemos pedir explotaciones "lógicas" resultado de unir toda esa información.

# orderedItems[].object.contentMap.es
Tened en cuenta que RAG nutre de información y una base de conocimiento a nuestras consultas a un modelo de IA (Llama, Qwen, el que sea) en todas las conversaciones que iniciamos.

Es decir, podemos explotar cientos de documentos PDF u hojas de cálculo, por ejemplo, y los tendrá en cuenta en cada conversación.

No confundir con adjuntar 3 PDFs cada vez que abras una conversación...

Al tener toda esa base documental podemos pedir explotaciones "lógicas" resultado de unir toda esa información.

# orderedItems[].object.content
Para "nutrirle" de nuestra información no vamos a "entrenar" un modelo de IA (costoso técnica y literalmente) sino que usaremos la técnica RAG, que parece funcionar *decentemente*.

Habría varios casos:

a) Lo quiero usar solo yo en mi PC.
b) Lo quiero para usar compartidamente.

Obviamente, hablo de una red interna, nada de sacar a internet (si tienes que leer esto, ni te lo plantees).

Después, hablaremos de
c) Qué modelo usar.
d) Qué hardware necesito.
e) La base documental.
f) Conclusiones.

# orderedItems[].object.contentMap.es
Para "nutrirle" de nuestra información no vamos a "entrenar" un modelo de IA (costoso técnica y literalmente) sino que usaremos la técnica RAG, que parece funcionar *decentemente*.

Habría varios casos:

a) Lo quiero usar solo yo en mi PC.
b) Lo quiero para usar compartidamente.

Obviamente, hablo de una red interna, nada de sacar a internet (si tienes que leer esto, ni te lo plantees).

Después, hablaremos de
c) Qué modelo usar.
d) Qué hardware necesito.
e) La base documental.
f) Conclusiones.

# orderedItems[].object.content
Bueno, me "estreno" en Mastodon comentando lo más rápido que pueda el resultado de unos cuantos días de intentos e investigación para montar un asistente de IA "ChatGPT" local para tu organización, en tus servidores/equipos, usando herramientas libres, con TU información y en TU hardware, sin pagar y relativamente barato.

# orderedItems[].object.contentMap.es
Bueno, me "estreno" en Mastodon comentando lo más rápido que pueda el resultado de unos cuantos días de intentos e investigación para montar un asistente de IA "ChatGPT" local para tu organización, en tus servidores/equipos, usando herramientas libres, con TU información y en TU hardware, sin pagar y relativamente barato.