#!/usr/bin/env bash # # setup.sh — Preparación del entorno para la demo de GraphRAG (episodio 837) # # Instala Ollama si no está, lo arranca si hace falta y descarga los modelos # mínimos. Al terminar, verifica que Ollama responde. # # Uso: # ./setup.sh # configuración mínima (portátil modesto) # ./setup.sh --gpu # configuración recomendada (mejor calidad) # set -euo pipefail OLLAMA_URL="http://localhost:11434" GPU=0 [[ "${1:-}" == "--gpu" ]] && GPU=1 echo "🔧 Preparando el entorno de GraphRAG..." echo # --------------------------------------------------------------------------- # 1. Ollama instalado # --------------------------------------------------------------------------- if ! command -v ollama >/dev/null 2>&1; then echo "📦 Ollama no está instalado. Instalando con el script oficial..." curl -fsSL https://ollama.ai/install.sh | sh else echo "✅ Ollama ya está instalado: $(ollama --version 2>/dev/null || echo 'versión desconocida')" fi # --------------------------------------------------------------------------- # 2. Arrancar Ollama si no responde # --------------------------------------------------------------------------- if curl -fsS "${OLLAMA_URL}/api/tags" >/dev/null 2>&1; then echo "✅ Ollama ya está corriendo en ${OLLAMA_URL}" else echo "🚀 Arrancando Ollama en segundo plano..." # ollama serve es un proceso de larga duración: lo mandamos al fondo. nohup ollama serve >/tmp/ollama-graphrag.log 2>&1 & # Esperamos hasta 30 s a que levante. for i in $(seq 1 30); do if curl -fsS "${OLLAMA_URL}/api/tags" >/dev/null 2>&1; then echo "✅ Ollama arrancado (tras ${i}s)" break fi sleep 1 done fi # Verificación final: si no responde, abortamos con mensaje claro. if ! curl -fsS "${OLLAMA_URL}/api/tags" >/dev/null 2>&1; then echo "❌ Ollama no responde en ${OLLAMA_URL}. Revisa /tmp/ollama-graphrag.log" exit 1 fi # --------------------------------------------------------------------------- # 3. Descargar modelos # --------------------------------------------------------------------------- if [[ "${GPU}" -eq 1 ]]; then echo echo "🎮 Configuración recomendada (más calidad, más VRAM):" EMBED_MODEL="bge-m3" NER_MODEL="gemma4:e2b" else echo echo "💻 Configuración mínima (rápida, funciona en cualquier equipo):" EMBED_MODEL="nomic-embed-text" NER_MODEL="llama3.2:3b" fi echo " - Embeddings: ${EMBED_MODEL}" ollama pull "${EMBED_MODEL}" echo " - NER: ${NER_MODEL}" ollama pull "${NER_MODEL}" # --------------------------------------------------------------------------- # 4. Comprobar el binario graphrag # --------------------------------------------------------------------------- echo BIN="${GRAPHRAG_BIN:-$(command -v graphrag || true)}" if [[ -n "${BIN}" ]]; then echo "✅ Binario graphrag encontrado: ${BIN}" "${BIN}" --version else echo "⚠️ No se encontró el binario 'graphrag' en el PATH." echo " Instálalo con: cargo install graphrag-search" echo " O usa el binario local: /data/rust/graphrag/target/release/graphrag" fi echo echo "🎉 Entorno listo. Siguiente paso:" echo " graphrag seed demo.db"