Data · 3D · Recherche · 06/11

Brain Map 3D

Mes pensées en constellation. 191 nœuds, 421 liens, 10 clusters — projetés en 3D, explorables à la souris, avec une caméra qui vole vers ce que je cherche.

Brain Map : les concepts reliés en une carte de nœuds.
Brain Map : les concepts reliés en une carte de nœuds.

Comment ça est né

Igor est la mémoire, mais la mémoire, c'est une liste. Brain Map 3D, c'est la mémoire en volume. L'idée : si chaque pensée est un point dans un espace, alors mes idées forment une forme — et cette forme, on peut la voir, la tourner, la traverser. C'est un outil d'exploration autant qu'un visual : il répond à « qu'est-ce que je sais, et comment c'est organisé ? »

Le projet est la visualisation d'Igor : il consomme les mêmes embeddings que le second brain, mais les projette en 3D pour les rendre navigables. Là où Igor répond à une question, Brain Map répond à une intuition — on cherche un endroit, on arrive dans un quartier de pensées.

Le contexte

Chaque pensée capturée par Igor est un embedding de 3072 dimensions. Impossible à visualiser tel quel. Je les réduis par t-SNE / PCA vers trois dimensions, en préservant les voisinages — deux pensées proches dans l'espace 3072 le restent en 3D. Le résultat est un nuage que l'on peut regarder.

Puis je regroupe avec DBSCAN en clusters, sans nombre d'amas fixé à l'avance : DBSCAN découpe la densité et renvoie ce qui ressemble à un vrai amas, plus un bruit que l'on peut choisir d'ignorer. Résultat : 191 nœuds, 421 liens et 10 amas qui se dessinent comme une constellation, avec des zones denses et des espaces vides qui disent quelque chose sur la façon dont je pense.

C'est un outil d'exploration : une recherche sémantique par cosine KNN qui rapproche ce qui se ressemble par le sens, des filtres pour trancher le volume, une timeline pour le naviguer dans le temps, et un « fly-to » qui amène la caméra en douceur vers un nœud précis. Un panneau de détail affiche la pensée sélectionnée.

Le tout est rendu dans Three.js, avec un bloom qui fait respirer les amas et des OrbitControls pour voler librement. Côté backend, il y a un cache avec fallback : les embeddings et le graphe sont précalculés et servis en cache, pour que l'exploration soit instantanée même si le calcul de fond bouge.

Le point dur

Projeter 3072 dimensions en 3D sans mentir à la structure

Réduire de 3072 à 3 dimensions, c'est forcément perdre de l'information. Le point dur, c'est de préserver ce qui compte : la proximité sémantique. t-SNE excelle à préserver les voisinages locaux mais est instable (même corpus, deux projections différentes) ; PCA est stable mais écrase les détails. J'ai dû choisir le bon compromis et valider visuellement que les amas obtenus correspondent bien à des thèmes réels de mes pensées, et pas à un artefact de la réduction.

Le deuxième point dur, c'est le rendu d'un graphe lisible : 191 nœuds et 421 liens, c'est dense. J'ai dû doser l'opacité, le bloom et l'épaisseur des liens pour que le volume reste lisible, et faire un fly-to qui amène la caméra sans nausée. C'est autant du design que de la data-viz.

Fonctionnalités

191 nœuds · 421 liens 10 clusters

Le graphe complet de mes pensées, projeté en 3 dimensions et regroupé en amas denses.

Projection 3D t-SNE / PCA + DBSCAN

Des embeddings de 3072 dimensions ramenés à 3D, puis clustering pour révéler les zones de pensée.

Recherche sémantique cosine KNN

On cherche par sens, pas par mot : l'outil rapproche les pensées qui se ressemblent.

Fly-to & détail bloom · OrbitControls

La caméra vole vers un nœud, un panneau affiche le détail, une timeline et des filtres tranchent le volume.

Exploration libre OrbitControls

On tourne, on zoome, on traverse la constellation — la mémoire en volume plutôt qu'en liste.

Cache + fallback graphe précalculé

Les embeddings et le graphe sont en cache pour une exploration instantanée, avec un fallback si le calcul bouge.

Arbitrages techniques

t-SNE plutôt que UMAP/PCA seul Préserve mieux les voisinages sémantiques locaux, qui sont le but. Contrepartie : Instable entre runs et plus coûteux ; j'ai dû figer la graine et le résultat.
DBSCAN plutôt que K-Means Le nombre d'amas n'est pas supposé — la densité décide. Contrepartie : Sensible au paramètre de voisinage (eps), et renvoie du bruit à filtrer.
Graphe précalculé en cache L'exploration doit être instantanée ; pas de calcul à la volée. Contrepartie : Le cache doit être invalidé quand le corpus change ; un état à maintenir.
Bloom + OrbitControls plutôt qu'une caméra guidée L'exploration libre est l'intérêt ; on ne veut pas être enfermé dans un chemin. Contrepartie : Sans guide, on peut se perdre ; d'où le fly-to et les filtres pour s'y retrouver.

Stack technique

Three.jsbloom · OrbitControls · fly-to
Matht-SNE / PCA · DBSCAN
Embeddings3072 dimensions
Recherchecosine KNN
Backendcache + fallback

En chiffres

0nœuds
0liens
0clusters
0dimensions
temps réelexploration

Parcours du projet

  1. Corpus

    Embeddings 3072-dim des pensées capturées par Igor.

  2. Projection

    t-SNE / PCA vers 3D, clustering DBSCAN, 10 amas.

  3. Recherche

    cosine KNN par sens, filtres, timeline.

  4. Rendu

    Three.js avec bloom et OrbitControls, fly-to caméra, panneau de détail.

  5. Performance

    Graphe précalculé en cache, fallback — exploration instantanée.

Ce que ça a rendu

  • 01
    La mémoire en volume

    Je vois mes idées s'organiser en constellation — un aperçu de la façon dont je pense.

  • 02
    Recherche par intuition

    Le fly-to amène la caméra vers une pensée ; on explore par sens, pas par mot-clé.

  • 03
    Brique d'Igor

    Brain Map consomme le second brain d'Igor et le rend navigable — la mémoire devient un lieu.