atareao zrewidował ten Gist 19 hours ago. Przejdź do rewizji
3 files changed, 165 insertions
config.toml(stworzono plik)
| @@ -0,0 +1,37 @@ | |||
| 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. | |
| 13 | + | db = "demo.db" | |
| 14 | + | ||
| 15 | + | # Servidor Ollama | |
| 16 | + | ollama_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". | |
| 20 | + | embed_model = "bge-m3:latest" | |
| 21 | + | ||
| 22 | + | # Modelo de extracción de entidades (NER). Solo se usa en `build`. | |
| 23 | + | ner_model = "llama3.2:3b" | |
| 24 | + | ||
| 25 | + | # Modelo para resumir comunidades y para `ask`. | |
| 26 | + | summary_model = "llama3.2:3b" | |
| 27 | + | ||
| 28 | + | # Búsqueda | |
| 29 | + | k = 5 | |
| 30 | + | depth = 2 | |
| 31 | + | alpha = 0.7 | |
| 32 | + | ||
| 33 | + | # Directorio de notas (lo usa el plugin de Neovim y `build` sin argumento) | |
| 34 | + | notes_dir = "" | |
| 35 | + | ||
| 36 | + | # Hilos NER en paralelo durante `build` | |
| 37 | + | num_threads = 4 | |
demo-comandos.sh(stworzono plik)
| @@ -0,0 +1,35 @@ | |||
| 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) --- | |
| 6 | + | cargo install graphrag-search | |
| 7 | + | ollama serve | |
| 8 | + | ollama pull nomic-embed-text # embeddings (minimo, portatil) | |
| 9 | + | ollama 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) --- | |
| 13 | + | graphrag seed demo.db | |
| 14 | + | ||
| 15 | + | # --- 2. Estadisticas (NO necesita Ollama) --- | |
| 16 | + | graphrag stats demo.db | |
| 17 | + | ||
| 18 | + | # --- 3. Busqueda textual FTS5 (NO necesita Ollama) --- | |
| 19 | + | graphrag fts "Python" demo.db | |
| 20 | + | ||
| 21 | + | # --- 4. Busqueda hibrida vectores+grafo (SI necesita Ollama) --- | |
| 22 | + | graphrag search "Python" demo.db -k 5 | |
| 23 | + | graphrag search "seguridad en contenedores" demo.db | |
| 24 | + | ||
| 25 | + | # --- 5. Camino mas corto entre dos conceptos (NO necesita Ollama) --- | |
| 26 | + | graphrag path "Docker" "SQLite" demo.db | |
| 27 | + | graphrag path "Prometheus" "SQLite" demo.db | |
| 28 | + | ||
| 29 | + | # --- 6. Vecindario de un concepto (NO necesita Ollama; aqui -d SI es profundidad) --- | |
| 30 | + | graphrag graph "Docker" demo.db -d 2 | |
| 31 | + | graphrag graph "Python" demo.db -d 1 | |
| 32 | + | ||
| 33 | + | # --- 7. Mapa conceptual TUI (NO necesita Ollama; requiere terminal real) --- | |
| 34 | + | graphrag map demo.db | |
| 35 | + | graphrag map --from Docker --depth 3 demo.db | |
setup.sh(stworzono plik)
| @@ -0,0 +1,93 @@ | |||
| 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 | + | # | |
| 12 | + | set -euo pipefail | |
| 13 | + | ||
| 14 | + | OLLAMA_URL="http://localhost:11434" | |
| 15 | + | GPU=0 | |
| 16 | + | [[ "${1:-}" == "--gpu" ]] && GPU=1 | |
| 17 | + | ||
| 18 | + | echo "🔧 Preparando el entorno de GraphRAG..." | |
| 19 | + | echo | |
| 20 | + | ||
| 21 | + | # --------------------------------------------------------------------------- | |
| 22 | + | # 1. Ollama instalado | |
| 23 | + | # --------------------------------------------------------------------------- | |
| 24 | + | if ! 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 | |
| 27 | + | else | |
| 28 | + | echo "✅ Ollama ya está instalado: $(ollama --version 2>/dev/null || echo 'versión desconocida')" | |
| 29 | + | fi | |
| 30 | + | ||
| 31 | + | # --------------------------------------------------------------------------- | |
| 32 | + | # 2. Arrancar Ollama si no responde | |
| 33 | + | # --------------------------------------------------------------------------- | |
| 34 | + | if curl -fsS "${OLLAMA_URL}/api/tags" >/dev/null 2>&1; then | |
| 35 | + | echo "✅ Ollama ya está corriendo en ${OLLAMA_URL}" | |
| 36 | + | else | |
| 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 | |
| 48 | + | fi | |
| 49 | + | ||
| 50 | + | # Verificación final: si no responde, abortamos con mensaje claro. | |
| 51 | + | if ! 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 | |
| 54 | + | fi | |
| 55 | + | ||
| 56 | + | # --------------------------------------------------------------------------- | |
| 57 | + | # 3. Descargar modelos | |
| 58 | + | # --------------------------------------------------------------------------- | |
| 59 | + | if [[ "${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" | |
| 64 | + | else | |
| 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" | |
| 69 | + | fi | |
| 70 | + | ||
| 71 | + | echo " - Embeddings: ${EMBED_MODEL}" | |
| 72 | + | ollama pull "${EMBED_MODEL}" | |
| 73 | + | ||
| 74 | + | echo " - NER: ${NER_MODEL}" | |
| 75 | + | ollama pull "${NER_MODEL}" | |
| 76 | + | ||
| 77 | + | # --------------------------------------------------------------------------- | |
| 78 | + | # 4. Comprobar el binario graphrag | |
| 79 | + | # --------------------------------------------------------------------------- | |
| 80 | + | echo | |
| 81 | + | BIN="${GRAPHRAG_BIN:-$(command -v graphrag || true)}" | |
| 82 | + | if [[ -n "${BIN}" ]]; then | |
| 83 | + | echo "✅ Binario graphrag encontrado: ${BIN}" | |
| 84 | + | "${BIN}" --version | |
| 85 | + | else | |
| 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" | |
| 89 | + | fi | |
| 90 | + | ||
| 91 | + | echo | |
| 92 | + | echo "🎉 Entorno listo. Siguiente paso:" | |
| 93 | + | echo " graphrag seed demo.db" | |