Només 5 línies
La petita conversa quotidiana

Trobar notes semànticament properes

Sabeu que tinc 25 k notes en markdown (moltes d'elles importades de l'Evernote). El problema del meu sistema és que em fa molta mandra fer enllaços entre notes de manera activa. És feina tediosa i és difícil ser consistent. Això es pot resoldre automàticament, amb un algorisme que detecti notes semànticament properes.

Ahir en 20 minuts ho vaig resoldre. Per ser sincer, ho va resoldre Gemini. Li vaig explicar el problema i vam acabar amb un sistema que calcula un un vector d'incrustacions (vector embeddings) per cada nota i després calcula la distància entre els vectors. Aquests vectors contenen informació semàntica de les notes en un espai multidimensional. Com més propers són, més s'assembla el contingut semàntic, malgrat no utilitzin exactament les mateixes paraules.

Tinc un script que calcula els vectors de les notes noves i les distàncies amb la resta. S'activa cada cop que s'han creat o modificat fitxers, però espera un temps mínim entre activacions. El sentit és que l'script es llança quan no estic editant notes. Els vectors, les distàncies i tot plegat es desa en una base de dades SQLite. També hi ha un script que fa el càlcul inicial.

Finalment, Gemini em va fer una funció per Emacs que mostra un panell amb el llistat de les cinc notes més properes semànticament en relació a la que està activa.

Hauria pogut fer jo aquesta arquitectura amb zero experiència sobre el tema? Suposo que hauria tardat setmanes, per aprendre tot el necessari. Amb Gemini CLI vaig tardar menys d'una hora.

Importaré aquest sistema al blog també i a d'altres projectes que tinc.

Comentaris

Comenta mitjançant Delta Chat