Tu vault de Obsidian, convertido en memoria viva: grafo, RAG y chat con Claude
Las notas se acumulan y se vuelven invisibles. Te enseñamos cómo convertir un vault de Obsidian en una memoria consultable: grafo interactivo, búsqueda semántica con RAG y un chat con Claude que resalta los nodos relevantes en el grafo. Si quieres tener algo así, te lo configuramos.
La promesa de un "segundo cerebro" en Obsidian es real solo si las notas se consultan. Si no, es un cementerio prolijo de markdown.
Construimos una capa web sobre nuestro propio vault para resolver exactamente eso: hacer que las notas se vean conectadas, se busquen por significado y se puedan conversar con una IA que entiende el contexto del negocio. Este post explica cómo funciona y, si te interesa tener algo similar sobre tu vault, lo configuramos.
El problema con un vault que solo crece
Una persona escribe notas durante meses. Acumula decisiones, postmortems, ideas, contactos, runbooks. En algún momento, abrir Obsidian para encontrar algo se vuelve más lento que recordarlo de memoria — y peor: si la persona ya no está en el equipo, ese conocimiento no se transfiere.
La interfaz nativa de Obsidian es excelente para escribir, decente para navegar y pobre para descubrir. El plugin de grafo es bonito pero estático; la búsqueda nativa es full-text literal; no hay forma de "preguntarle al vault" en lenguaje natural.
Eso es lo que reemplazamos con una pequeña interfaz web propia.
Lo que se ve en pantalla
Tres paneles, una sola URL:
- Izquierda — sidebar con tres tabs:
- Notes: árbol de carpetas colapsable. Click en una nota → se abre el preview y se resalta el nodo en el grafo.
- Tags: nube de tags con conteo. Click en un tag → busca y resalta todos los nodos que lo tienen.
- Ask: input para preguntarle a Claude. Responde con contexto del vault y resalta las notas que usó.
- Centro — grafo interactivo: cada nota es un nodo, cada wikilink es una arista. Zoom, pan, drag. El tamaño del nodo crece con el número de tags. Los colores se asignan por carpeta (cada empresa, sección o cliente puede tener su color).
- Derecha — preview: el markdown de la nota seleccionada, renderizado con la misma fuente y estilos del editor.
Cuando le preguntas algo al chat, las notas que Claude usó como contexto se iluminan en el grafo y el resto se opaca. Es la diferencia entre una respuesta y una respuesta trazable.
Lo que pasa por debajo
El stack es deliberadamente delgado, para que cualquier equipo lo pueda mantener:
| Capa | Herramienta | Para qué |
|---|---|---|
| Backend | Python 3 (stdlib pura) | Lee el vault del filesystem, sirve la API |
| Frontend | HTML + JS vanilla | UI sin framework, sin build |
| Grafo | D3.js v7 | Force simulation, drag, zoom |
| Búsqueda semántica | Qdrant (local en Docker) | Embeddings de cada nota, búsqueda por similitud |
| Chat | API de Claude | Respuesta con contexto del vault |
| Vault | Obsidian | Sigue siendo la fuente de verdad |
Cinco endpoints en el backend hacen todo: /api/graph (nodos + aristas), /api/search (full-text), /api/search/rag (semántica vía Qdrant), /api/ask (Claude con contexto), /api/note (markdown raw).
El vault se lee directo del filesystem. Cualquier cambio que hagas en Obsidian aparece en la web sin reiniciar nada. Y si Claude o un script crea una nota nueva en ~/vault/, la web también la ve de inmediato.
El flujo que vale la pena
El detalle que cambia el sistema es que Claude responde con referencias al vault y la web las resalta. El flujo:
- Preguntas algo en lenguaje natural ("¿cuál fue la última decisión sobre el pricing del SaaS?").
- El backend hace una búsqueda full-text + RAG en el vault, recoge las 8 notas más relevantes (con un budget de 6000 caracteres) y las pasa a Claude como contexto.
- Claude responde y al final lista las notas que usó.
- La interfaz lee esa lista y resalta esos nodos en el grafo.
Eso es lo que distingue esta clase de herramienta de un ChatGPT con archivos: no te da una respuesta de caja negra. Ves el subgrafo de notas que la sostienen, puedes abrirlas y juzgar la respuesta.
Por qué Qdrant local y no un servicio cloud
Qdrant en Docker es suficiente para vaults de hasta varios miles de notas. No paga mensualidad, no manda los embeddings a un tercero y la latencia de búsqueda es de milisegundos contra localhost.
El indexado se hace con un script que recorre el vault, parte cada nota en chunks, los pasa por un modelo de embeddings (nomic-embed-text, 768 dimensiones, corre en local con Ollama) y los inserta en una colección. Si te interesa entender por qué importa esto, escribimos un post sobre bases de datos vectoriales.
Lo importante para un equipo no técnico: los datos del vault no salen de tu máquina o tu servidor. Solo el prompt y la respuesta pasan por la API de Claude — y eso lo controlás tú.
La parte que casi nadie hace bien
Hay tres detalles que separan una demo bonita de una herramienta que se usa todos los días.
1. Que el grafo no sea ruido
Un grafo con 500 nodos y 2000 aristas es un plato de espaguetti. No sirve.
La solución es colorear por taxonomía (en nuestro caso, top-level folder = empresa o área), permitir resaltar subconjuntos (por búsqueda, tag o resultado del chat) y opacar el resto al 12%. El grafo entero queda visible como contexto, pero el foco está donde lo necesitas.
2. Que el RAG no devuelva basura
Indexar todo el vault sin pensar en chunking lleva a respuestas malas. Las notas largas se cortan en pedazos de tamaño fijo y el modelo recibe fragmentos sin contexto. La calidad de las respuestas se cae al piso.
Lo que funciona en la práctica: chunkear por estructura del documento (títulos, párrafos), preservar metadatos (carpeta, tags, fecha), y reranquear los resultados antes de pasarlos al modelo. Si te interesa el detalle, contamos tres bugs reales de RAG en producción.
3. Que Claude no alucine sobre el vault
Si le pasas contexto incompleto, Claude inventa. La defensa es que el prompt sea explícito: "responde solo con base en estos fragmentos; si no hay información suficiente, dilo". Y validar con queries cuyo resultado conocés, periódicamente.
Lo que cuesta tenerlo (en tiempo y dinero)
- Setup inicial: medio día a un día de trabajo si el vault ya existe y está mínimamente estructurado.
- Servidor: una VPS pequeña ($5–$10/mes) o local. No necesita GPU.
- Embeddings: gratis con Ollama local. Si preferís OpenAI, son centavos por mil chunks.
- Claude API: depende del uso. Para un equipo de 3–5 personas haciendo consultas casuales, suele ser menos de $20/mes.
Cuándo vale la pena para un equipo
Vale la pena si:
- Ya tienes un vault de Obsidian con al menos 50–100 notas y wikilinks reales.
- El equipo escribe ahí, pero el conocimiento "se pierde" — la gente termina preguntando lo mismo en Slack porque buscar es lento.
- Hay decisiones, postmortems o runbooks que importa que sean consultables a meses vista.
- Quieres acceso desde móvil o desde fuera de la oficina sin abrir Obsidian.
No vale la pena si tu vault es un par de notas sueltas o si nadie escribe ahí. Una herramienta sobre un vault muerto sigue mostrando un vault muerto.
En ServerStack Solutions
Configuramos sistemas como este sobre el vault de tu equipo. Lo dejamos corriendo, indexado, conectado a Claude y deployado detrás de Cloudflare Tunnel para acceso seguro desde cualquier lugar — sin abrir puertos, sin VPN.
Si quieres transformar las notas que ya tienes en una memoria viva consultable, hablemos. Una sesión de configuración suele ser la diferencia entre tener archivos en una carpeta y tener un sistema que tu equipo realmente usa.
Relacionado: Bases de datos vectoriales explicadas · RAG en producción: tres bugs reales · Cloudflare Tunnel: cero puertos abiertos.
Preguntas frecuentes
¿Necesito saber programar para usar este sistema?
Para usarlo, no. La interfaz es web — abres una URL y tienes grafo, búsqueda y chat. Para configurarlo desde cero sí hace falta cierta soltura técnica (Docker, Python, una API key de Claude), pero eso es exactamente lo que ofrecemos: lo dejamos corriendo y tú solo escribes en Obsidian como ya lo hacías.
¿Mis notas se envían a algún servicio externo?
No directamente. Los embeddings se generan localmente con Ollama y se guardan en Qdrant en tu propio servidor. Lo único que sale a la API de Claude es el prompt que escribes y los fragmentos de notas que se envían como contexto para esa pregunta — y solo cuando usas el chat. La búsqueda y el grafo funcionan 100% en tu infraestructura.
¿Funciona si mi equipo no usa Obsidian todavía?
Funciona sobre cualquier carpeta de archivos markdown con wikilinks (sintaxis [[Nota]]). Si tu equipo no usa Obsidian, parte del trabajo de configuración es definir una estructura mínima de carpetas y tags, y ayudar a migrar notas existentes desde Notion, Google Docs o donde estén. Sin estructura, ni el grafo ni el RAG ayudan.
¿Puedo usar otro modelo en vez de Claude?
Sí. La API que usa el chat es intercambiable — funcionamos con Claude por calidad de respuesta y estabilidad, pero el sistema admite GPT-4, Gemini o un modelo local vía Ollama (Llama, Qwen, Mistral). Para casos donde la privacidad es crítica, la versión 100% local con Ollama es viable, a costa de respuestas más lentas y menos sofisticadas.
¿Cómo se accede desde fuera de la oficina sin exponer el servidor?
Lo deployamos detrás de Cloudflare Tunnel: la VPS no abre ningún puerto al internet, Cloudflare se encarga del túnel y tú accedés con una URL HTTPS protegida con autenticación. Es la misma arquitectura que usamos en nuestros propios servicios y la cubrimos en detalle en otro post del blog.