⚠️ Aquest article ha estat generat amb ajuda d’IA

Text escrit amb IA, remenat, retallat i passat pel sedàs. No és cap manifest, ni una lliçó de productivitat, ni un fil de LinkedIn disfressat.

És la crònica d’un experiment: vaig fer un RAG local en unes 24 hores, el vaig provar, em va fer gràcia, em va fer mandra, i el vaig deixar estar.

Repositori: memory-cli.


Vaig construir un RAG en 24 hores… i el vaig abandonar

O dit d’una altra manera: vaig muntar un trasto per indexar documents amb embeddings i després vaig recordar que mantenir trastos també és feina.

Cover del projecte RAG

La idea

Divendres al matí em va agafar la dèria:

“I si tingués una carpeta local mig intel·ligent que classifiqués bookmarks, PDFs, notes i documents escampats?”

La recepta era la de sempre:

  • embeddings,
  • cerca semàntica,
  • taxonomies,
  • chunking,
  • SQLite,
  • i una mica de caos personal.

Vaig obrir PI / Codex i vaig començar a fer-lo a cops de prompt. No hi havia pla noble. Només curiositat i ganes de veure fins on arribava abans de trencar-se.

24 hores després

Cover del projecte RAG

Tenia un CLI funcional anomenat memory-cli.

Feia aquestes coses:

  • sincronitzava categories des d’un YAML,
  • classificava textos contra una taxonomia,
  • indexava documents per chunks,
  • generava embeddings amb un endpoint local,
  • guardava vectors amb sqlite-vec,
  • feia cerca semàntica,
  • mostrava estadístiques,
  • i permetia buscar chunks per fitxers, text o categoria.

No era màgia. Era un prototip bastant directe, enganxant peces conegudes i deixant que la IA fes molta feina mecànica.

El moment absurd

Vaig indexar documents de prova sobre:

  • crustacis marins,
  • warrants financers,
  • tutorials de TypeScript.

Després vaig buscar:

./search-pretty.sh "tipos de crustaceos"

I el sistema va començar a tornar coses com:

  • music-theory,
  • “ondas triangulares”,
  • “mariposas financieras”,
  • machine learning.

Cover del projecte RAG

És a dir: segons el meu RAG, els crustacis vivien en una mena de rave financeres amb Oracle de sintetitzadors.

Perfecte. Per això era un experiment.

No era exactament un bug

El codi feia el que se li havia demanat. El problema era que el que se li havia demanat era massa optimista.

Amb embeddings sols passen coses rares:

  • apareixen falsos positius amb cara de resultat plausible,
  • dues frases poden semblar properes per motius poc útils,
  • una taxonomia fluixa contamina tot el procés,
  • si no poses llindars, tot “encaixa” amb alguna cosa,
  • i el chunking pot destrossar el context amb molta facilitat.

No cal dramatitzar-ho: simplement no estava prou treballat. Era un prototip.

Notes de codi — modificat per PI

He mirat el repositori enllaçat (memory-cli) i el que hi ha és coherent amb aquesta mena de prova:

  • El CLI està fet amb commander i exposa ordres com categories sync, classify, index, search, find i stats.
  • La indexació parteix el text amb chunkText, calcula embeddings per chunk i assigna la millor categoria trobada a la base de categories.
  • La cerca (search) és KNN pur sobre sqlite-vec: embeddeja la query i retorna els vectors més propers.
  • El vector store normalitza embeddings i converteix distància L2 a una similitud tipus cosinus.
  • No hi ha BM25, reranking, llindars de confiança ni cap capa híbrida que freni resultats estranys.
  • La categoria queda guardada com “millor coincidència”, però no sembla haver-hi una comprovació forta de “això realment pertany aquí”.

Això explica força bé els resultats surrealistes. El sistema no “sap” que crustacis i música no tenen gaire a veure; només ordena proximitats dins l’espai vectorial que li has donat.

Per què el vaig deixar aquí

Podia continuar afegint coses:

  • BM25,
  • cerca híbrida,
  • thresholds,
  • reranking,
  • millor parsing de PDFs,
  • UI,
  • correcció manual,
  • feedback,
  • deduplicació,
  • més tests amb dades reals.

Però això ja no era “provar una idea en un dia”. Això era començar un projecte.

I no em venia de gust.

L’estat actual

memory-cli queda com a artefacte d’un cap de setmana: funciona prou per ensenyar la forma del problema, però no prou perquè jo vulgui viure-hi dins.

No hi ha gran conclusió. No hi ha moral. No hi ha “els cinc aprenentatges que canviaran la teva manera de programar”.

Hi ha això:

  • vaig tenir una idea,
  • la vaig prototipar ràpid,
  • vaig riure amb els resultats,
  • vaig mirar el codi,
  • i vaig tancar la paradeta.

TL;DR

Vaig construir un RAG local en unes 24 hores amb ajuda d’IA: memory-cli.

Va funcionar, però de seguida va ensenyar els límits típics d’un sistema basat només en embeddings i KNN.

El vaig abandonar perquè era un experiment, no una nova mascota per mantenir.

Copyleft. Feu-ne el que vulgueu.