Files
graph_explorer/issues/0022-nl-graph-query.md
egutierrez 9042110ea2 docs(issues): plan enrichers asincronos + recoleccion web (0026-0030)
Cinco issues que componen el plan:
- 0026: sistema de jobs (infra, contrato wire)
- 0027: tipo Webpage + cache de documentos
- 0028: enricher fetch_webpage (MVP end-to-end)
- 0028b: enrichers extract_domain / extract_links / extract_text_entities
- 0029: variantes CDP (Chrome headless, screenshot)
- 0030: macro "Deep enrich" + expand_domain

Tambien anade los issues previos 0012-0025 que estaban untracked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 18:24:13 +02:00

42 lines
1.4 KiB
Markdown

---
id: 0022
title: Consulta del grafo en lenguaje natural via LLM
status: pending
priority: medium
created: 2026-05-01
depends_on: [0001]
---
## Objetivo
Input de texto ("personas relacionadas con BancoX que aparecen en mas de
3 documentos") -> LLM traduce a SQL sobre `operations.db` o a un set de
filtros sobre el grafo en memoria -> resalta el subgrafo resultante.
Complementa el chat de 0001 con un modo "consulta puntual" sin
conversacion: input -> resultado destacado, sin chat history.
## Alcance
- Tool-use ya disponible en 0001 (`query_entities`, `query_relations`).
- Modo "highlight": en lugar de devolver texto, el LLM emite un set de
ids -> la UI dibuja el subgrafo con resaltado y oscurece el resto.
- Boton "save as filter" -> persiste como vista nombrada (issue 0023).
- Historial de queries recientes en un dropdown.
- Indicador de query en curso (puede tardar varios segundos).
## Decisiones
- ¿Mismo cliente HTTP/Anthropic que 0001 o duplicado? Reusar.
- Modelo por defecto el mismo que 0001 (`claude-sonnet-4-6`).
- Query schema (que campos ve el LLM) dado por `types_registry` para
que aprenda los nombres de campos del proyecto.
## Definicion de hecho
- "personas con mas de 5 conexiones" devuelve subgrafo correcto.
- "documentos publicados en 2025" funciona si la metadata tiene fechas.
- Fallo silencioso (LLM mal interpreta) -> mensaje claro y opcion de
reintentar refinando.
- Query guardada como filtro reutilizable.