翻訳者|朱 仙中 レビュー | Chonglou 導入大規模言語モデル (LLM) が世界を席巻するにつれ、ベクター検索エンジンもそれに追随しました。同時に、ベクトルデータベースは、大規模言語モデルの長期記憶システムの基盤も形成します。 効率的なアルゴリズムを使用して関連情報を検索し、それをコンテキストとして言語モデルに渡すことで、ベクトル検索エンジンはトレーニングのカットオフを超えて最新の情報を提供し、微調整なしでモデル出力の品質を向上させることができます。このプロセスは、検索拡張生成 (RAG )と呼ばれることが多く、近似最近傍( ANN )検索というかつては難解なアルゴリズムの課題を機械学習の分野で注目の的にしました。 さまざまな論争がある中で、ベクトル検索エンジンは大規模言語モデルと密接に関連していることは一般的に認められています。関連する話は他にもたくさんあります。 LLM の検索強化生成の改善をはるかに超える、ベクトル検索テクノロジに基づく強力なアプリケーションがすでに多数存在します。 この記事では、データの理解、データの探索、モデルの解釈可能性など、ベクトル検索エンジンの私のお気に入りの使用例を 10 個紹介します。 ここで取り上げるアプリケーションは、おおよそ複雑さの順に次のとおりです。
1. 画像類似性検索Oxford IIIT ペットデータセットの画像の類似性検索(ライセンスあり) (画像提供:著者) おそらく最も単純なアプリケーションは、画像の類似性検索です。このアプリケーションでは、まず画像で構成されるデータセットを準備します。データセットは、単純な個人の写真アルバムから、何千台もの分散カメラで長年にわたって撮影された数十億枚の画像からなる非常に複雑で大規模なリポジトリまで、何でもかまいません。 セットアップは簡単です。まず、データセット内の各画像の埋め込みを計算し、これらの埋め込みベクトルから対応するベクトルインデックス値を生成します。最初のバッチ計算の後は、それ以上の推論は必要ありません。このデータセットの構造を調べる良い方法は、データセットから画像を選択し、その k 近傍(最も類似した画像)のベクトル インデックスを照会することです。このアプローチにより、クエリ画像の周囲の画像空間がどの程度の密度で埋められているかを直感的に把握できます。 画像類似性検索の詳細と実際のコードについては、リンク https://docs.voxel51.com/user_guide/brain.html#image-similarityを参照してください。 2. 逆画像検索UnsplashのオックスフォードIIITペットデータセットに基づく(Mladen ウェブサイトŠćekićの画像の逆画像検索(写真提供:著者) 同様に、画像類似性検索の自然な拡張は、データセット内で外部画像に最も類似する画像を見つけることです。これは、ローカル ファイル システムからの画像でも、インターネットからの画像でもかまいません。 逆画像検索を実行するには、画像類似性検索の例で行ったように、まずデータセットのベクトルインデックスを作成します。 2 つの違いは、実行時フェーズにあります。実行時フェーズでは、クエリ画像の埋め込みを計算し、そのベクトルを使用してベクトル データベースを照会します。 リバース画像検索の詳細と動作コードについては、このリンクを参照してください: https://github.com/jacobmarks/reverse-image-search-plugin 。 3. オブジェクトの類似性検索COCO-2017 データセット検証セグメントにおける羊のオブジェクト類似性検索(許可を得て掲載) (画像提供:著者) 画像の内容をさらに詳しく調べたい場合は、オブジェクトまたは「タイル」の類似性検索を調べるとよいでしょう。一例として、人物の再識別が挙げられます。関心のある人物の画像があり、データセット内でその人物のすべてのインスタンスを見つけたい場合です。 人物は各画像のごく一部しか占めていない可能性があるため、人物が含まれる画像全体の埋め込みは、それらの画像内の他のコンテンツに大きく依存する可能性があります。たとえば、1 つの画像に複数の人物が含まれる場合があります。 より良い解決策は、各オブジェクト検出パッチを個別のエンティティとして扱い、各オブジェクトの埋め込みを計算することです。次に、これらのパッチを使用してベクトル インデックスを作成し、再識別する人物のパッチに対して類似性検索を実行します。これを学習するための出発点として、まずResNet モデルの使い方を学ぶ必要があるかもしれません。 ここでは 2 つの微妙な点があります。
4. 強力なOCR文書検索私の博士論文のTesseract OCR エンジンによって生成されたテキスト ブロックのあいまい/意味的検索。埋め込み計算にはGTEベースモデルを使用(画像提供:著者) 光学文字認識 (OCR) は、手書きのメモ、古い雑誌記事、医療記録、クローゼットに隠されたラブレターなどの文書をデジタル化できるテクノロジーです。 TesseractやPaddleOCRなどのOCR エンジンは、画像内の個々の文字や記号を認識し、段落のような連続したテキストの「チャンク」を作成することで機能します。 このようなテキストができたら、 https://github.com/jacobmarks/keyword-search-plugin で入手可能なプラグインのソース コードに実装されているように、予測されたテキスト ブロックに対して従来の自然言語キーワード検索を実行できます。ただし、この検索方法では、単一文字のエラーが発生しやすくなります。 OCR エンジンが誤って「l」を「1」と認識した場合、「control」のキーワード検索は失敗します。 この課題を克服するにはベクトル検索を使用できます。 Hugging Face のSentence Transformer ライブラリのGTEベースモデルなどのテキスト埋め込みモデルを使用してテキスト チャンクを埋め込み、ベクトルインデックスを作成します。次に、検索テキストを埋め込み、インデックスを照会することで、デジタル化されたドキュメント内であいまい検索やセマンティック検索を実行できます。マクロの観点から見ると、これらのドキュメント内のテキスト チャンクは、オブジェクト類似性検索におけるオブジェクト検出パッチに似ています。 強力な OCR ドキュメント検索アプリケーションの詳細と動作コードについては、 https://github.com/jacobmarks/semantic-document-search-pluginを参照してください。 5. セマンティック検索COCO 2017 検証分割における自然言語を使用したセマンティック画像検索(画像提供:著者) マルチモーダルモデルを通じて、セマンティック検索の概念をテキストから画像に拡張できます。 CLIP 、 OpenCLIP 、 MetaCLIPなどのモデルは、画像とそのキャプションの共通表現を見つけるようにトレーニングされているため、犬の画像の埋め込みベクトルは、 「犬の写真」というテキストキャプションの埋め込みベクトルと非常に似ています。 これは、データセット内の画像の CLIP 埋め込みからベクトルインデックスを作成し、このベクトルデータベースに対してベクトル検索クエリを実行することが合理的 (つまり「可能」 )であることを意味します。ここで、クエリベクトルはテキスト キューの CLIP 埋め込みです。 動画内の個々のフレームを画像として扱い、各フレームの埋め込みをベクター インデックスに追加することで、動画内でセマンティック検索を実装することもできる点に注目してください。 セマンティック検索アルゴリズムの詳細と動作コードについては、次のリンクを参照してください: https://docs.voxel51.com/user_guide/brain.html#text-similarity 6. モデル間検索1 つのトレインで入力音声ファイルと一致する画像をモデル間で検索します。これは、 ImageBind と Qdrantベクターインデックスを使用したCOCO 2017 検証分割で実現されています(ビデオは著者提供) ある意味では、画像データセットにおけるセマンティック検索は、クロスモデル検索の一種です。アルゴリズムを概念的に説明するために、テキストクエリに対応する画像を取得します。 ImageBindのようなモデルツールを使用すると、このアプリケーション領域をさらに深く掘り下げることができます。 ImageBind は、6 つの異なるモダリティ(画像、テキスト、オーディオ、深度、熱、慣性測定ユニット)からのデータを同じ埋め込み空間に埋め込みます。つまり、これらのモダリティのいずれかに対してベクトルインデックスを生成し、これらのモダリティのいずれかからのサンプルを使用してそのインデックスをクエリできるということです。たとえば、車のクラクションの音声クリップを取得し、その車のすべての画像を取得できます。 クロスモデル検索の詳細と動作コードについては、 https://github.com/jacobmarks/audio-retrieval-pluginを参照してください。 7. 知覚的類似性を探るこれまでほとんど無視してきたベクトル探索の非常に重要な部分は、モデルです。実際、ベクトル インデックスの要素はモデルからの埋め込みです。これらの埋め込みは、カスタム埋め込みモデルの最終出力になることもあれば、分類などの別のタスクでトレーニングされたモデルの隠れた表現または潜在的な表現になることもあります。 いずれにせよ、サンプルを埋め込むために使用するモデルは、どのサンプルが他のサンプルに最も類似しているかを識別する際に大きな影響を与える可能性があります。 CLIP モデルでは、意味概念を捉えることはできますが、画像内の構造情報を表現するのは困難です。一方、ResNet モデルは、ピクセルや画像スライスのレベルで操作できるため、構造やレイアウトの類似性を表現するのに非常に優れています。さらに、 DreamSimのような埋め込みモデルがあり、これはギャップを埋めて中程度の類似性を捉え、モデルの類似性の概念を人間の知覚と一致させることを目指しています。 最後に、ベクトル検索に焦点を当てます。この検索技術により、モデルが世界をどのように「見ている」かを調べることができます。おそらく、(同じデータ上で)関心のあるモデルごとに個別のベクトル インデックスを作成することで、さまざまなモデルが内部的にデータをどのように表現するかについてすぐに直感を得ることができます。 以下は、NIGHTS データセットに CLIP、ResNet、DreamSim モデルを使用して埋め込まれた同じクエリ画像の類似性検索結果を示す例です。 NIGHTS データセット ( Stable Diffusionを使用して生成された画像) の画像に対する ResNet50 埋め込みによる類似性検索。ResNetモデルはピクセル レベルとタイルレベルの両方で動作するため、取得された画像は構造的にはクエリに類似していますが、意味的には必ずしも類似しているわけではありません。 同じクエリ画像上の CLIP 埋め込みの類似性検索。 CLIP モデルは、画像の基本的なセマンティクスを尊重しますが、レイアウトは尊重しません。 同じクエリ画像に埋め込まれた DreamSim からの類似性検索結果。 DreamSim はこのギャップを埋め、意味的特徴と構造的特徴の間の最適な中間レベルの類似性のトレードオフを追求します。 知覚的類似性の探索に関する詳細情報と実際のコードについては、このリンクを参照してください: https://medium.com/voxel51/teaching-androids-to-dream-of-sheep-18d72f44f2b 。 8. 比較モデル表現NIGHTS データセットにおける ResNet50 と CLIP モデル表現のヒューリスティック比較。 ResNet 埋め込みは、 UMAP ( Uniform Manifold approximation and Projection )メソッドを使用して2D に縮小されました。埋め込み内のポイントを選択し、近くのサンプルをハイライト表示すると、ResNet がセマンティクスではなく構成とカラーパレットの類似性をどのようにキャプチャするかがわかります。 CLIP 埋め込みを使用して選択したサンプルに対してベクトル検索を実行すると、 CLIP に従ったサンプルのほとんどがResNetによって検索されていないことがわかります。 ベクトル検索と均一多様体近似および投影 (UMAP )などの次元削減技術を組み合わせることで、2 つのモデル間の違いに関する新たな洞察を得ることができます。方法は次のとおりです。 各モデルの埋め込みには、モデルがデータをどのように表現するかに関する情報が含まれています。 UMAP(またはt-SNEまたはPCA)技術の助けを借りて、元のモデル(モデル1 )から埋め込まれた低次元(2Dまたは3D)表現を生成できます。こうすることで、ある程度の詳細は犠牲になりますが、どのサンプルが他のサンプルと類似していると考えられるかという情報が保持されることが期待されます。一方、私たちが得るのは、このデータを視覚化する能力です。 元のモデル (モデル1 )の埋め込み視覚化を背景として、グラフ内のポイントを選択し、モデル 2 (モデル 2)の埋め込みに対してその例のベクトル検索クエリを実行できます。取得したポイントが 2D 視覚化のどこに位置しているかを確認できます。 前の例では、前のセクションと同じ NIGHTS データセットを使用し、より多くの構成および構造の類似性情報を取得するResNet 埋め込みを視覚化し、 CLIP (意味的側面) 埋め込みを使用して類似性検索を実行します。 9. 概念の補間オックスフォード IIIT ペットデータセット上のCLIP 埋め込みを使用した概念「ハスキー」と「チワワ」間の補間 この記事もほぼ終わりに近づいていますが、幸運なことに、いくつか最高のものを最後に残しておきました。これまで扱ってきたベクトルは埋め込みだけです。ベクトル インデックスには埋め込みが設定され、クエリ ベクトルも埋め込みです。しかし、埋め込み空間には、データとより動的にやりとりするために利用できる追加の構造が存在する場合があります。 この動的な相互作用の一例は、私が「概念的補間」と呼んでいるものです。動作は次のとおりです。まず画像データセットを取得し、次にマルチモーダルモデル (テキストと画像)を使用してベクトルインデックスを生成します。たとえば、概念を表す「晴れ」や「雨が降っている」などの 2 つのテキスト キューを選択し、値 alpha を [0,1] の範囲に設定します。各テキスト概念の埋め込みベクトルを生成し、これらのベクトルをアルファで指定された線形結合に追加できます。次に、ベクトルを正規化し、画像埋め込みのベクトル インデックスへのクエリとして使用します。 2 つのテキスト キュー (概念) の埋め込みベクトル間を線形補間しているため、概念自体の間も非常に緩く補間されます。アルファを動的に変更し、すべてのインタラクションでベクターデータベースを照会できます。 この概念補間の概念は実験的なものであることに留意してください(覚えておいてください:必ずしも明確に定義された操作ではありません) 。テキスト プロンプトが概念的に関連しており、データセットが十分に多様で、補間スペクトルのさまざまなポイントで異なる結果が得られる場合に、最も効果的に機能することがわかりました。 Concept Interpolation の詳細情報と実際のコードについては、次のリンクを参照してください: https://github.com/jacobmarks/concept-interpolation 。 10. 概念空間の横断「概念」の空間は、埋め込みをさまざまなテキストの手がかりの方向に移動することによって横断され、その結果はCOCO 2017 データセットのテスト分割サブセットでここに示されています。ここで使用されている画像とテキストはCLIPモデルに埋め込まれています(画像は著者提供) 最後に、もう 1 つの非常に重要なアプリケーションは、私のお気に入りの「概念空間トラバーサル」です。概念補間と同様に、このアプリケーションは画像データセットから開始し、 CLIP などのマルチモーダル モデルを使用して埋め込みを生成します。次に、データセットから画像を選択します。この画像は出発点となり、そこから概念の空間を「旅」することができます。 その後、概念の代わりにテキスト文字列を指定して、移動する方向を定義できます。テキスト文字列の埋め込みベクトル (乗算係数を含む) が初期画像の埋め込みベクトルに追加される方向の「ステップ」のサイズを設定します。 「宛先」ベクトルは、ベクトルデータベースを照会するために使用されます。必要な数だけコンセプトを追加し、取得した画像セットがリアルタイムで更新されるのを確認できます。 「概念補間」と同様に、概念空間のトラバーサルは必ずしも厳密に定義されたプロセスではありません。しかし、私はそれが魅力的であり、テキスト埋め込みに適用される係数がこの係数を考慮に入れるのに十分高い場合は、非常にうまく機能すると思います。 Concept Space Traversalの詳細と動作コードについては、このリンクを参照してください: https://github.com/jacobmarks/concept-space-traversal-plugin 。 結論はベクター検索エンジンは非常に強力なツールです。彼らは、検索強化生成における機械学習の分野で当然の「スター」です。しかし実際には、ベクターデータベースの用途はこれよりはるかに広範囲にわたります。ベクターデータベースは、データに対する理解を深め、モデルがデータをどのように表現するかについての洞察を得て、データと対話するための新しい方法を提供するのに役立ちます。 ベクトルデータベースは必ずしも大規模言語モデルの分野にのみ関連しているわけではないことに注意してください。埋め込みが関係する場合はいつでも有用であることが判明しており、埋め込みはモデルとデータの交差点に位置します。埋め込み空間の構造をより厳密に理解すればするほど、サポートベクター検索におけるデータとモデルの相互作用はより動的かつ一般化可能になります。 この記事が興味深いと思ったら、ベクター検索に関する以下の関連記事もチェックしてみてください。
翻訳者紹介Zhu Xianzhong 氏は、51CTO のコミュニティ エディターであり、51CTO の専門ブロガー兼講師であり、濰坊の大学のコンピューター教師であり、フリーランス プログラミング コミュニティのベテランです。 原題: From RAGs to Riches 、著者: Jacob Marks, Ph.D. |
<<: ReSimAD: 実データなしで知覚モデルの一般化パフォーマンスを向上させる方法
>>: マイクロソフトCEOナデラ氏:世界は人工知能に関して幅広い合意を形成しつつある
導入今日は、Java プログラマーとして人工知能の分野に素早く参入する方法について説明します。現在、...
今年初め、OpenAI は ChatGPT がサードパーティのプラグインを統合できるようにし、Cha...
コンピレーション | ブガッティ編集者 | 薛燕澤[51CTO.com クイック翻訳]多くの企業は、...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
2022年7月12日、九張雲済DataCanvas社は、もう一つの画期的なオープンソース技術成果であ...
[[208216]] ***ニュースによると、Kaggleは最近、機械学習とデータサイエンスに関する...
アメリカは、いまだに人工知能技術の最先端にいます。アメリカが警戒すればするほど、私たちはアメリカのや...
著者 | 崔昊レビュー | Chonglouまとめこの記事では、さまざまなユーザー データの分離を確...
[[230225]]本レポートでは、無人配送業界の変化、その台頭理由、中国と米国の違いについて詳細に...
10月12日、全米レコード協会(RIAA)は、人工知能(AI)による音声複製が著作権侵害の潜在的な脅...
ディープラーニングは、機械学習の最も重要な分野の 1 つとして、近年急速に発展しています。膨大なデー...