操作して学ぶ
埋め込み2D可視化
「意味が近い」を数値で扱えるようにしたものが埋め込みです。 この散布図は説明用に手で配置した図ではなく、このサイトの全記事に付いたタグの共起関係から実際に計算した埋め込みです。TCP の隣に何が来るか、押して確かめてください。
試してほしい3つのこと
- 「TCP」を押す。ソケット・トランスポート層・輻輳制御が高い類似度で並びます。誰も「TCPとソケットは似ている」と教えていません。同じ記事に一緒に付けられたという事実だけから、この関係が出てきます。これが分布仮説—— 似た文脈に現れる語は似た意味を持つ、という埋め込みの土台です。
- 類似度の低い側(0.5前後)まで見る。上位はきれいに関連語が並びますが、下に行くほど「なぜこれが?」という語が混じります。類似度の絶対値には意味がなく、上位何件かだけが信用できるというのは、 そのまま RAGで上位k件だけを使い、リランカで並べ直す 理由になります。
- 点の大きさ(=記事数)に注目する。小さい点ほど位置が不安定です。数記事にしか出ない語は文脈のサンプルが足りず、 意味空間での位置が定まりません。型番やエラーコードのような滅多に出ない文字列で ベクトル検索が外れるのは、まさにこれが理由で、語彙検索との併用 が要る根拠になっています。
どう作っているか
全記事の「タグ × 記事」の出現行列を作り、TF-IDF で重み付けしてからLSA(潜在意味解析)で40次元の密ベクトルへ圧縮しています。LSA は現代のニューラル埋め込みの祖先にあたる手法で、 「共起から意味を取り出す」という発想は同じです。表示のための2次元配置は t-SNE によるもので、軸そのものに意味はなく、紙の上の距離も意味の距離ではありません。 意味の近さは、必ず元の40次元で計算した類似度のほうを見てください。2次元に落とすと必ず情報が落ちる、 という制約は t-SNE でも UMAP でも変わりません。