写真コレクションから離散的な「関心空間」を立ち上げる

概要
Semantic IDを手元の写真コレクションに適用し、各写真に意味の住所を与える
未知のクエリ画像やテキストのSemantic IDを解決して検索する
インデックス済みの同族写真を引ける
階層をドリルダウンできる
意味を加法で融合できる
自分の画像から離散的な興味空間を立ち上げ、Life in a Context Window構想に繋げたい

Semantic IDとは
推薦・生成検索の研究由来の概念(末尾の関連研究を参照)。アイテムを1個の通し番号ではなく、意味を表す小さなコードの列で表す。
例: [14, 6, 44] のように前から粗→細へ意味が決まる住所で、前を共有するほど意味が近い( [14, 6, *] は仲間、 [14, *, *] はもっと広い仲間)
コンテンツの埋め込みベクトルを残差量子化で離散コードに丸めて作り、「意味の似たものが近い番地に並ぶ」索引とする
本ページではこれを写真に当てて、各写真の意味の住所として使っている


クエリ画像 → Semantic ID → 同族写真の取得
未知のクエリ画像をGemini Embedding 2で768次元ベクトルにし、コレクションから作った学習済みコードブック(意味の地図)に最近傍で当てるだけでという住所が決まる。肝心なのは、新しい画像が来ても学習(train)はやり直さず割り当て(assign)しかしない点で、だから既存の写真の意味の住所は永久に動かず、住所を安定した識別子として使い続けられる。
3つの桁は残差量子化(RK-Means)の層で、c0が大づかみのテーマ、引き算した残差をc1、さらにその残差をc2 … と粗から細へ意味を刻んでいく。同族写真を引くときはベクトル同士のcos計算をせず、同じ接頭辞を持つ実画像をテーブルで辞書引きするだけ。検索の実行時に生の埋め込みを一切触らない(no-raw-vector)のがこの設計の芯で、住所=意味そのものを索引にしている。
代表画像は「枚数が最多の子コードを辿って決めた一枚」。コード番号には大小や距離の意味がないので、中心を近さではなく密度(枚数)で定義しているのがポイント。写真1枚を3トークンの「視覚語」に変え、LLMの語彙のように直列化して扱えるようにしている。
2026年度 人工知能学会全国大会(第40回)の隙間時間で実験していた


階層ドリルダウン=目次
Semantic IDは前から順に粗→細へと意味が入れ子になった住所で、 [14, 6, *] [14, *, *] という接頭辞がそのままフォルダとして機能する。 [14, 6, *] に珈琲っぽい画像が集まるのは、残差量子化がまず大づかみの意味で割り、その中の差分でさらに割る構造の必然で、階層の深さがそのまま意味の粒度に対応する。
目次(ドリルダウン)は各接頭辞バケツの代表画像を並べたもので、代表をクリックするとc0 → c1 → c2と一段ずつ深い接頭辞へ潜り、パンくずリストで戻れる。フォルダを開いていく感覚で、コレクションが勝手に作った「意味の木」を上から辿れる。
この目次に必要な代表画像も所属画像の一覧も、住所の割り当てだけから事前計算している。ここでも生ベクトルは読まず、ナビゲーション全体が「住所の辞書引き」だけで動く。あとから画像が増えても、住所さえ振れれば同じ木に並ぶ。


テキスト → 密ベクトル → Semantic ID
Gemini Embedding 2はマルチモーダルなので、テキストも画像と同じ768次元空間に乗る。文字列を埋め込んで「画像だけで学習したコードブック」へそのまま当てれば、言葉から概念の住所が取れる。学習に一枚もテキストを使っていないのに、テキストが画像の意味地図のどこに住むかを言い当てられるのが面白い。
実際、キーワード「Golden Gate Bridge」→ 密ベクトル → → その住所の代表画像、と一直線に解決できている。テキストクエリが、コレクション側の「視覚の語彙」に翻訳されて着地する形。
ただしテキストと画像は同じ空間でも少し離れた塊に分かれて分布する(モダリティ・ギャップ)ことがある。テキストと画像を混ぜて住所を作る場合は、学習時に第1主成分(≒モダリティの軸)を射影で抜き、c0が「モダリティの違い」ではなく「中身」で割れるようにする。この補正の効き具合がまだ詰めきれていない。


意味の加法=多観点の融合
複数の観点(画像・テキスト・SIDを混在可)を1つの住所に融合できる。各観点をいったんSID住所へ量子化し、コードブックの復元点(Σc)に載せ替えてから、平均ではなくmaximin(「最も満たされない観点でも最大限満たす住所」を選ぶ方式)で集約する。素朴な平均+再量子化だとc0の多数派が総取りして少数の観点が無効票になりがちなのを、minを最大化することで全観点に公平にしている。
融合先の候補は「実画像が実際に住んでいる住所」だけに限定してあるので、結果は必ず実在する住所になり、どの実画像も指さない継ぎ接ぎの架空住所は原理的に作れない。confidenceは勝者のmin_cos(最も満たされない観点でも保たれるcos)で、これが低いときは単一SIDと偽らず近い候補住所の集合として返す。「ぴったりの一軒は無いが、この界隈」であることを表現できる。
そもそも観点を足し合わせられるのは、各コードを固定ベクトルにして和で元の埋め込みを近似する加法的な符号化(spherical-additive RVQ)を採っているから。latte + 暖かい朝の光 →のように、ベクトルの足し算が住所の合成に対応する。意味を「足す」という直感が、コードブックの幾何の上で素直に成り立っているのがこのデモの見どころ。


離散的な関心空間を立ち上げたい
Semantic IDを全画像に振ると、コレクションには「実際に使われている住所」の有限集合が浮かび上がる。これが離散的な興味空間であり、連続なベクトル空間ではなく、自分の蓄積が作った数えられる番地の集まりとして、関心の地図を持てるようになる。
スクリーンショットも写真も同じ埋め込み空間に乗るので、雑多な画像群がひとつの住所体系の中に並ぶ。画像が増えるほど番地が埋まり、空間そのものが育っていくのが嬉しい。


最終的にはこの離散的な興味空間を日々見て撮って書きつけるものを文脈に取り込み、発想が立ち上がる瞬間をAIと見つける構想へ繋げていきたい。


関連研究(Semantic ID 周辺)
埋め込みを最近傍でコードに丸める離散表現の原点
残差を繰り返し量子化。残差量子化の発想源。
文書IDを階層k-meansで意味的に構造化。階層住所と近い
RQ-VAEのSemantic IDを生成して推薦。SID × 生成検索の代表作
SIDで未知・ロングテールに汎化。SID列を細かい部品(sub-piece)に分けて語彙として扱う。
階層性・協調信号・割当の偏りを扱う学習可能トークナイザ