Autohospedaje de Perplexica con Ollama

¿Ejecutando un servicio estilo copilot localmente? ¡Fácil!

Índice

¡Eso es muy emocionante! En lugar de llamar a copilot o perplexity.ai y contarle al mundo entero qué es lo que buscas, ahora puedes alojar un servicio similar en tu propio PC o laptop.

¿Qué es?

Perplexica es un sistema similar a Copilot y Perplexity.ai.

  • Tú haces una pregunta
  • La IA busca en Internet las respuestas (puedes especificar dónde buscar: artículos académicos, escritura, YouTube, Reddit…)
  • Luego la IA resume todo lo que ha encontrado
  • Luego presenta el resultado con referencias a los sitios web originales
  • También una lista de imágenes y videos de YouTube a la derecha
  • También preguntas de seguimiento listas para que las hagas clic, si quieres explorar un poco más el tema

Esos sistemas están alojados en la nube y pertenecen a algunas corporaciones (por ejemplo, Microsoft o Meta). Perplexica es un software de código abierto que puedes alojar en tu PC o laptop potente.

respuesta de perplexica con llama3.1 8b q6 y jina embeddings Aquí vemos la respuesta de Perplexica con el modelo de chat llama3.1 8b q6 y el modelo de embedding de Jina - a la pregunta ¿Quién es Elon Musk?

Perplexica consta de varios módulos

  1. SearxNG - motor de metabúsqueda. Llamará a 10+ otros motores de búsqueda para obtener los resultados, por lo que Perplexica puede combinarlos. SearxNG es muy configurable por sí mismo, puedes encender y apagar cada motor y agregar nuevos. Pero para nuestros propósitos la configuración predeterminada funciona bien.
  2. Backend y frontend de Perplexica. Técnicamente son dos módulos separados, uno proporciona la API, otro es la interfaz de usuario
  3. Servicio Ollama - que no es parte del proyecto Perplexica, pero si quieres alojar tus LLMs localmente, Ollama es la única forma de usarlos.

Por lo tanto, la instalación de todo el sistema consta de dos pasos grandes:

  1. Instalar Ollama + descargar modelos de Ollama
  2. Instalar Perplexica junto con SearxNG

Instalando Ollama

Para comenzar con Ollama, sigue estos pasos:

Instala Ollama ejecutando el script:

curl -fsSL https://ollama.com/install.sh | sh

Dile a Ollama que descargue tu modelo favorito de LLM. Si es Llama3.1 8b q4 - ejecuta el script:

ollama pull llama3.1:latest

Descarga la última versión de Nomic-Embed-Text para usarla como modelo de embedding (si es tu favorito) usando

ollama pull nomic-embed-text:latest

Edita el archivo de servicio de Ollama ejecutando

sudo systemctl edit ollama.service

Añadiendo las siguientes líneas para exponer Ollama a la red (Perplexica necesita conectarse a él desde dentro de docker)

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Recarga el demonio systemd y reinicia el servicio de Ollama:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Verifica que Ollama se haya iniciado correctamente

systemctl status ollama.service
sudo journalctl -u ollama.service --no-pager

Descripción detallada de cómo instalar, actualizar y configurar Ollama, por favor vea: Instalar y configurar Ollama

Para obtener información detallada sobre el uso de otros modelos de Ollama con Perplexica, por favor consulte la sección ‘Instalando otros modelos de Ollama’ a continuación.

Instalando Perplexica

He instalado Perplexica en docker en Linux, pero un docker-compose muy similar se puede usar en Windows o Mac.

¡Vamos!

Comenzando con Docker (Recomendado) Asegúrate de que Docker esté instalado y en ejecución en tu sistema.

Clona el repositorio de Perplexica:

git clone https://github.com/ItzCrazyKns/Perplexica.git

Después de clonar, navega al directorio que contiene los archivos del proyecto.

cd Perplexica

Renombra el archivo sample.config.toml a config.toml. Si planeas actualizar Perplexica más adelante - para hacer un git pull en este repositorio - entonces simplemente copia el archivo sample.config.toml a config.toml

cp sample.config.toml config.toml

Edita el archivo de configuración

nano config.toml

Para configuraciones de Docker, solo necesitas llenar los siguientes campos:

OLLAMA: Tu URL de API de Ollama.

Debes introducirla como http://host.docker.internal:PORT_NUMBER.

Si instalaste Ollama en el puerto 11434 (ese es el predeterminado), usa http://host.docker.internal:11434. Para otros puertos, ajusta según corresponda.

Mientras aún estés en el directorio de Perplexica, ejecuta:

docker compose up -d

Esto descargará las imágenes de SearxNG y el nodo base de docker, construirá dos imágenes de docker de Perplexica y iniciará 3 contenedores. Espera unos minutos para que se complete la configuración.

Puedes acceder a Perplexica en http://localhost:3000 en tu navegador web.

Ve a Configuración. Sabes, el icono de engranaje en la parte inferior izquierda, y elige tus modelos de Ollama

configuración de perplexica - configurando modelos de ollama

Aquí ves el modelo de chat seleccionado llama3.1:8b-instruct-q6_K (Llama 3.1 8b con cuantización q6_K), y el modelo de embedding nomic-embed-text:137m-v1.5-fp16.

También puedes seleccionar el tema claro o oscuro según lo que más te guste.

Opciones de búsqueda de Perplexica (Haz clic en este ojo en el icono de la caja), en el tema oscuro: opciones de búsqueda de perplexica

Instalando otros modelos de Ollama

Ya has instalado los modelos llama3.1:latest y nomic-embed-text:latest en la sección anterior “Instalando Ollama”.

Solo necesitas un modelo para el chat, pero hay muchos modelos disponibles. Se comportan ligeramente diferentes, es bueno comenzar con los más comunes: Llama3.1, Gemma2, Mistral Nemo o Qwen2.

Modelos de chat

El nombre completo del modelo de chat que viste en la sección de instalación - llama3.1:latest es llama3.1:8b-text-q4_0. Eso significa que tiene 8 mil millones de parámetros y cuantización 4_0. Es rápido y relativamente pequeño (4,8 GB), pero si tu GPU tiene algo más de memoria, te recomendaría que intentes

  • llama3.1:8b-instruct-q6_K (6,7 GB) - en mis pruebas mostró una respuesta mucho mejor, aunque un poco más lenta.
  • llama3.1:8b-instruct-q8_0 (8,5 GB) - o quizás este.

En general, todos los modelos del grupo llama3.1:8b son relativamente rápidos.

puedes extraer los que te recomiendo probar con el script:

ollama pull llama3.1:8b-instruct-q6_K
ollama pull llama3.1:8b-instruct-q8_0

Comparado con Llama3.1:8b, Gemma2 produce respuestas más concisas y artísticas. Prueba estos:

# 9,8 GB
ollama pull gemma2:9b-instruct-q8_0

# 14 GB
ollama pull gemma2:27b-instruct-q3_K_L

Los modelos Mistral Nemo producen respuestas en algún lugar entre gemma2 y llama3.1.

# el predeterminado, 7,1 GB
ollama pull mistral-nemo:12b-instruct-2407-q4_0

# 10 GB
ollama pull mistral-nemo:12b-instruct-2407-q6_K

# 13 GB
ollama pull mistral-nemo:12b-instruct-2407-q8_0

También podrías querer probar los modelos Qwen2

# el predeterminado, 4,4 GB
ollama pull qwen2:7b-instruct-q4_0

# 8,1 GB
ollama pull qwen2:7b-instruct-q8_0

Los modelos que más me gustaron son: llama3.1:8b-instruct-q6_K y mistral-nemo:12b-instruct-2407-q8_0.

Para ver los modelos que Ollama tiene en su repositorio local:

ollama list

Para eliminar algunos modelos innecesarios:

ollama rm qwen2:7b-instruct-q4_0 # por ejemplo

Modelos de embedding

Puedes omitir la instalación de estos, Perplexica tiene preinstalados 3 modelos de embedding: BGE Small, GTE Small y Bert bilingüe. Funcionan bastante bien, pero podrías querer probar otros modelos de embedding.

En la sección anterior de instalación de Ollama instalaste el modelo de embedding nomic-embed-text:latest, es un buen modelo, pero te recomendaría que también intentes:

ollama pull jina/jina-embeddings-v2-base-en:latest
# y 
ollama pull bge-m3:567m-fp16

Me gustaron más los resultados del modelo jina/jina-embeddings-v2-base-en:latest, pero pruébalo tú mismo.

Instalación de Perplexica en la red

Si lo instalas en un servidor de red, entonces antes de

docker compose up -d

o si ya estás ejecutando Perplexica y necesitas reconstruir las imágenes

# Detén y elimina todos los contenedores (!!! solo si es necesario)
docker compose down --rmi all

Coloca la dirección IP de tu servidor de Perplexica en docker-compose.yaml: luego antes de

nano docker-compose.yaml
perplexica-frontend:
    build:
      context: .
      dockerfile: app.dockerfile
      args:
      - NEXT_PUBLIC_API_URL=http://127.0.0.1:3001/api   # << aquí
      - NEXT_PUBLIC_WS_URL=ws://127.0.0.1:3001          # << aquí
    depends_on:
      - perplexica-backend

ahora inicia los contenedores de Perplexica y SearxNG:

docker compose up -d

O reconstruye y inicia:

docker compose up -d --build

Actualizando Perplexica

Perplexica en ejecución en docker:

# Detén y elimina todos los contenedores (!!! solo si es necesario)
docker compose down --rmi all

# navega al directorio del proyecto
# donde clonaste perplexica durante la instalación
cd Perplexica

# actualiza
git pull

# Actualiza y Reconstruye los contenedores de Docker:
docker compose up -d --build

Para instalaciones no en docker, por favor vea: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md

Preguntas frecuentes

  • P: ¿Qué es Perplexica?

  • R: Perplexica es un motor de búsqueda de IA gratuito y autoalojado, y una alternativa a perplexity.ai y los sistemas Copilot que permite a los usuarios ejecutar su propio motor de búsqueda localmente en su computadora.

  • P: ¿Cuáles son los pasos para instalar y configurar Perplexica con Ollama?

  • R: Los pasos incluyen instalar Ollama, extraer los modelos, luego instalar Perplexica.

  • P: ¿Cuáles son las opciones de personalización disponibles en Perplexica?

  • R: Las opciones incluyen elegir diferentes modelos como LLama 3.1, Mistral Nemo o Gemma2, configurar modelos de embedding locales y explorar varias opciones de búsqueda como noticias, artículos académicos, videos de YouTube y foros de Reddit.

  • P: ¿Qué modelo de Ollama usar con Perplexica?

  • R: Los mejores resultados que obtuvimos en nuestras pruebas fueron cuando ejecutamos Perplexica con llama3.1:8b-instruct-q6_K y jina/jina-embeddings-v2-base-en:latest.

Enlaces útiles