データに適した埋め込みモデルの選択

埋め込みモデルとは?
埋め込みモデルとは、非構造化データ(テキスト、画像、音声など)を、ベクトル埋め込み(スパース、デンス、バイナリ埋め込みなど)とも呼ばれる固定サイズのベクトルに変換する機械学習モデルです。これらのベクトルは、非構造化データの意味的な意味を捉え、類似検索、自然言語処理(NLP)、コンピュータビジョン、クラスタリング、分類など、様々なタスクの実行を容易にする。
埋め込みモデルには、単語埋め込み、文埋め込み、画像埋め込み、マルチモーダル埋め込みなど様々な種類がある。
単語埋め込み**:単語を密なベクトルとして表現する。Word2Vec、GloVe、FastTextなどがある。
文の埋め込み**:文や段落全体を表現する。例としては、Universal Sentence Encoder (USE)やSentence-BERTなどがある。
画像埋め込み**:画像をベクトルとして表現する。例としては、ResNetやCLIPのようなモデルがある。
マルチモーダル埋め込み**:異なるデータ型(例えば、テキストと画像)を単一の埋め込み空間に結合する。OpenAIによるCLIPが顕著な例である。
エンベッディングモデルと検索拡張世代(RAG)
Retrieval Augmented Generation(RAG)はGenerative AIにおけるパターンの1つで、LLM生成モデル(ChatGPTなど)の知識を補強するためにデータを使用することができます。このアプローチは、LLMの厄介な幻覚の問題に対処するための完璧なソリューションです。また、データのセキュリティの問題を心配することなく、ドメイン固有のデータやプライベートなデータを活用してGenAIアプリケーションを構築することもできます。
RAGは2つの異なるモデル、埋め込みモデルと大規模言語モデル(LLMs)で構成され、どちらも推論モードで使用されます。このブログでは、データの種類や、場合によっては言語や専門領域(例えば法学など)に応じて、最適な埋め込みモデルをどのように選択し、どこで見つけるかを紹介します。
データに最適な埋め込みモデルの選び方
あなたのデータに最適な埋め込みモデルを選択するには、特定のユースケース、データの種類、アプリケーションのパフォーマンス要件を理解する必要があります。
テキストデータMTEB リーダーボード
HuggingFaceのMTEBリーダーボードは、テキスト埋め込みモデルを見つけるためのワンストップショップです!各埋め込みモデルについて、タスク全体の平均パフォーマンスを見ることができます。
ベクター検索に最も関連するタスクであるため、**「検索平均」列で降順に並べ替えるのが良い方法です。そして、最も小さい(GB Memory)モデルでトップクラスのものを探します。
埋め込み次元**はベクトルの長さ、つまりf(x)=yのyの部分で、モデルは出力します。
最大トークン数**は、モデルに入力できる入力テキストチャンクの長さ、つまりf(x)=yのx部分です。
Retrievalタスクに加えて、以下のようなフィルタリングも可能です:
言語:**フランス語、英語、中国語、ポーランド語。例えば、task=retrieval and Language=chinese。
例えば、task=retrieval and Language=lawのように、法的なテキストで微調整されたモデルの場合です。
残念ながら、学習データが一般に利用可能になったのは最近のことなので、MTEBのエントリーの中には過剰適合モデルがあり、現実的にあなたのデータで実行されるよりも高い順位にランキングされています。このHuggingFaceのブログには、モデルのランキングを信頼するかどうかを判断するヒントがあります。モデルのリンク(「モデルカード」と呼ばれる)をクリックしてください。
モデルがどのようにトレーニングされ、評価されたかを説明しているブログや論文を探します。モデルがトレーニングされた言語、データ、タスクを注意深く見てください。また、評判の良い企業が作成したモデルを探しましょう。例えば、voyage-lite-02-instructのモデルカードには、VoyageAIの他の生産モデルがリストアップされていますが、このモデルはリストアップされていません。これがヒントです!そのモデルはバニティ・オーバフィット・モデルです。使用しないでください。
下のスクリーンショットでは、Snowflakeの新しいエントリー "snowflake-arctic-embed-1 "を試しています。
MTEBリーダーボードでのスノーフレークのシーンショット](https://assets.zilliz.com/Untitled_a6d5fa5d3e.png)
一旦埋め込みモデルを選択したら、HuggingFaceモデルを使う良い点は、コード中の **model_name
** を変更することでモデルを変更できることです!
インポートトーチ
from sentence_transformers import SentenceTransformer
# トーチの設定を初期化する
torch.backends.cudnn.deterministic = True
DEVICE = torch.device('cuda:3' if torch.cuda.is_available() else 'cpu')
# モデルをhuggingfaceから読み込む。
model_name = "WhereIsAI/UAE-Large-V1" # 別のモデルを使う場合はmodel_nameを変更するだけ!
エンコーダ = SentenceTransformer(model_name, device=DEVICE)
# モデルのパラメータを取得し、後のために保存します。
EMBEDDING_DIM = encoder.get_sentence_embedding_dimension()
MAX_SEQ_LENGTH_IN_TOKENS = encoder.get_max_seq_length()
# モデルのパラメータを表示
print(f "model_name: {model_name}")
print(f "EMBEDDING_DIM: {EMBEDDING_DIM}")
print(f "MAX_SEQ_LENGTH: {MAX_SEQ_LENGTH_IN_TOKENS}")
画像データResNet50
入力画像に類似した画像を検索したいことがある。例えば、スコティッシュフォールドの猫の画像をもっと探しているとします。この場合、好きなスコティッシュフォールド猫の画像をアップロードして、検索エンジンに類似画像を探してもらうことになります!
ResNet50は、元々Microsoftによって2015年にImageNetデータで学習された人気のある畳み込みニューラルネットワーク(CNN)モデルです。
同様に、逆動画検索についても、ResNet50はやはり動画を埋め込むことができる。そして、動画静止画データベースに対して、逆画像類似検索を行う。最も近い動画(入力を除く)が最も類似した動画としてユーザに返される。
サウンドデータ:PANN
入力画像を使って画像を逆引き検索するのと同様に、入力されたサウンドバイトに基づいてオーディオクリップを逆引き検索することもできます。
PANNs(Pretrained Audio Neural Networks)は、大規模なオーディオデータセットで事前にトレーニングされており、オーディオの分類やタグ付けのようなタスクに適しているため、このタスクによく使われる埋め込みモデルです。
マルチモーダル画像とテキストデータ:SigLIPまたはUnum
ここ数年、非構造化データを混合して学習する埋め込みモデルが出現しています:テキスト、画像、音声、ビデオ。このような埋め込みモデルは、複数のタイプの非構造化データのセマンティクスを、同じベクトル空間に一度に取り込みます。
マルチモーダル埋め込みモデルは、テキストを使って画像を検索したり、画像のテキスト記述を生成したり、入力画像から逆画像検索したりすることを可能にします。
2021年のOpenAIのCLIP(Contrastive Language-Image Pretraining)が標準的な埋め込みモデルでした。しかし、微調整が必要なため、実務家にとっては使いにくいものでした。2024年には、SigLIP (sigmoidal-CLIP from Google)が改良されたCLIPとして登場し、zero-shotのプロンプトを使用して良い結果が得られたという報告もある。
LLMの小型モデルのバリエーションが普及しつつある。大規模なクラウド・コンピューティング・クラスターを必要とする代わりに、ノートパソコン(私のM2アップルのように16GBのRAMしかない)で実行することができる。小型モデルは使用するメモリが少ないため、レイテンシが低く、大型モデルよりも高速に動作する可能性がある。Unumは、マルチモーダルな小型エンベッディング・モデルを提供している。
マルチモーダルテキスト、サウンド、ビデオデータ
ほとんどのマルチモーダルテキスト-音声RAGシステムは、最初に音声をテキストに変換するためにマルチモーダル生成LLMを使用する。音とテキストのペアが作成されると、テキストはベクターに埋め込まれ、通常の方法でテキストを取得するためにRAGを使用することができます。最後のステップでは、テキストを音にマッピングして、Text-to-Soundまたはその逆のループを終了する。
OpenAIのWhisperは、音声をテキストに書き起こすことができる。
OpenAIのText-to-speech (TTS) もテキストを音声に変換することができる。
マルチモーダルText-to-Video RAGシステムは、まず動画をテキストにマッピングし、テキストを埋め込み、テキストを検索し、検索結果として動画を返すという同様のアプローチを用いる。
OpenAIのSoraは、テキストをビデオに変換することができる。Dall-eと同様、テキストプロンプトを与えると、LLMが動画を生成する。また、静止画や他の動画から動画を生成することもできる。
要約
このブログでは、RAGアプリケーションで使用されている、いくつかの一般的な埋め込みモデルについて触れました。
その他のリソース
埋め込みモデルの評価](https://zilliz.com/learn/evaluating-your-embedding-model)
独自のテキスト埋め込みモデルのトレーニング](https://zilliz.com/learn/training-your-own-text-embedding-model)
RAGとは](https://zilliz.com/learn/Retrieval-Augmented-Generation)
あなたのGenAIアプリのためのトップパフォーマンスAIモデル|Zilliz](https://zilliz.com/ai-models)
参考文献
MTEB リーダーボード、論文、Github: https://huggingface.co/spaces/mteb/leaderboard
オーバーフィットモデルを選択しないためのMTEBベストプラクティス:https://huggingface.co/blog/lyon-nlp-group/mteb-leaderboard-best-practices
類似画像検索:https://milvus.io/docs/image_similarity_search.md
画像-動画検索https://milvus.io/docs/video_similarity_search.md
類似音検索https://milvus.io/docs/audio_similarity_search.md
テキストから画像への検索https://milvus.io/docs/text_image_search.md
2024 SigLIP (sigmoid loss CLIP)の論文:https://arxiv.org/pdf/2401.06167v1
Unumのポケットサイズのマルチモーダル埋め込みモデル:https://github.com/unum-cloud/uform
読み続けて

10 Open-Source LLM Frameworks Developers Can’t Ignore in 2025
LLM frameworks simplify workflows, enhance performance, and integrate seamlessly with existing systems, helping developers unlock the full potential of LLMs with less effort.

Introducing Milvus 2.5: Built-in Full-Text Search, Advanced Query Optimization, and More 🚀
We're thrilled to announce the release of Milvus 2.5, a significant step in our journey to build the world's most complete solution for all search workloads.

Build RAG with LangChainJS, Milvus, and Strapi
A step-by-step guide to building an AI-powered FAQ system using Milvus as the vector database, LangChain.js for workflow coordination, and Strapi for content management