PR

生成AIのEmbedding 追加学習や検索・類似度判定

生成AIのEmbedding

生成AIのEmbeddingってなに?

  • 単語や文章などの自然言語を、ベクトル空間上の点として表現する手法
  • 各要素をn次元の実数ベクトルで表現し、要素間の関係性を距離として数値化できる
  • 従来のone-hot表現と比べ、低次元で意味的な関係性を捉えられる利点がある

いやー、全然わからないですね。

Embeddingは直訳で「埋め込み」のことです。

ざっくり理解するとしたら、多次元ベクトル空間に「犬」と「猫」をプロットすると、「人に飼われることが多くて」「SNSに写真をあげられることも多くて」などの共通点が多いので、意味合いとしては近いので、2つは「距離が近い」ということになります。

関連 word2vecの学習済みモデル

「共起語」を判定するときの考え方に近いかも知れません。

生成AIにおけるEmbeddingの活用

  • Stable Diffusion WebUIでは、Embeddingモデルを用いることで、少数の画像から新しい概念を学習できる
  • 負の提示語のEmbeddingモデルを使うことで、生成画像の品質を向上できる
  • OpenAIのEmbeddings APIなどを利用し、文書検索や意味的類似度の算出に活用できる

画像生成AIでは、効率的な追加学習ができ、テキストに対しては効率的な文書検索や関連文書を探すのに役立つ…ということですね。

Embeddingの実装方法

  • 機械学習モデルの中間層の重みを利用する方法が一般的
  • PostgreSQLのpgvectorプラグインを使うことで、SQLデータベース上でベクトル検索が可能
  • Google Cloud VertexAIなどのクラウドサービスでもEmbeddingモデルが提供されている

Embeddingは、検索エンジンやチャットボットなど、生成AIを支える重要な基盤技術の1つです。自然言語をコンパクトかつ意味的に表現できるEmbeddingの特性を活かすことで、より柔軟で高度なAIシステムの実現が期待されています。

生成AIの内部的な技術で、使うだけなら深く理解する必要もないのかも知れませんが、なにかの応用に使えるのかもな…と思います。

ChatGPTのEmbeddingは、具体的になにができる?

ChatGPTのEmbeddingを使ったとしたら、具体的になにができる?

Embeddingについて、わかったようなわからないようなフワッとした感じだったので、実際のところなにができるのか、ChatGPTのサービスで具体的に見ていきましょう。

関連 ChatGPTの使い方

独自データを使ったChatGPTとの対話

例えば、チャットボットに追加の知識を学習させられます。

自社の過去の取引履歴や顧客データなどの独自データをChatGPTに学習させ、業界固有の情報に基づいた専門的な回答が可能になります。

例えば、自社製品に関する詳細な情報や業界の専門用語をChatGPTに学習させることで、顧客からの具体的な質問に対しても正確で専門的な回答をすることができます。

関連情報の抽出

ユーザーの入力文に関連した独自データを、Embeddingを使ってベクトルデータベースから抽出することができます。この関連情報とユーザーの入力文をChatGPTに渡すことで、より文脈に合った回答が得られます。

類似文章の検索

Embeddingを利用すると、文章の類似度を求めたり、検索したりすることができます。業界特有の専門用語などに対しても、FAQ等の類似質問の検索や、過去の対話ログから関連する回答を見つけ出すことが可能になります。

つまり…一般的な知識と受けごたえができるチャットボットに、専門知識を与えることができると考えていいでしょう。

専門知識部分をとっかえひっかえすることで、いろんな用途に使い回すことができそうですね。

「一般知識」+「専門知識」モデルを作ることで、「特化型モデル」を作ることができると考えていいでしょう。「なんでも完璧に理解するAI」よりも、別ジャンルはダメダメだけど、特定ジャンルに詳しいAIの方がコストも節約できそうです。

生成AIのEmbeddingまとめ

  • Embeddingは、元のモデルでは未学習知識の「埋め込み」が可能
  • ChatGPTなどでは、別料金を支払ってEmbeddingが可能
  • Embeddingを使うと、追加学習が効率的にできる