Disfruta conmigo de Linux y del Open Source. Aquí encontrarás como sacarle el máximo partido a tu entorno de escritorio Linux, hasta como montar un servidor web, un WordPress, un proxy inverso, una base de datos o cualquier otro servicio que puedas imaginar. Y todo ello, lo puedes montar en una Raspberry Pi, en un VPS, en tu propio ordenador o en cualquier servidor. Vamos, cualquier cosa que quieras hacer con Linux, seguro, seguro, que la encontrarás aquí.
ATA 819 RAG I con SQLite y Ollama, base de conocimiento desde cero
Llevo 15 años escribiendo notas, artículos y tutoriales. El resultado: unos 5000 archivos markdown repartidos por mi disco duro. Y, como te puedes imaginar, encontrar algo ahí dentro es como buscar una aguja en un pajar. Por eso en este episodio me he puesto manos a la obra para montar un sistema RAG (Retrieval-Augmented Generation) 100% local, sin depender de APIs externas, sin enviar tus datos a la nube, y con herramientas que ya conoces: SQLite, Ollama y Python.
Este es el primero de dos episodios sobre RAG. Aquí nos centramos en construir la base de conocimiento: un pipeline que escanea tus documentos, los trocea en fragmentos manejables, extrae los metadatos del frontmatter YAML, genera embeddings con el modelo bge-m3 de Ollama, y lo guarda todo en una base de datos SQLite con búsqueda FTS5. Todo esto, además, con detección incremental de cambios: la primera ejecución tarda lo que tenga que tardar, pero las siguientes son cuestión de segundos porque solo reprocesa lo que ha cambiado.
El stack es sencillo pero potente. SQLite con FTS5 para búsqueda textual, Ollama con bge-m3 para los embeddings, y seis scripts Python que suman unas 1300 líneas. Nada de LangChain, nada de frameworks pesados. Código limpio, comentado y que entiendes de un vistazo. El chunking respeta las cabeceras markdown, usa tiktoken para contar tokens con precisión, y los embeddings se almacenan como BLOBs en la propia SQLite. En el próximo episodio (el 821) usaremos esta base de conocimiento para hacer búsqueda semántica con similitud de coseno, búsqueda híbrida combinando FTS5 con embeddings, y hasta un plugin para Neovim.
Puntos clave del episodio:
- El problema: 15 años de notas, 5000 archivos, cero capacidad de búsqueda
- La solución: RAG local con SQLite + FTS5 + Ollama, todo en tu máquina
- Chunking híbrido que respeta cabeceras markdown y usa tiktoken
- Pipeline incremental con detección de cambios mediante MD5
- Embeddings con bge-m3 (568M parámetros, 1024 dimensiones)
- Búsqueda FTS5 con snippet(), colores ANSI y sintaxis avanzada
- Errores comunes y cómo solucionarlos
Si te gusta el contenido, ya sabes: dale a seguir, compártelo con quien creas que le puede interesar, y déjame un comentario si tienes dudas o sugerencias. La semana que viene, en el episodio 821, montamos la búsqueda semántica y el plugin para Neovim. No te lo pierdas.
Capítulos del episodio:
0:00 - Introducción: RAG y base de conocimiento local
2:12 - El problema: 15 años de notas sin buscar
4:58 - La solución: SQLite + FTS5 + Ollama, 100% local
7:00 - Escaneo de archivos y extracción de front matter
10:20 - Preparación del entorno: Ollama, uv y dependencias
12:00 - Chunking: cómo trocear los documentos
15:45 - Estructura de la base de datos SQLite
17:46 - Pipeline incremental con detección de cambios
19:22 - Demo en vivo: consultas y resultados
22:44 - Errores comunes y cómo solucionarlos
24:10 - Resumen y adelanto del episodio 821
25:15 - Despedida y cierre
Más información y enlaces en las notas del episodio
- 🌐 Aquí lo puedes encontrar todo 👉 https://atareao.es
- ✈️ Telegram (el grupo) 👉 https://t.me/atareao_con_linux
- ✈️ Telegram (el canal) 👉 https://t.me/canal_atareao
- 🦣 Mastodon 👉 https://mastodon.social/@atareao
- 🐦 Twitter 👉 https://twitter.com/atareao
- 🐙 GitHub 👉 https://github.com/atareao