Building
Reso の初期使い手の一人がこう言いました。「音声メモが 200 件あるのに、半分は何の話か思い出せない。」
それを聞いて、私自身のアーカイブも同じだとすぐに分かりました。capture 重視ツールは記録を簡単にする一方で、その後にデータへ埋もれやすくなります。
私は Reso に、手動タグ付けやフォルダ整理なしで、時間を通じて思考のパターンを見つける役割を持たせたかった。
コアアイデア
各転写は semantic representation(embedding)に変換されます。embedding が近いノート同士は関連が高い。
関連ノートが十分にたまると、自動生成名つきの「テーマ」として浮かび上がります。
例: 2週間で「API design」について5つ録音したとします。Reso は自動でまとめて「API Design Patterns」というテーマ名を付けます。
クラスタリングの難しさ
アルゴリズム自体は単純です。ただチューニングが厄介でした。
- 攻めすぎ: 何でも1つの巨大テーマになる(「仕事全般」)
- 守りすぎ: 1メモ1テーマになる(実用性がない)
類似度しきい値を何日も調整して、やっと分かりました。完璧なしきい値は存在しない。
効いたのは Adaptive clustering です。
固定値ではなく、類似度スコアの分布を見る。自然なギャップ(例: >0.75 と <0.3 に分かれる)があれば、その境界をカットオフに使う。
つまり「正しい」しきい値は、私の主観ではなく、データ側から現れます。
テーマ名の生成
ここは意外に難題でした。複数ノートからどうテーマ名を作るか。
試したのは以下です。
1. LLM summaries: 精度は高いが遅くて高い
2. Keyword extraction: 速いが汎用的すぎる("Project Update #47")
3. First note title: 単純だが誤誘導しやすい
最終的に選んだのは Hybrid approach。
頻出キーワードを抽出し、軽量な LLM 呼び出しで自然なフレーズにまとめる。コストはテーマあたり約 ~$0.001。オンデマンド実行に十分な速さです。
学んだこと
良い AI 機能は、AI っぽく見えません。アプリがただ…注意深く見ていてくれる感覚になります。
テーマが出たとき、使い手は「すごいクラスタリングだ」とは思わない。「あ、確かに最近こればかり考えてた」と思う。
見えなかったものを見えるようにする。それが魔法です。
これは宣伝ではなく、作りながら実際にはまった落とし穴の記録です。