- 埋め込みは、近年の技術ライティングの分野において革新的な発展の可能性をもたらす
- 入力テキストの大きさに関係なく、固定次元の数値配列を返すという特徴がある
- この数値配列によって、任意のテキスト同士の数学的比較が可能になる
- 埋め込みは多次元空間において、テキストの意味に基づく距離を計算し、関連推薦、意味分析などさまざまな活用が可能である
- 今後、技術文書サイトが埋め込みデータを公開することで、新しいツールやコミュニティでの活用事例が広がる見込みである
機械学習ベースの埋め込み技術の概要
- 機械学習技術において、テキスト生成モデルとは異なり、埋め込みは技術ライティングに革新的な影響を与える可能性を持つ
- ここ数年で、埋め込みの利用ははるかに身近なものになった
- 埋め込みによって、技術ライターはさまざまなテキスト間の意味的な比較と分析を行えるようになった
埋め込みへの直感を養う
- 埋め込みは、テキスト(単語、文、複数の文書など)を入力すると、固定サイズの数値配列を返す
- 入力テキストの長さに関係なく、常に同じサイズの配列データが生成される
- そのため、長さの異なる任意のテキスト同士でも数学的に比較できる可能性が生まれる
埋め込みの生成方法
- 主要なサービスプロバイダーを通じて、数行のコードだけで埋め込みを生成できる
- 使用するモデルによって埋め込みの配列サイズは異なり、Geminiでは768個、Voyage AIでは1024個の数値が返される
- プロバイダーやモデルによって埋め込みの意味は完全に異なるため、相互互換性はない
コストと環境への影響
- 埋め込みの生成自体は高コストではない
- 生成プロセスはテキスト生成モデルに比べて計算資源の消費が少ないと推定されるが、環境への影響については今後さらに多くの情報が必要である
埋め込みモデルの選定基準
- 最適なモデルは、大容量の入力データをサポートできるかによって変わる
- Voyage AIの voyage-3 は、2024年時点で最も高い入力上限を提供している
- 利用目的や必要性に合ったモデルを選ぶことが重要である
多次元空間の概念
- 埋め込みの数値配列の各値は多次元空間における1つの座標に相当し、その空間内での意味的な位置としてテキストの特徴が表現される
- たとえば
king - man + woman ≈ queen のような演算は、意味的関係を表現できる可能性を示している
- 埋め込み空間の各次元の特徴は、大半が不明確で抽象的である
- この過程を通じて、機械による意味学習とテキストの意味推論が可能になる
埋め込みの比較と保存
- 生成された埋め込みは、各テキスト(例: ページなど)ごとにデータベースなどへ保存する
- 2つの埋め込み間の数学的距離の計算(線形代数を利用)によって、意味的な類似性を判断できる
- NumPy、scikit-learn などのライブラリを使えば、複雑な数式を実装する負担は小さい
埋め込みの応用例
- 技術文書サイトでは、関連ページ推薦機能に埋め込みが効果的に活用される
- 各ページごとに埋め込みを生成した後、数値的な類似性が高いページ同士を意味的に関連する文書として推薦できる
- ページ内容を変更するたびに埋め込みだけを更新すればよく、効率性に優れている
- 実際に [Sphinx] ドキュメントへ適用した結果、良好な性能が確認された
コミュニティとオープンデータの可能性
- 今後は、文書サイトがREST API や well-known URIを通じて埋め込みデータを提供できるようになるかもしれない
- これにより、コミュニティは多様な応用ツールやサービスを開発できる
結び
- 数百次元の空間という概念を日常業務と結びつけて考えるきっかけになり、興味深い
- 埋め込みの導入によって、文書の保守や機能拡張などにおいて画期的な発展の可能性が期待できる
1件のコメント
Hacker Newsの意見
こんにちは、この記事を書いた者として感謝を伝えたいです。
6か月前にも似た議論があったことをお知らせします。
「埋め込みが過小評価されている」というのは、機械学習の実務者よりもテクニカルライターにとって有用なツールであることを強調したかったという意味です。
この記事では、埋め込みをテクニカルライティングにどう活用するのかの詳細が十分でないことは認識しています。
埋め込み活用に関するプロジェクトとブログ記事を準備中です。
埋め込みは、テクニカルライティングで解きにくい3つの問題を解決する助けになるため重要です。
ユーザーが欲しい情報を簡単に見つけられない問題について、埋め込みを公開の場で体験できるよう、UXレイヤーとして「semantic scrolling」を適用してみました。
検索というよりは、<details>/<summary> のツリー構造でクラスターをたどっていけます。
[1] は開始地点で、[2] はコレクション全体(本、映画、音楽、アニメーションなど)です。
リンクも共有します。
投稿は、機械学習の専門家よりもテクニカルライターにとって魅力的に感じられるよう構成した方がよいでしょう。
たとえば、「以前は不可能だった規模でテキスト間の関連性を発見できる」という部分を、もう少し詳しく説明するとよいです。
応用例をもっと前の方に置けば、読者により効果的に伝わるはずです。
埋め込みのテクニカルライティングへの直接的な応用例として、関連論文を勧めます。
リンクを示します。
この記事を読んで、成果物の品質がどうだったのか気になります。
機械学習で好まれるような評価(evals)まで行かなくても、おおまかに見て結果が妥当だと感じられたのか知りたいです。
記事は読みましたが、「埋め込み」とは何かの説明が見当たりませんでした。
3段落目で使い方には触れていますが、埋め込み自体の定義が前半で不足しています。
初心者にはあまりに基礎的な記事に感じられます。
読んでも新しい情報や洞察は得られませんでした。
埋め込みの中核的な活用例を、さわりだけでも見せてもらえれば、次の記事をもっと期待できたと思います。
共有してくれて感謝します。
埋め込みと埋め込み検索のもう一つの利点は、クライアント側で比較的軽く実装できる点です。
ONNXモデルは transformer.js で読み込み・実行できます。
hnsw のようなインデックスを作って静的ホスティングすることもできます。
自分でもオープンソースのデモを作りました。
インデックスを queryable parquet ファイルとして表現し、duckdb でクエリすればよいです。
Github Pages を使えば無料、あるいはほぼ無料で可能です。
クライアント側で JS による埋め込みができるとは新しい発見です。
ドキュメントサイトで新しい応用が開けそうで楽しみです。
Parquet と Polars は以前読んだ記事がきっかけで注目するようになりました。
このような実装について気になっていたことがあります。
埋め込みベースの検索はレイテンシが心配で、導入をためらってきました。
モデルをローカルに置いてレンダリングする場合、品質が OpenAI / Google と比べてどうなのか気になります。
無料で即時性があるのは利点です。
デモで何が起きているのかを詳しく説明してもらえるとありがたいです。
結果がよく理解できません。
「埋め込みは入力テキストの大きさに関係なく常に同じ大きさの数値配列を返すため、任意のテキスト同士を数学的に比較できる」という部分は、もっと明確に説明されるべきです。
ハッシュ関数も入力サイズに関係なく同じサイズの結果を返しますが、その数学的比較と埋め込みの比較は意味がまったく異なります。
埋め込みは学習過程によって品質が決まることを強調する必要があります。
任意のテキストに対して意味のある比較が可能な「汎用埋め込み」は存在しません。
リンクも共有します。
埋め込みはハッシュのように大きな入力を圧縮して表現しますが、ハッシュと違って埋め込みは内在的な意味を持ちます。
それなら、埋め込みから逆に似た意味のテキストを生成する「クラッキング」の研究があるのか気になります。
LLMの出力で次トークンを評価する際に、埋め込みとの類似度や方向性の変化を含めることもできそうです。
著者が言及した埋め込みベクトル間の演算のように、段落全体や本のような大規模テキストにも「意味代数」を適用できるのか想像してしまいます。
「親和性」のような中核概念をベクトル化して既存テキストに加えることも可能なのか気になります。
「埋め込みから逆に意味の近いテキストを生成すること」は embedding inversion あるいは Universal Zero-shot Embedding Inversion と呼ばれます。
関連論文も存在し、画像における CLIP 埋め込みを使った diffusion も関係しています。
埋め込みは大まかに言えば、ファジーハッシュ(fuzzy hashes)と似た役割を果たします。
この分野の専門家ではありませんが、inference-time intervention という研究も関連していると思います。
論文リンクを添えます。
「埋め込みを活用してテクニカルライティングで最高水準の進歩を実現できる」という言い方は具体性がなく、読者として役に立ちません。
技術文書を読んだり書いたりするときに、一般的に「似たページ」ウィジェットが欲しいと思ったことはありません。
論旨(Thesis)は第2段落にあります。
埋め込みは、テクニカルライターが以前は見つけられなかった形でテキスト間のつながりを見つけられるようにします。
投稿がその論旨を実例で十分に示せていない点は認めます。
埋め込みがさまざまなテクニカルライティング上の難題を解決できると考えており、直接的な例は今後扱う予定です。
関連文書はさておき、技術文書では優れた検索が非常に有益です。
埋め込みは「ファジーマッチング」に特に有用で、ユーザーが正確な語句を覚えていなくても、実際に欲しい機能を見つけ出せます。
キーワード検索とベクトル類似検索を混ぜるハイブリッドアプローチが効果的です。
もっと具体的な活用例を知りたいです。
2次元の地図の比喩は理解を助けるよい出発点ですが、埋め込みは数百〜数千次元で動作します。
各次元がどんな意味を持つのかも明確ではなく、
king - man + woman = queenの例は「ジェンダー概念を持つ次元」があるからではなく、「特定の方向」が存在するからです。n次元では、ほぼ直交する方向が指数的に多様に存在します。
1000次元空間に数十億の概念を収められる理由です。
実際の arXiv 論文でも、埋め込みに男性語を1000個入れたら女性語を950個正確に見つけられる、というようなことは起こりません。
20個ほどは視覚的にまとまって見えますが、次元が多いため投影すると何でも「合っている」ように見えがちです。
N が大きくなると結果は曖昧になりやすいです。
Transformer ベースの埋め込みは文脈を考慮するため、従来の単語ベクトルよりはるかに優れています。
全文検索でも、同義語処理などにおいて文脈認識型埋め込みが、この50年間情報検索分野で試みられてきた問題を効果的に解決します。
詳細な批判に感謝します。単一の次元が概念と一対一対応するかのように説明した部分は概念的な誤りでした。
コサイン類似度の仕組みとあわせて概念をもっと磨き、記事を修正します。
コメントのおかげで自分の思考の質が向上したと感じます。
「ほぼ直交する次元」よりも「ほぼ直交する方向」の方が正確な表現であることを強調します。
Johnson-Lindenstrauss lemma に関する情報とともに、埋め込みの次元維持と距離保存の精度について疑問があります。
距離を10%の誤差で保つには約1万8000次元が必要です。
Wikipedia のリンクも案内します。
より正確には「ほぼ直交する次元」ではなく「ほぼ直交する方向」です。
個々の次元が意味のある概念と一致するなら、たとえばジェンダー次元がある場合、「king」と「queen」の差が単一の次元にしか存在しないことを簡単に見抜けるはずです。
概念ごとに次元が分かれていれば、その差に従って直感的に概念を追跡できます。
ほぼ直交ベクトルの概念についてのよい記事を紹介します。
リンクを共有します。
各次元を二進数のように扱って 2^n 個の方向をエンコードできる、という原理なのでしょうか。それとも私の誤解でしょうか。
もし性別が2つの次元で表現されるなら、「性別が異なる」と「各次元が異なる成分を持つ」を区別できないのではないか、と質問します。
可視化できなくてもユークリッド距離は計算できます。
UMAP のようなツールで次元削減もできます。
king-man+woman=queenの例に関して言えば、ベクトル和の演算が常に期待通りに動くとは限りません。単一ベクトルの方向と大きさだけで意味が制約される可能性があり、ネットワークは非線形な振る舞いを学習するため、出発点によって意味が変わることもあります。
実験的な証拠なしに単純なベクトル演算へ一般化することには限界があります。
埋め込みは、アルファベットや数字のような、普遍性への新たな飛躍です。
リンクを共有します。
専門家に質問です。
埋め込みがコンテンツ、つまり意味そのものをベクトルとして保持しているなら、「スタイル」だけのための別個のベクトルは存在するのでしょうか。
文体を分析する研究でも、スタイル用の埋め込みが容易に使えるなら大きな進展になりそうです。
埋め込みの活用には全面的に同意します。
Recallify というものを開発していて、オンラインで読んだ珍しい情報も素早く再発見できるようになりました。
1024次元だけでも、キーワードではなく意味の類似性によって内容を効果的に結び付けられます。
曖昧な概念を実行可能なインサイトに変えるうえで革新的なツールです。
iOS アプリのベータテスターも募集中です。
記事の中で、テクニカルライター向けの直接的な活用例が出てきたのかよく分かりませんでした。
埋め込みは LLM やセマンティック検索などで非常に重要ですが、著者が示唆する直接的な効用についての説明が不足しています。
直接的な応用例は出てきませんでした。
続編の記事とプロジェクトでさまざまな埋め込み活用を扱うつもりでしたが、最近は育児(生後3か月の赤ちゃん)のため遅れています。
今後、関連プロジェクトや記事を準備しており、埋め込みはテクニカルライティングにおける重要な3つの難題の解決に役立ちます。
埋め込みの実践的な活用は、セマンティック検索、分類、クラスタリングです。
検索分野では10年に一度くらい大きな進歩があります。
埋め込みを作って既存のMLアルゴリズムに入れれば、効果的に分類できます。
Bag-of-Words 方式はもはや結果が不十分で、埋め込み+単純なアルゴリズムだけでもよいクラスターが得られます。
近いベクトルを探すのも、線形代数というより単に内積程度で十分です。
埋め込みを使って論文や文献などを意味ベースで検索するのは非常に有用でしょう。
ただし、埋め込み自体には出典情報が含まれていないため、RAG 検索では元ページへしかつなげません。
引用や真正性の問題は依然として残ります。
GraphRAG のようなグラフベースの引用モデルの方がより発展的です。
埋め込みベースのセマンティック検索で RSS フィード分類器を作りました。
任意のカテゴリに基づく分類も可能です。
現在は AWS 退職によりサービスは停止しています。