AIを活用した検索のための埋め込みモデルの活用

AIが進化し続けるにつれて、情報の検索と取得の方法は、特に膨大な量の非構造化データを扱う場合に、変容してきた。従来のキーワードベースの検索方法では、現代のデータセットの複雑さ、特に意味や文脈を理解することになると、その扱いに苦戦している。そこで、埋め込みモデルとベクトル埋め込みが登場し、システムが単語、画像、その他のデータタイプ間の関係を把握できるようにする。
先日のUnstructured Data Meetupで、Mixedbreadの共同創設者であるAamir Shakir は、高性能AIシステム、特にRAG(Retrieval Augmented Generation) を大規模に作成するための埋め込みモデルの構築とトレーニング方法についての洞察を共有した。このブログでは、彼の講演から重要なポイントを要約し、高度な検索システムに力を与えるエンベッディング・モデルの役割を探ります。また、MilvusやZilliz Cloud(マネージドMilvus)のような圧縮手法やベクトルデータベースの利用を含む、埋め込みモデルの学習、スケーリング、効率的な保存のためのテクニックについても取り上げます。
8月のSF Unstructured Data Meetupで講演するAamir Shakir氏](https://assets.zilliz.com/DSC_0159_2691502dec.JPG)
このトピックについてもっと知りたい方は、AamirのYouTubeでの講演をご覧になることをお勧めします。
.構造化されていないデータにとって、埋め込みモデルとは何か?
データ駆動型の世界では、組織は膨大な量の非構造化データ-ログ、内部文書、音声、ビデオなど-に圧倒されています。このような多様なデータから意味のある洞察を抽出することは、重要な課題です。そこで登場するのが、埋め込みモデルとベクトル埋め込みです。
埋め込みモデル**は、非構造化データを数値表現に変換し、高次元空間に投影するように設計された機械学習モデルの一種です。これらの表現はベクトル埋め込みと呼ばれる。ベクトル埋め込みは、データ内の関係や意味を捉え、コンピュータがより効果的にデータを理解し、処理し、分析することを可能にする。これらのベクトルがベクトル空間内で近ければ近いほど、意味的に類似していることになる。
埋め込みモデルは、自然言語処理(NLP)からコンピュータビジョン、そしてそれ以上に至るまで、幅広いタスクにおける基本的なツールである。
意味理解
埋め込みモデルは、単語、文、または文書の意味をベクトルにエンコードし、それらの意味的関係を捉える。このようにデータを表現することで、これらのモデルは機械が文脈と意味を理解することを可能にし、質問応答、翻訳、要約のような、より高度なタスクを可能にする。
多言語およびマルチモーダル機能
高度な埋め込みモデルは、複数の言語や、テキスト、画像、音声などのデータタイプ(モダリティ)を扱うことができる。この機能により、異なる言語やデータ形式間での情報の比較や検索が可能になります。例えば、1つのモデルで、テキストと画像の類似コンテンツを検索したり、複数言語のテキストを同じベクトル空間内で翻訳して整列させることができます。
移植性
事前にトレーニングされた埋め込みモデルは、多くの場合、(微調整のような技術によって)異なる下流のタスクに適応させることができます。ゼロからモデルをトレーニングする代わりに、事前にトレーニングされたモデルを活用し、特定のタスクのためにそれを変更することで、時間と計算リソースを節約することができます。この移植性により、組み込みモデルは、分類、推薦システム、その他のユースケースを問わず、AIアプリケーションの構築に非常に効率的です。
古典的検索アプローチの問題点
エンベッディングが台頭する以前は、用語頻度-逆文書頻度(TF-IDF)やキーワードベースマッチングのような伝統的な検索手法が情報検索に用いられていました。しかし、これらのアプローチは単純なユースケースには有効であるが、単語間の意味的関係を捉えることができない。また、今日のより複雑な情報ニーズに対応するには大きな限界がある。いくつかの制限がある:
曖昧さへの対応
従来の方法の主な課題の1つは、曖昧さを扱うのが難しいことである。
複数の意味を持つ単語(多義性)や、同じ意味を持つ異なる単語(同義性)は、従来の手法の難点であり、不正確な結果につながる。"bank "という単語を考えてみよう。bank "を検索すると、金融機関に関する結果が返されるかもしれないが、実際には、ユーザーは河岸に関する情報を検索していたのである。
エンベッディングは、単語が現れる文脈を考慮することで、この問題を解決する。金融における "bank "という単語は、自然の文脈における "bank "とは異なるベクトル表現を持つことになる。これにより、検索システムは関連性が高いだけでなく、文脈的にも正確な結果を返すことができる。
固定表現
従来の手法のもう一つの限界は、単語や文書に固定された表現を使うことである。これらの表現は時間の経過とともに異なるコンテクストに変化しないため、動的情報検索での利用が制限される可能性がある。
スケーラビリティの制限
従来の手法は、主にウェブスケールの情報検索タスクを扱う場合、データが大きく複雑になるにつれて、性能と効率を維持するのに苦労する。一方、ベクトル埋め込みを扱うセマンティック検索システムは、スケールするように設計されている。いったんデータがベクトルに変換され、Milvusのようなベクトルデータベースに格納されれば、億単位のベクトルデータであっても効率的に扱うことができ、高速かつ正確な検索に利用することができます。このことは、推薦システムやRAGのようなシステムにとって、埋め込みを重要なものにしています。
これらの限界は、キーワードではなく意味を用いて関連するコンテンツを理解し検索できる最新の検索システムを構築する上で、埋め込みが必要であることを示している。
埋め込みモデルとその汎化問題
エンベッディング・モデルは、RAGから推薦システムに至るまで、AIアプリケーションの要となっている。これらのモデルは、データを符号化し、検索や分類などのタスクを促進する上で非常に効果的であるが、特に汎化に関しては限界がないわけではない。
多くのエンベッディング・モデルは固定された語彙を持っているため、学習データに含まれていない新しい単語に出くわしたときに問題が発生します。
ロングテール性能: **埋め込みモデルは通常、一般的な単語や概念に対してはうまく機能しますが、非常に特殊な用語に対しては困難が伴います。
ドメインの特異性: **あるドメインのデータで訓練された埋め込みモデルは、異なるドメインに適用するとパフォーマンスが低下する可能性がある。この限界は、埋め込みモデルには学習データの統計的パターンが含まれており、新しいタイプのデータには有効でない可能性があるためです。そのため、埋め込みモデルを最良の性能にするためには、通常、ドメイン固有のデータで微調整を行う必要がある。
エンベッディングモデルのバイアス:エンベッディングモデルもバイアスの影響を受けやすい。エンベッディング・モデルは、大規模な、場合によってはキュレーションされていないデータセットでトレーニングされる。したがって、データに存在する社会的なバイアスを誤って吸収してしまう可能性がある。
文脈の変化:***静的埋め込みモデルは、文脈に関係なく同じベクトルを単語に割り当てる。これは、2つ以上の意味を持ちうる単語にとっては問題となりうる。
最新の埋め込みモデルの構築と学習方法
高品質の埋め込みモデルを構築するには、特にRAGのような複雑なシステムの場合、スケーラビリティ、正確性、効率性を確保するために思慮深いアプローチが必要です。エンベッディングモデルは、一般的にニューラルネットワークを用いて構築され、それらが生成するエンベッディングの品質は、学習プロセスに大きく依存します。最先端の(SOTA)性能を達成するためには、いくつかの重要なステップを踏む必要があります:
大規模で多様なデータセットでの事前トレーニング
ロバストな埋め込みモデルを構築するための重要な最初のステップは、大規模で多様なデータセット上での事前トレーニングです。このプレトレーニングは、モデルを様々な言語パターン、構造、コンテキストにさらすことで、下流の様々なタスクに適用できる汎化可能な特徴を学習させます。このアイデアは、モデルにデータに対する幅広い理解を与えることで、慣れ親しんだ入力だけでなく、新しい、見たことのないデータに対しても優れた性能を発揮できるようにすることである。
エンベッディングには以下のような種類がある:
単語埋め込み**](https://arxiv.org/pdf/1901.09069)は低次元の密なベクトルであり、単語を連続ベクトル空間に投影する。意味的・構文的な関係を捉えるのに有用である。
概念埋め込み**](https://arxiv.org/pdf/1908.06203)は、意味空間における概念のベクトル表現であり、それらの関係や属性を捕捉する。これは、大規模な知識グラフに由来することが多い。
文脈埋め込み**](https://arxiv.org/pdf/2003.07278)は、BERTやGPTなどのモデルによって生成される動的な単語表現である。文脈に敏感な埋め込みを生成するために、フレーズ内の各単語の周囲の文脈を考慮する。
以下の図は、埋め込みモデルの学習プロセスを理解するのに役立ちます:
埋め込みモデルの学習フェーズ](https://assets.zilliz.com/Training_phase_of_the_embedding_model_817a71149b.png)
トークン化は、入力データを単語やサブワードのような小さな単位(トークン)に分解し、モデルの語彙を作成します。語彙とは、学習中にモデルがデータを理解し表現するために使用する、ユニークなトークンの集合である。
エンベッディングの初期化**は、データセット内の各トークンをエンベッディングベクターが表す行列を初期化する。この行列はトークン間の関係と意味を要約したもので、ベクトルは通常50次元から1,000次元の範囲である。
トレーニング**は、意味的に類似した単語間の距離を最小化し、類似していない単語間の距離を最大化するようにモデルのパラメータを調整する。
タスク固有の最適化のためのファインチューニング
プリトレーニングの後、fine-tuningは特定のタスクのためにモデルを最適化するために重要である。例えば、RAGシステムが法律の文脈で利用される場合、法的文書に対する埋め込みモデルを微調整します。こうすることで、埋め込みはドメイン固有の語彙を維持し、RAGシステムの性能を向上させる。また、この段階では、マルチモーダルおよび多言語検索タスクに適した構造化データおよび非構造化データを扱うようにモデルを微調整する。
スケールでのベクトル埋め込み格納
埋め込みモデルが高度になるにつれて、生成されるベクトルはますます複雑になります。モデルの複雑さが常に高次元のベクトルを意味するわけではありませんが、より大きなモデルはより詳細な表現を持つ埋め込みを生成することが多く、時には数千次元になることもあります。これは、特に大規模なデータセットやリアルタイム・アプリケーションを扱う場合、保存と検索の両面で課題となります。
このような課題に対処するためには、効率的な保存と検索の手法が重要である。ベクトルデータベース、近似最近傍(ANN)検索、最適化されたインデックス構造などの技術は、パフォーマンスを犠牲にすることなく埋め込みデータを迅速に検索できるようにするために一般的に使用されています。さらに、これらの高次元ベクトルのサイズを、その意味的な意味を失うことなく縮小するためには、圧縮技術も不可欠です。
ベクトルデータベース
MilvusやZilliz Cloud(Milvusのマネージドバージョン)などのベクトルデータベースは、ベクトル埋め込み形式の非構造化データを効率的に管理・検索するために特別に設計されています。Milvusは、メガスケールでのベクトルの保存と検索に最適化されたオープンソースのベクトルデータベースです。近似最近傍(ANN)](https://zilliz.com/glossary/anns)検索を使用し、何十億ものベクトルを含むデータベースを扱う場合でも、関連する埋め込みデータを迅速に検索します。Zilliz Cloudは、より高度な機能をマネージドサービスとして提供し、大規模なベクターデータベースを管理するための運用オーバーヘッドを削減します。
圧縮技術
エンベッディングはベクトルデータベースに直接保存することができますが、それを大規模に保存するのはコストがかかります。そこで、圧縮技術が役に立ちます。圧縮の背後にある主なアイデアは、メモリ要件を削減し、クエリの速度を向上させることです。バイナリ量子化](https://zilliz.com/learn/what-are-binary-vector-embedding)とスカラー量子化がある。
バイナリ量子化は、与えられた埋込みの各特徴を2進数の数字に縮小し、スカラー量子化は、次元全体のサイズを2バイトの浮動小数点や1バイトの整数のような小さなデータ型に縮小します。
例えば、ある画像が3つの異なる特徴で表現され、各特徴がFLOAT-32記憶ユニットの範囲の値を保持している場合、このベクトルに対して2進量子化を実行すると、3つの特徴のそれぞれが独立して1つの2進数で表現されることになります。したがって、3つのFLOAT-32値を含むベクトルは、[1, 0, 1]のような3つの2進数のベクトルに変換されます。
バイナリ量子化は、効率的で複雑な計算が少ないため、大規模なデータセットのベクトル検索に非常に有効である。Milvusと2値ベクトルの場合、Milvusは類似度メトリックとしてハミング距離を使用します。このメトリックは、格納された2つのバイナリベクトル間の距離を高速に計算することができます。以下にハミング距離法の動作例を示す。
ハミング距離法の仕組み](https://assets.zilliz.com/How_the_hamming_distance_method_works_04be2594aa.png)
次に、スカラー量子化の手法を用いて、float32エンベッディングをint8フォーマットに変換します。この手法では、float32の連続的な値の範囲を、-127から127までの256個の異なるint8値の離散的な集合にマッピングします。
スカラー量子化を行うには
各埋め込み次元の最小値と最大値を決定します。
量子化ステップの決定:** float32の値をint8の範囲に均等に分散させるために必要なステップサイズを計算します。
量子化:** 各 float32 値を、計算されたステップサイズを使用して、最も近い int8 値に丸めます。
1.0 から 1.0 までの値を離散的な int8 値にします。
int8へのスカラー量子化により、元のfloat32エンベッディングの精度を下げ、各値を8ビット整数(4倍小さい)で表現することで、可能な限り多くの情報を保持しながら、それらを格納するために必要なメモリ量を減らします。
圧縮の経済学](https://assets.zilliz.com/The_economics_of_compression_7deaddfbd5.png)
要約
エンベッディングモデルは、情報検索に柔軟でスケーラブル、かつ意味的に豊かなアプローチを提供し、類似検索の方向性を定義するのに役立っている。クラスタリングやバイテキストマイニングの改善から、マルチモーダル検索や多言語検索の実現まで、エンベッディングは従来の手法では到達できなかった多くの機会を提供している。
高品質なRAGシステムのために最先端の埋め込みモデルを構築するには、事前学習、微調整、スケーラビリティに細心の注意を払う必要がある。Zilliz CloudとMilvusは、エンベッディングを大規模に管理し、よりインテリジェントで応答性の高いニューラル検索システムの構築を支援します。
その他のリソース
情報検索メトリクス](https://zilliz.com/learn/information-retrieval-metrics)
情報検索とは](https://zilliz.com/learn/what-is-information-retrieval)
独自のテキスト埋め込みモデルのトレーニング](https://zilliz.com/learn/training-your-own-text-embedding-model)
埋め込みモデルの評価](https://zilliz.com/learn/evaluating-your-embedding-model)
バイナリ量子化によるベクトル検索](https://zilliz.com/learn/enhancing-efficiency-in-vector-searches-with-binary-quantization-and-milvus)
スカラー量子化と積量子化](https://zilliz.com/learn/scalar-quantization-and-product-quantization)
RAG (Retrieval Augmented Generation)とは](https://zilliz.com/learn/Retrieval-Augmented-Generation)
従来のキーワードマッチングからベクトル検索へ](https://zilliz.com/learn/evolution-of-search-from-traditional-keyword-matching-to-vector-search-and-genai)
FiftyOne、LlamaIndex、Milvusでより優れたマルチモーダルRAGパイプラインを構築する](https://zilliz.com/blog/build-better-multimodal-rag-pipelines-with-fiftyone-llamaindex-and-milvus)
読み続けて

Why Not All VectorDBs Are Agent-Ready
Explore why choosing the right vector database is critical for scaling AI agents, and why traditional solutions fall short in production.

Vector Databases vs. Graph Databases
Use a vector database for AI-powered similarity search; use a graph database for complex relationship-based queries and network analysis.

GLiNER: Generalist Model for Named Entity Recognition Using Bidirectional Transformer
GLiNER is an open-source NER model using a bidirectional transformer encoder.