Embeddingとは?非エンジニアでも理解できるように基礎から解説!

生成AIがビジネスや日常生活において革新的な変化をもたらしている今日、その中心にあるのがEmbeddingです。しかし、この重要な技術について解説された記事は、しばしば技術的な専門知識を必要とします。本稿では、非エンジニアでも決裁権を持つマネージャーが理解できるよう、Embedding技術とその応用についてわかりやすく説明します。

目次

Embedding

はじめに、生成AIとは?

生成AIは、テキスト、画像、音声などのデータから新しいコンテンツを生成する技術です。最近ではChatGPTの誕生により生成AIが脚光を浴びるシーンが多くなりました。生成AIが出力する精度を高める技術としてEmbedding、つまりデータを数値化し、機械が理解できる形式に変換するプロセスがあります。

Embeddingとは?

Embeddingとは「データをベクトル化する処理」という解釈ができます。簡単に言うと「人間の言葉を数字に変換する処理」と言った具合でしょうか。例えば、下図のように「犬」という人間語や「猫」という人間語がコンピュータが処理しやすいように数字の配列データになるようなイメージです。

参照: https://atmarkit.itmedia.co.jp/ait/articles/2401/18/news023.html

上の図のように、テキストをベクトル形式に変換する方法が広く普及しています。特に、Embeddingモデルの進化により、この変換作業を誰でも容易に実施できるようになりました。たとえば、OpenAIが開発した「text-embedding-ada-002」という特定のモデルを使用することで、あらゆるテキストを1536次元のベクトルに変換可能です。このプロセスを利用する際に留意すべき重要な点を三つ挙げます。

  1. この変換手法では、テキストの長さに関係なく、使用するモデルによって一定の次元数のベクトルが生成されます。すなわち、「text-embedding-ada-002」を使用する場合、出力されるベクトルは常に1536次元になります。
  2. 異なるモデルを用いると、ベクトル化の際の次元数や数値の算出法が変わります。そのため、ベクトル間での比較を行う際は、同一のモデルを用いることが必須です。
  3. また、同一モデルを使用して同じテキストをベクトル化した場合、生成されるベクトルは毎回同じ結果となります。これにより、ベクトルを比較する際の一貫性が保証され、安心して利用することができます。

このように、テキストをベクトルに変換する技術は、一貫性と再現性を持ち合わせ、幅広い応用が可能です。

Embeddingの意味はわかったが、なぜEmbeddingする必要があるのか?

例えば、エクセルやワードで検索をかけたい場合は、特定の単語で検索をかけていると思います。その場合、完全一致しか検索をかけることができません。

生成AIの場合、Embedding化すればそれぞれのテキストの近似性を定量化し「似てるかも?」レベルのものを選択することができるのです。つまり完全一致ではなかったとしても近似しているものを検索することが可能なのです。

そのために、Embeddingは行われます。

Embeddingのメリット
・検索ワードと文章内のワードが完全一致していなくても類似性を調べられる

ベクトルとは

ベクトルは、方向と大きさを持つ量を表すために用いられる数学的な概念です。Embeddingにおいては、データを表すために多次元のベクトルが使用され、これにより複雑なデータ構造を簡潔に表現できます。

参照:http://www.ftext.org/text/subsubsection/3274

より詳しく知りたい人向け!類似度を計測するコサイン類似度とは?

ベクトル化されたデータの類似性を測定する方法の一つがコサイン類似度です。これは、二つのベクトル間の角度のコサインを計算することにより、類似性を数値化します。

コサイン類似度とは?
-1.0に近づけば近づくほど、類似していない。
1.0に近づけば近づくほど、類似している。

参照:https://atmarkit.itmedia.co.jp/ait/articles/2112/08/news020.html

参照:https://mathlandscape.com/cos-similar/

基本的に、「ベクトル間の内積とベクトルの大きさの積の比」により、cosθを求めることができます。この計算は、ベクトル化によって得られる数値の配列があれば実行可能です。このプロセスに深い関心がない方も、簡単に計算できることだと認識していただければと思います。

「焼き肉は美味しい」と「焼き肉は美味しくない」は似た意味だと判断?

Embeddingで精度の参考になるブログがあったので紹介させていただきます。

参照:https://zenn.dev/hijikix/articles/a620ef6d6a2c47

「焼き肉は美味しい」「焼き肉は美味しくない」「刺し身は美味しい」「刺し身は美味しくない」「ジュゲムジュゲム」の5つのテキストをそれぞれEmbeddingして、類似度を計測した結果が以下の通りになったそうです。

左上の「焼き肉は美味しい」と「焼き肉は美味しい」という2つのテキストを比べたとき、その類似度は1(つまりかなり近似している)と判断されました。

一方で「焼き肉は美味しい」と「焼き肉は美味しくない」という2つのテキストを比べたときも0.95と同じ位の類似度を算出しました。この段階だとEmbeddingでは「焼き肉は美味しい」と「焼き肉は美味しくない」は同じ意味合いだと評価されたようです。

執筆者いわく、「コサイン類似度が近い => 近いジャンルのテキスト」くらいの理解でいるのが安牌そうです。

この例のような事象だけに目を向けると、ベクトルを比較することで意味的な差異を把握することが難しいと感じるかもしれません。しかし、RAGのようなベクトル検索技術が示すように、類似した情報を識別する手段として、これらの比較は一定の効果を持っていると考えられています。技術が進化するにつれて、このようなモデルの精度はさらに向上すると期待されます。

最後に

いかがだったでしょうか?

弊社では

明確に「生成AIで〇〇をしたい!」は無いけど、何か生成AIを使って取り組みたい!

というご要望にお応えしております。

これまでお取引させていただいた企業様も、ご相談時にはやりたいことが決まっていなかったことが多くあります。

ご相談を受け、一緒に考えさせていただく中で、生成AIとどこが相性が良いのか、それを構築するためにはどのようなデータが必要なのかを「無料お問い合わせ」にてお受けしております。

・社内でのChatGPTの導入支援
・RAGを使った社内チャットボットの作成
・OSSやAPIと生成AIを組み合わせた業務自動化ツールの開発
・CS業務に生成AIを取り入れて生産性を格段にアップさせた事例
・校閲AIの作成
など…

まずは、ページ右上の「無料お問い合わせ」にてご相談を承っておりますので、お気軽にご連絡ください。

目次