Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 11:44
0b44d84

Documentation

  • Guía "RAG en 5 minutos" (docs/easy-rag.md, KJR-TSK-0108): flujo
    completo de la capa Easy RAG — index/query/serve en local, contenedor y
    GCP — con las garantías transversales (sensitivity first, sin fallbacks
    silenciosos, determinismo). Sección nueva en el README y ROADMAP
    reestructurado: Easy RAG pasa a ser la 0.3.0 (entregada en main),
    evaluación avanzada → 0.4.0, persistencia → 0.5.0, ecosistema → 0.6.0+.

Added

  • Módulo Terraform deploy/gcp/ (KJR-TSK-0107): monta el RAG en
    Google Cloud con terraform apply -var project_id=.... Cloud Run v2
    (imagen del Dockerfile, startup probe sobre /health, scale-to-zero),
    Cloud SQL Postgres 16 con pgvector por socket Cloud SQL, bucket GCS con
    el índice montado read-only en /data vía GCS FUSE, PG_URL en Secret
    Manager (contraseña generada por Terraform), Artifact Registry y service
    account con permisos mínimos. API privada por defecto
    (allow_unauthenticated=false); terraform destroy sin huérfanos con
    protecciones explícitas para la base y el bucket. README con el flujo
    completo (build+push, migración pgvector, index vía cloud-sql-proxy,
    rsync del índice, query con identity token). Validado con
    terraform fmt + validate. Layout preparado para deploy/aws|azure.

  • Imagen Docker del servidor RAG (KJR-TSK-0106): Dockerfile
    multi-stage sobre node:22-slim, usuario no root, con los backends
    opcionales preinstalados (pg, @lancedb/lancedb). Sirve el índice
    montado en /data vía HTTP; configuración solo por entorno (PORT,
    KARAJAN_STORE=lancedb|pgvector, PG_URL) — sin secretos horneados.
    docker-compose.yml añade el servicio rag junto a pgvector para un
    RAG local end-to-end. Verificado con smoke real: index + serve + curl
    a /health y /query dentro del contenedor.

  • karajan-rag serve [ruta] (ADR-005, KJR-TSK-0105): sirve el índice
    Easy RAG sin dependencias nuevas. Modo MCP stdio por defecto
    (JSON-RPC 2.0 delimitado por líneas: initialize, tools/list, tools/call)
    con dos tools — rag_query (híbrido vector+BM25) y rag_status
    consumibles desde Claude Code o cualquier cliente MCP. Modo HTTP
    (--http --port N): POST /query {question, topK?} y GET /health,
    con validación estricta y errores JSON. El mismo RagService sirve
    índices locales (lancedb) o remotos (--store pgvector + PG_URL) —
    contrato que empaquetarán la imagen Docker y el Terraform de GCP.
    Módulos nuevos src/easy/{rag-service,http-server,mcp-server}.js,
    re-exportados en el barrel.

  • karajan-rag init [ruta] (ADR-005, KJR-TSK-0104): scaffold de
    karajan.config.json con la sección easy (store, embedder,
    dimensions, topK, adapter). Wizard interactivo con defaults; --yes
    para modo no interactivo (CI/scripts); no sobreescribe sin --force;
    añade .karajan/ al .gitignore. index y query leen la config
    como defaults del proyecto — los flags de CLI siempre ganan, y una
    config inválida falla con el error exacto (nunca se ignora). Nuevo
    módulo src/easy/config.js (loadEasyConfig, saveEasyConfig,
    validateEasyConfig, DEFAULT_EASY_CONFIG) re-exportado en el barrel.

  • karajan-rag query "<pregunta>" [ruta] (ADR-005, KJR-TSK-0103):
    consulta el índice local sin escribir pipeline. Retrieval híbrido en dos
    etapas (vector search sobre el store persistente + BM25 sobre los
    candidatos, merge 50/50 de scores normalizados), dedupe por overlap y
    salida fichero:línea (score) + pasaje. El embedder y las dimensiones
    se derivan del fingerprint del manifest (imposible consultar con un
    espacio vectorial distinto al indexado). --answer --adapter <cli>
    genera respuesta con contexto vía GeneratorRole (claude/codex/gemini/
    ollama/azure/bedrock/vertex). Índice inexistente → error con el comando
    exacto para crearlo. Nuevos queryIndex y runQueryCommand en el barrel.

  • karajan-rag index <ruta> (ADR-005, KJR-TSK-0102): construye o
    actualiza un índice RAG persistente local en .karajan/ con un solo
    comando. Autodetecta código/docs/datos vía presets, embebe en batch y
    hace upsert al store. Reindex incremental: manifest.json guarda el
    fingerprint del índice (ADR-002) y el hash por fichero — solo se
    reprocesan añadidos/cambiados, los borrados se invalidan del store, y
    un cambio de embedder/dimensiones fuerza reindex completo (nunca se
    mezclan espacios vectoriales). Flags: --store lancedb|pgvector|in-memory
    (default lancedb, error accionable si falta el peer; pgvector
    requiere PG_URL), --embedder hash|transformers, --dimensions N.
    Módulos nuevos src/easy/{manifest,indexer,cli}.js, re-exportados en el
    barrel (indexDirectory, diffManifest, runIndexCommand, etc.).

  • Easy RAG — autodetección de fuentes y presets (ADR-005, KJR-TSK-0101):
    detectSourceType, resolvePreset, classifySources y chunkWithPreset
    en src/easy/presets.js. Clasifican ficheros por extensión (código /
    docs / datos, con binarios y desconocidos excluidos de forma explícita)
    y devuelven presets inmutables que reutilizan los chunkers existentes
    con defaults deterministas (hash + lancedb, ADR-005). Los presets
    nunca tocan la policy de sensibilidad ni la redacción PII.

  • Chunker chunkByRecords: para fuentes tabulares (CSV/TSV/JSONL) en
    lotes de N registros; CSV/TSV prependen la cabecera a cada chunk para
    conservar el contexto de columnas, JSONL trocea por objeto. Detección
    auto de formato por la primera línea. Re-exportado en el barrel.