埋め込み技術は過小評価されている
(technicalwriting.dev)- 機械学習(ML)は、技術文書作成における最先端の手法を発展させる可能性がある
- Claude、Gemini、LLaMa、GPT などのようなテキスト生成モデルではなく、埋め込みこそが技術文書作成に最も大きな影響を与えうる ML 技術である
- 埋め込みはまったく新しいものではないが、この数年ではるかに広く利用しやすくなった
- 埋め込みは技術ライターに、これまでは不可能だった規模でテキスト間のつながりを発見できる能力を提供する
埋め込みへの直感を養う
入力と出力
- 埋め込みを作るために入力するのはテキスト
- 毎回同じ量のテキストを与える必要はない
- 単一の段落が入力になることもあれば、いくつかのセクション、文書全体、あるいは複数の文書になることもある
- 出力は数値の配列
- 単一の単語を入力すると、出力は
[-0.02387, -0.0353, 0.0456]のような数値配列になる - 文書セット全体を入力すると、出力は
[0.0451, -0.0154, 0.0020]のような形になる
- 単一の単語を入力すると、出力は
- 入力の大きさに関係なく、常に同じ数の数値が得られる
- これにより、任意の 2 つのテキストを数学的に比較できる方法が得られる
- 実際の埋め込みでは、配列には 3 個ではなく数百または数千の数値が含まれる
埋め込みの作り方
- 大手サービスプロバイダーが埋め込み生成を簡単にしてくれている
- Gemini の
text-embedding-004モデルは 768 個の数値配列を返し、Voyage AI のvoyage-3モデルは 1024 個の数値配列を返す - 異なるプロバイダーの埋め込みには互換性がない
コストは高いのか?
いいえ。
環境に悪いのか?
- 埋め込み生成はテキスト生成より計算集約的ではない
- ただし、埋め込みモデルはテキスト生成モデルと似た方法で学習されるようであり、それはエネルギー使用を意味する
- さらに分かったことがあれば、このセクションを更新する予定
どのモデルが最適か?
- 理想的には、埋め込みモデルは完全なページの埋め込みを生成できるよう、大量の入力テキストを受け取れるべきである
- 2024 年 10 月時点では、入力サイズの面で
voyage-3が最も優れているように見える - 入力制限はトークンベースであり、各サービスはトークンを異なる方法で計算するため、正確な数値を過度に重視すべきではない
非常に奇妙な多次元空間
- 埋め込みの数値は何を意味するのか?
- 地図上の座標を考えてみる
- 埋め込みは地図上の点に似ている
- 埋め込み配列の各数値は X 座標や Y 座標に似た次元である
- 埋め込みモデルが 1000 個の数値配列を返すなら、それはテキストが他のすべてのテキストに対して意味論的に相対的な、1000 次元空間上のどこに存在するかを示している
- 2 つの埋め込み間の距離を比較するとき、実際にやっているのは2 つのテキストが意味論的にどれほど近いか、あるいは離れているかを把握することである
- 関連項目が互いに近くクラスターを成す、このような多次元空間に項目を配置する概念は latent space と呼ばれる
- Word2vec 論文 の有名な例:
- embedding("king") - embedding("man") + embedding("woman") ≈ embedding("queen")
- 埋め込みは、人間にとって直感的に感じられる形で意味論的関係を表せる
- 埋め込みは数百または数千の次元で動作するため、3 次元の生物が 1000 次元での「距離」がどう見えるかを視覚化するのは不可能である
- 各次元が何を表しているのかは分からない
埋め込みの比較
- 埋め込みを生成した後は、各埋め込みがどのテキストに対応しているかを追跡するために、ある種の「データベース」が必要になる
- 線形代数が大きく関わり、NumPy や scikit-learn のような数学・ML ライブラリが重い処理を担える
応用
- 埋め込みによって、技術文書作成の最先端をどう前進させられるかを自分で確かめてみよう
何千もの埋め込みを咲かせよう
- 文書サイトの所有者として、REST API や well-known URI を通じて、コンテンツの埋め込みを希望する人に自由に提供すべきか気になっている
- コミュニティがこの追加的な種類の文書データでどんな面白いものを構築できるのかは分からない
結び
- 3 年前に 768 次元空間とは何かと聞かれていたら、物理学者や数学者が、理由は分からないが必要としている抽象概念にすぎないと答えていただろう
- 埋め込みは、このアイデアについてより深く考え、実際に自分の仕事へ適用する理由を与えてくれる
- 文書保守能力におけるスケール面の改善は、まだ可能かもしれない。そしておそらく、さらに桁違いに多い次元が必要になるだろう!
付録
実装
- 各文書の埋め込みを生成するための Sphinx 拡張 を作成
- ビルドが完了すると、埋め込みデータは
embeddings.jsonに保存される - 各文書について最近傍を見つけることが最後のステップ
- 線形代数の基礎は Linear Algebra for Machine Learning and Data Science で学んだ
結果
- データの解釈方法:
Targetは現在見ているページNeighborは推薦されるページ
- 結果表から、関連ページ同士が互いに推薦されていることを確認できる
GN⁺の意見
- 埋め込み技術は、技術文書作成の分野でコンテンツ間の関連性を把握し、文書間のつながりを発見するうえで大いに役立つと見られる。特に大量の文書を扱う大規模な文書プロジェクトで、さらに有用だろう
- ただし埋め込みモデルは依然としてエネルギー消費が大きめで、倫理的な懸念もあるため、導入時には慎重な検討が必要に見える。十分な計算資源の確保とともに、埋め込み生成の環境影響を最小化する努力が求められる
- 文書サイトで埋め込みを API として提供することは、開発者コミュニティによる創造的な活用を促進できる良い方法になりうる。ただし、データセキュリティとプライバシーの問題への対策を先に整える必要がある
- 技術文書分野のスタートアップやイニシアチブでは、埋め込み技術を積極的に導入する価値がある。既存の文書管理ソリューションとの差別化機能を提供し、検索や推薦において、より人間にやさしい体験を実現できるだろう
- 埋め込みを文書要約、翻訳、トピック分類などに活用する研究にも期待できる。最新の自然言語処理技術と埋め込みを組み合わせれば、技術文書作成と管理に革新をもたらせるだろう
3件のコメント
技術ライター(笑)
自然言語処理の分野で使われるテキスト埋め込みとその学習過程を見ると、人間が文法をほとんど知らない状態で言語を習得し、使いこなせるようになる過程と本当によく似ていると感じます。
本文で述べられているように、多くの潜在力があると思います。
Hacker Newsの意見
現代のAIにおいて、埋め込みは人間により大きな力を与える唯一の要素として興味深い。これはスティーブ・ジョブズが語った「私たちの心のための自転車」のようなもので、知能増幅を意味する。コンピュータの使い勝手における最大の進歩は、高速で汎用的なローカル検索の導入だった。Firefoxの「ページ内検索」機能をよく使い、検索やgrepを毎日使っている。埋め込みは実際に有用なファジー検索を提供し、検索の最大の弱点を解決する可能性がある
ドキュメントサイトの所有者として、REST APIまたはよく知られたURIを通じて埋め込みを自由に提供することを検討すべきか気になっている。どの埋め込みモデルを使ったのかを明確にする必要があり、技術文書に適した埋め込みモデルがあるのかという疑問がある
環境への懸念はあるが、AIの利用を減らすことで気候問題を解決できるという世間の意見は誤っていると思う。たとえばGoogle Mapsを禁止すれば誤った経路を選ぶことになり、より多くの燃料を消費してしまう。埋め込みを使った文書生成も同様で、計算資源を使うほうがより効率的だ
埋め込みを使ってWebアプリで活用する方法についての面白い経験を共有している。ドキュメントを通じて、本番環境で埋め込みを使う方法を説明している
埋め込みは入力文字列のあらゆるものを表していて、目標がないように見える。特定のアプリケーション向けに埋め込みの次元を削減する方法について疑問がある。たとえば技術サポートの会話を探すシステムを構築する際、会話の内容だけを表す埋め込みを導き出す方法が気になっている
ベクトル埋め込みは文書の固有な要約で、ハッシュコードに似ている。埋め込み生成について普遍的な標準があればよいが、AIモデルごとに異なるため、ハッシュコードのような「永続性」は持てない。コサイン類似度のようなアルゴリズムをデータベースや情報処理アプリで活用できる方法は多いと思う
埋め込みは過小評価されていると思う。情報検索・発見の分野が依然としてキーワードベースの発見を使っており、現代的なツールである意味ベースの発見を受け入れていない。文をベクトル埋め込みに変換し、k-meansクラスタリングを適用してChatGPTで要約する方法を使って時間を節約している
技術ライターたちが埋め込みの有用性を過小評価していると示唆している。機械学習の実務者は埋め込みを過小評価していない
OpenAIの埋め込みモデルが8191/8192トークンをサポートしているのかという疑問がある。トークンサイズで勝者を決めるのは誤解を招きやすく、クロスリンガル対応や精度のような、より重要な要素がある
埋め込みは過大評価されていると思っており、多くの人が期待した万能の解決策ではない。BM25のような単純な方法を完全に置き換えるものではなく、限定的な意味理解しか提供しない。高すぎる期待が、埋め込みは自分の望むものを正確に検索してくれるという思い込みを生むが、結果を注意深く確認しなければ不一致に気づきにくい