Última actividad 18 hours ago • Unlisted

Demo completa de GraphRAG (episodio 837): comandos, configuracion y script de preparacion de Ollama

config.toml Sin formato
1# Configuración de ejemplo para GraphRAG
2# Situación: los ejemplos del episodio 837.
3#
4# Cópiala a tu ruta de configuración o pásala con:
5# graphrag -C config/config.toml stats demo.db
6#
7# Todos los campos son opcionales; los flags de CLI siempre tienen prioridad.
8# Ruta por defecto en Linux: ~/.config/graphrag/config.toml
9
10# Base de datos por defecto.
11# OJO con el "sentinel": si omites la BD o escribes literalmente 'graphrag.db',
12# se usa ESTE valor.
13db = "demo.db"
14
15# Servidor Ollama
16ollama_url = "http://localhost:11434"
17
18# Modelo de embeddings. En este equipo usamos bge-m3 (config recomendada).
19# En un portátil modesto: "nomic-embed-text".
20embed_model = "bge-m3:latest"
21
22# Modelo de extracción de entidades (NER). Solo se usa en `build`.
23ner_model = "llama3.2:3b"
24
25# Modelo para resumir comunidades y para `ask`.
26summary_model = "llama3.2:3b"
27
28# Búsqueda
29k = 5
30depth = 2
31alpha = 0.7
32
33# Directorio de notas (lo usa el plugin de Neovim y `build` sin argumento)
34notes_dir = ""
35
36# Hilos NER en paralelo durante `build`
37num_threads = 4
38
demo-comandos.sh Sin formato
1#!/usr/bin/env bash
2# Recorrido completo de la demo de GraphRAG (episodio 837)
3# Binario: graphrag 0.2.12 (crate graphrag-search)
4
5# --- Instalacion (una vez) ---
6cargo install graphrag-search
7ollama serve
8ollama pull nomic-embed-text # embeddings (minimo, portatil)
9ollama pull llama3.2:3b # NER (minimo)
10# Con GPU: ollama pull bge-m3 && ollama pull gemma4:e2b
11
12# --- 1. Crear la base demo (SI necesita Ollama; es atomico) ---
13graphrag seed demo.db
14
15# --- 2. Estadisticas (NO necesita Ollama) ---
16graphrag stats demo.db
17
18# --- 3. Busqueda textual FTS5 (NO necesita Ollama) ---
19graphrag fts "Python" demo.db
20
21# --- 4. Busqueda hibrida vectores+grafo (SI necesita Ollama) ---
22graphrag search "Python" demo.db -k 5
23graphrag search "seguridad en contenedores" demo.db
24
25# --- 5. Camino mas corto entre dos conceptos (NO necesita Ollama) ---
26graphrag path "Docker" "SQLite" demo.db
27graphrag path "Prometheus" "SQLite" demo.db
28
29# --- 6. Vecindario de un concepto (NO necesita Ollama; aqui -d SI es profundidad) ---
30graphrag graph "Docker" demo.db -d 2
31graphrag graph "Python" demo.db -d 1
32
33# --- 7. Mapa conceptual TUI (NO necesita Ollama; requiere terminal real) ---
34graphrag map demo.db
35graphrag map --from Docker --depth 3 demo.db
36
setup.sh Sin formato
1#!/usr/bin/env bash
2#
3# setup.sh — Preparación del entorno para la demo de GraphRAG (episodio 837)
4#
5# Instala Ollama si no está, lo arranca si hace falta y descarga los modelos
6# mínimos. Al terminar, verifica que Ollama responde.
7#
8# Uso:
9# ./setup.sh # configuración mínima (portátil modesto)
10# ./setup.sh --gpu # configuración recomendada (mejor calidad)
11#
12set -euo pipefail
13
14OLLAMA_URL="http://localhost:11434"
15GPU=0
16[[ "${1:-}" == "--gpu" ]] && GPU=1
17
18echo "🔧 Preparando el entorno de GraphRAG..."
19echo
20
21# ---------------------------------------------------------------------------
22# 1. Ollama instalado
23# ---------------------------------------------------------------------------
24if ! command -v ollama >/dev/null 2>&1; then
25 echo "📦 Ollama no está instalado. Instalando con el script oficial..."
26 curl -fsSL https://ollama.ai/install.sh | sh
27else
28 echo "✅ Ollama ya está instalado: $(ollama --version 2>/dev/null || echo 'versión desconocida')"
29fi
30
31# ---------------------------------------------------------------------------
32# 2. Arrancar Ollama si no responde
33# ---------------------------------------------------------------------------
34if curl -fsS "${OLLAMA_URL}/api/tags" >/dev/null 2>&1; then
35 echo "✅ Ollama ya está corriendo en ${OLLAMA_URL}"
36else
37 echo "🚀 Arrancando Ollama en segundo plano..."
38 # ollama serve es un proceso de larga duración: lo mandamos al fondo.
39 nohup ollama serve >/tmp/ollama-graphrag.log 2>&1 &
40 # Esperamos hasta 30 s a que levante.
41 for i in $(seq 1 30); do
42 if curl -fsS "${OLLAMA_URL}/api/tags" >/dev/null 2>&1; then
43 echo "✅ Ollama arrancado (tras ${i}s)"
44 break
45 fi
46 sleep 1
47 done
48fi
49
50# Verificación final: si no responde, abortamos con mensaje claro.
51if ! curl -fsS "${OLLAMA_URL}/api/tags" >/dev/null 2>&1; then
52 echo "❌ Ollama no responde en ${OLLAMA_URL}. Revisa /tmp/ollama-graphrag.log"
53 exit 1
54fi
55
56# ---------------------------------------------------------------------------
57# 3. Descargar modelos
58# ---------------------------------------------------------------------------
59if [[ "${GPU}" -eq 1 ]]; then
60 echo
61 echo "🎮 Configuración recomendada (más calidad, más VRAM):"
62 EMBED_MODEL="bge-m3"
63 NER_MODEL="gemma4:e2b"
64else
65 echo
66 echo "💻 Configuración mínima (rápida, funciona en cualquier equipo):"
67 EMBED_MODEL="nomic-embed-text"
68 NER_MODEL="llama3.2:3b"
69fi
70
71echo " - Embeddings: ${EMBED_MODEL}"
72ollama pull "${EMBED_MODEL}"
73
74echo " - NER: ${NER_MODEL}"
75ollama pull "${NER_MODEL}"
76
77# ---------------------------------------------------------------------------
78# 4. Comprobar el binario graphrag
79# ---------------------------------------------------------------------------
80echo
81BIN="${GRAPHRAG_BIN:-$(command -v graphrag || true)}"
82if [[ -n "${BIN}" ]]; then
83 echo "✅ Binario graphrag encontrado: ${BIN}"
84 "${BIN}" --version
85else
86 echo "⚠️ No se encontró el binario 'graphrag' en el PATH."
87 echo " Instálalo con: cargo install graphrag-search"
88 echo " O usa el binario local: /data/rust/graphrag/target/release/graphrag"
89fi
90
91echo
92echo "🎉 Entorno listo. Siguiente paso:"
93echo " graphrag seed demo.db"
94