Skip to content
Latchkey

エンベディングとは?データをベクトルに変換する仕組みを解説

エンベディングとは、データの意味を表現する数値ベクトルであり、意味的に類似する項目がベクトル空間内で互いに近くに配置されるようにするものです。

コンピューターは生のテキストや画像を直接的に推論することはできませんが、数値はうまく扱えます。エンベディングはその橋渡しであり、類似する入力が近くのベクトルにマッピングされるよう、入力の意味をエンコードした学習済みのベクトルです。エンベディングは現代の検索、レコメンデーション、生成AIの基盤です。

エンベディングとは何か

エンベディングとは、入力データに対してモデルが生成する固定長の数値のリストで、多くの場合、数百から数千次元に及びます。重要な性質は、このベクトル空間内の距離が意味的な類似性を反映することです。類似する項目は近く、無関係な項目は遠く離れます。

エンベディングの作られ方

学習済みのエンベディングモデル(sentence transformerやOpenAI embedding modelなど)が各入力をそのベクトルにマッピングします。モデルは大量のデータから、類似する概念を互いに近くに配置することを学習しており、その結果「dog」と「puppy」は「dog」と「spreadsheet」よりも近くに配置されます。

エンベディングが可能にするもの

データがエンベディングされると、類似性による検索、関連項目のクラスタリング、重複排除、レコメンデーション、そしてretrieval-augmented generationで関連するコンテキストをLLMに与えることができます。エンベディングは高速な類似検索のためにベクトルデータベースに保存され検索されます。

CIにおけるエンベディング

エンベディングを生成する、あるいはエンベディングに依存するパイプラインはCIでテストされ、多くの場合、サンプル入力をエンベディングし、期待される項目が最も類似するものとしてランク付けされることをアサートします。

Testing embedding logic in CI
steps:
  - run: pip install sentence-transformers
  - run: pytest tests/embeddings   # assert nearest-neighbor order

Latchkeyのポイント

エンベディングモデルは大きく、GPU上でははるかに高速に動作します。Latchkeyでは、エンベディング生成をGPUまたはより大きなrunnerで実行し、モデルのweightsをrun間でcacheして毎回再ダウンロードされないようにし、モデルやサンプルデータの一時的なfetchを自動リトライしましょう。

重要なポイント

  • エンベディングは意味をエンコードする数値ベクトルであり、類似する項目を近くに配置します。
  • 学習済みのモデルが、大量のデータから学んだパターンに基づいて各入力をそのベクトルにマッピングします。
  • エンベディングは類似検索、クラスタリング、RAGを支え、ベクトルデータベースに保存されます。

関連ガイド