The Closing Window
Conoce Sift: Una base de conocimiento para todo lo que no es una nota image
Photo by Rabie Madaci on Unsplash

Conoce Sift: Una base de conocimiento para todo lo que no es una nota

AI Insights

TL;DR

Sift es una base de conocimiento personal que construí en tres o cuatro meses. Ingesta cualquier cosa — URLs, PDFs, marcadores, páginas web, archivos de video y audio — y lo hace todo buscable por significado, no solo por palabras clave, con consciencia de cuándo se guardaron las cosas. Corre en tu propio hardware, responde preguntas usando tu propio material guardado como fuentes, y funciona junto a Obsidian en vez de reemplazarlo. Lo publiqué como código abierto en github.com/pablooliva/sift. Este post es la historia de por qué existe, qué aprendí al construirlo, y qué esperar si lo clonas.


Mis marcadores me ahorraron dinero

Hace unas semanas, estaba diseñando un pipeline de publicación multimedia para este sitio. Necesitaba herramientas de síntesis de voz y generación de video, y tenía un presupuesto aproximado en mente, algo así como $56/mes entre varias suscripciones SaaS.

Antes de comprometerme, busqué en mi base de conocimiento Sift. Me mostró dos integraciones de ComfyUI que había guardado como marcadores una semana antes: Qwen3-TTS para clonación de voz local y LTX-2.3 para generación de video open-source con soporte de retratos. Las había guardado como simples marcadores de URL con descripciones cortas — la forma de ingesta de menor esfuerzo posible.

Esos dos resultados cambiaron todo el pipeline de un stack SaaS de pago a un enfoque local de $0.

No recordaba haberlos guardado. No los habría encontrado con una búsqueda por palabras clave. No estaba buscando "ComfyUI" ni "Qwen3-TTS." Estaba buscando lo que hacen. Sift entendió el significado de mi consulta y lo emparejó con contenido en el que apenas había pensado desde que lo guardé.

Eso es lo que realmente hace una base de conocimiento externa funcional. Muestra la información correcta en el momento correcto, incluso de contenido que olvidaste haber guardado — especialmente cuando ese contenido viene de las fuentes en las que has aprendido a confiar.


Qué es Sift realmente

Si has seguido esta serie — primer post, segundo post — Sift es la siguiente capa: todo lo que no es un archivo de texto local.

En su forma más simple: Sift es una base de conocimiento personal que ingesta documentos de cualquier tipo y los hace consultables. Puedes buscar por significado, o puedes hacerle una pregunta y obtener una respuesta con citas extraídas de tu propio material.

Corre en tu propio hardware, en su mayoría. Yo lo corro en un servidor casero, pero funciona en cualquier máquina con Docker. Sí uso un proveedor de inferencia LLM para algunos flujos de trabajo de AI, pero tus datos siguen siendo tuyos.

No es un reemplazo de Obsidian. Es un complemento. Obsidian guarda mis notas de trabajo — cosas que escribo, pienso y enlazo entre sí. Sift guarda todo lo demás — cosas que he encontrado, guardado, y quiero poder encontrar después.


Cómo se construyó

Sift comenzó con dos preguntas.

La primera era práctica: ¿qué pasaría si tuviera un solo contenedor para todo lo que cruza mi camino, sin importar el medio? ¿Un lugar donde una URL, un PDF y una nota de texto terminen siendo buscables en el mismo sistema?

La segunda era metodológica: ¿podría construir un proyecto real usando desarrollo dirigido por especificaciones (SDD) con un agente de codificación AI de principio a fin? No un prototipo rápido, sino un sistema correctamente diseñado con especificaciones formales, revisiones críticas y decisiones documentadas.

Tres meses y 549 commits después, la respuesta a ambas es sí, con matices.

La elección de tecnología

Elegí txtai como base porque venía con todo incluido: embeddings, búsqueda vectorial y una API web en un solo paquete Python con dependencias mínimas. Sin base de datos vectorial separada que configurar, sin servicios extra que correr. Para una prueba de concepto, eso importaba.

Lo que descubrí rápidamente fue lo que "todo incluido" realmente significaba en la práctica. Algunos de los modelos por defecto estaban desactualizados. Partes del stack tenían un rendimiento inferior comparado con alternativas independientes. La conveniencia que me permitió arrancar se convirtió en una limitación conforme el sistema maduraba.

Esto llevó a una fuerte personalización. Cambié el backend vectorial a Qdrant para mejor rendimiento y persistencia. Integré Graphiti y Neo4j para capacidades de grafo de conocimiento — entender no solo qué he guardado, sino cómo los conceptos se relacionan entre sí. Añadí Together.ai como backend LLM para generación RAG, porque los modelos locales no eran lo suficientemente buenos para sintetizar respuestas del contexto recuperado.

En retrospectiva, probablemente debería haber abandonado txtai por completo en algún momento y haber construido una solución personalizada desde cero. Pero hay una lección en esa decisión también: a veces el costo de empezar de nuevo supera el costo de trabajar alrededor de las limitaciones, especialmente cuando el sistema ya está entregando valor. La historia de ComfyUI ocurrió con estas limitaciones presentes.

El proceso de ingeniería

La historia menos obvia es el proceso de desarrollo en sí. Sift tiene más de 45 documentos de especificación formal — requisitos, investigación, revisiones críticas, resúmenes de implementación. Cada decisión significativa fue escrita antes de escribir código. Cada especificación fue revisada críticamente, a menudo por Claude Code actuando como una segunda perspectiva sobre el diseño. Un plugin de Claude Code que había desarrollado hizo que este flujo de trabajo de desarrollo funcionara fluidamente.

Suena excesivo para un proyecto personal, y quizás lo es. Pero los artefactos de SDD resultaron ser valiosos de formas que no esperaba. Cuando encontré un bug seis semanas después de una decisión de diseño, la especificación me decía por qué había tomado esa decisión. Cuando quería cambiar un componente, el documento de investigación me decía qué alternativas ya había evaluado y descartado. La documentación del proceso se convirtió en su propia forma de gestión del conocimiento.


Disfruta con precaución

Estoy liberando esto como código abierto porque creo que es útil, no porque esté pulido. Esto es lo que debes saber:

txtai tiene limitaciones reales. Algunos modelos en el stack por defecto están desactualizados, y si empezara hoy, probablemente construiría sobre una base diferente. Correr la aplicación original de txtai requería 20 GB de VRAM, consumidos constantemente. Esto era inaceptable y una de las mayores razones por las que emprendí toda la refactorización, además de añadir y mejorar funcionalidades. Las personalizaciones que he hecho funcionan y están integradas de manera relativamente limpia, pero añaden complejidad que no existiría con una arquitectura más ligera.

El grafo de conocimiento es prometedor pero costoso. Graphiti usa llamadas LLM para extraer entidades y relaciones de los documentos; aproximadamente 12-15 llamadas por fragmento. Eso se acumula rápido. Importar todas mis notas de Obsidian al grafo de conocimiento de Sift es algo que quiero hacer pero no he hecho, porque los costos de API no son triviales. El grafo actualmente tiene 796 entidades y solo 19 relaciones, lo que significa que el 97.7% de los nodos están aislados. Funciona, pero aún no es lo suficientemente denso para mostrar el tipo de conexiones que un grafo de conocimiento maduro debería.

Corre en un servidor casero. La configuración de Docker necesita una máquina con especificaciones razonables. Esta no es una app liviana. Documentaré los requisitos de hardware en el repo, pero espera necesitar más que una Raspberry Pi.

Es un proyecto personal con compromisos personales. Algunas decisiones optimizan específicamente para mi flujo de trabajo. Algo de código podría estar más limpio. Las especificaciones SDD documentan el razonamiento, así que puedes juzgar por ti mismo si mis compromisos se alinean con tus necesidades.


Por qué código abierto

Algunas razones, y son más personales que estratégicas.

La serie de KM hace afirmaciones sobre construir un sistema de grado producción. Sin un repo público, tienes que confiar en mi palabra. Con uno, puedes verificar, clonar y correrlo tú mismo.

El proceso de ingeniería — las más de 45 especificaciones, las revisiones críticas, los documentos de investigación — es tan interesante como el código. No he visto otro proyecto personal en GitHub que se publique con este nivel de documentación de proceso. Si el enfoque SDD resuena contigo, el directorio SDD/ es donde mirar.

Y honestamente, nada exactamente así existe en el ecosistema. Hay demos de RAG, hay ejemplos de txtai, hay tutoriales de grafos de conocimiento. Pero este sistema combina txtai + Graphiti + Neo4j + Qdrant + MCP server + consumo por un agente AI. ¿No suenan fascinantes todas estas tecnologías usadas juntas? Si tu respuesta es sí... entonces nerd reconoce nerd.

El repo está activo en github.com/pablooliva/sift.


Qué sigue

Este post es el anuncio. La inmersión técnica viene en el próximo post de la serie, donde recorreré la arquitectura de Sift en detalle. Si quieres entender cómo funciona antes de clonarlo, ese es el que hay que esperar.

Después de eso, cubriré cómo MCP y Claude Code conectan Sift, CK Search y Obsidian en un sistema unificado que un agente AI puede consultar simultáneamente a través de todos ellos. Ahí es donde las herramientas individuales se vuelven más que la suma de sus partes.

Por ahora, si tienes curiosidad, el repo tiene un README e instrucciones de configuración. Clónalo, rómpelo, babea sobre él. Para eso está.


Este post es parte de la serie de Gestión del Conocimiento con AI. Anterior: Encontrando significado en tus notas con CK Search. Siguiente: Más allá de Obsidian — Construyendo una base de conocimiento externa con Sift.

Powered by Buttondown.