#!/usr/bin/env bash # # setup.sh — Preparación del entorno para el episodio 841 (GraphRAG III) # # Deja listo lo mínimo para interrogar el grafo con IA 100% local: # 1. Comprueba que Ollama está instalado y en marcha (lo arranca si hace falta). # 2. Descarga los modelos que usa el episodio: # - bge-m3:latest → embeddings (vectores) de la demo # - nomic-embed-text → embeddings por defecto del binario (alternativa) # - llama3.2:3b → resúmenes de comunidad y respuestas de `ask` # 3. Localiza el binario `graphrag` compilado y comprueba su versión. # 4. Comprueba que existe la base de la demo `grafo.db`. # # No instala Rust ni compila nada: si el binario no existe, te dice cómo # compilarlo o instalarlo desde crates.io. # # Uso: # chmod +x setup.sh # ./setup.sh set -euo pipefail # Binario de desarrollo (v0.2.12). Cambia esta ruta si compilas en otro sitio. GRAPHRAG="/data/rust/graphrag/target/release/graphrag" echo "==> 1/4 Comprobando Ollama..." if ! command -v ollama >/dev/null 2>&1; then echo "ERROR: Ollama no está instalado. Instálalo desde https://ollama.ai/" >&2 exit 1 fi if ! curl -sf http://localhost:11434/api/tags >/dev/null 2>&1; then echo "Ollama no responde en http://localhost:11434; lo arranco..." ollama serve >/dev/null 2>&1 & for _ in $(seq 1 30); do if curl -sf http://localhost:11434/api/tags >/dev/null 2>&1; then break; fi sleep 1 done if ! curl -sf http://localhost:11434/api/tags >/dev/null 2>&1; then echo "ERROR: Ollama no arrancó. Lánzalo a mano con: ollama serve" >&2 exit 1 fi fi echo " Ollama está en marcha." echo "==> 2/4 Descargando modelos (si faltan)..." # Embeddings de la demo: bge-m3, ~1 GB ollama pull bge-m3:latest # Embeddings por defecto del binario si no hay config: nomic-embed-text, ~275 MB ollama pull nomic-embed-text # Generación: resúmenes y respuestas de `ask`, llama3.2:3b, ~2 GB ollama pull llama3.2:3b echo " Modelos disponibles:" curl -s http://localhost:11434/api/tags \ | grep -o '"name":"[^"]*"' | sed 's/"name":"/ - /; s/"$//' echo "==> 3/4 Comprobando el binario graphrag..." if [ -x "$GRAPHRAG" ]; then echo " Binario: $GRAPHRAG" "$GRAPHRAG" --version else echo "AVISO: no se encontró $GRAPHRAG" echo "Opciones:" echo " · Compilar desde fuente: cd /data/rust/graphrag && cargo build --release" echo " · Instalar desde crates: cargo install graphrag-search" fi echo "==> 4/4 Comprobando la base de la demo..." if [ -f grafo.db ]; then echo " Base: grafo.db" else echo "AVISO: no se encontró grafo.db en el directorio actual." echo " Es la base construida en el episodio 839; sin ella no hay demo." fi echo echo "Entorno listo. Siguiente paso:" echo " graphrag stats grafo.db" echo " graphrag search \"servidor web seguro\" grafo.db -k 5"