GPTCacheとMilvusでGPT-4に備えよう、マルチモーダルAIで大きな節約を

#はじめに
世界がますますデジタル化するにつれ、膨大な量のデータを理解・分析できる人工知能(AI)ソリューションの需要が高まっている。GPT-3.5が搭載するOpenAIのChatGPTは、すでに自然言語処理(NLP)の分野に革命をもたらし、大規模言語モデル(LLM)への大きな関心を促している。LLMの採用が様々な業界で注目され成長し続けるにつれ、マルチモーダルデータを処理できるより高度な大規模AIモデルの必要性も高まっている。テクノロジー界はすでに、視覚入力を可能にすることでさらに強力で多機能になることが約束されたGPT-4への期待で沸き立っている。GPT-4と画像生成モデルとのコラボレーションも、計り知れない可能性を秘めている。この革命に備え、ZillizはGPTCacheとMilvusを統合したソリューションを発表しました。
マルチモーダルAIとは、音声、視覚、言語、ジェスチャーなど複数の知覚・コミュニケーションモードを統合し、よりインテリジェントで効果的なAIシステムを構築することである。このアプローチにより、AIモデルは人間の相互作用や環境をよりよく理解・解釈し、より正確でニュアンスのある反応を生成できるようになる。マルチモーダルAIは、ヘルスケア、教育、エンターテインメント、交通など様々な分野で応用されている。マルチモーダルAIシステムの例としては、SiriやAlexaのようなバーチャルアシスタント、自律走行車、画像と患者データを一緒に分析する医療診断ツールなどがある。
この記事では、GPTCacheの詳細を掘り下げ、Milvusと連携して、マルチモーダルシナリオにおいてよりシームレスでパワフルなユーザー体験を提供する方法を探る。
マルチモーダルAIのためのセマンティックキャッシュ
ほとんどの場合、マルチモーダルAIアプリケーションで望ましい結果を達成するには、大規模なモデルを使用する必要があります。しかし、そのようなモデルや呼び出しの処理には時間とコストがかかります。そこでGPTCacheが役に立ちます。GPTCacheは、大規模なモデルにリクエストを送信する前に、システムがまずキャッシュ内の潜在的な答えを検索することを可能にします。GPTCacheはプロセス全体をスピードアップし、大規模モデルの実行コストを削減するのに役立ちます。
GPTCacheによるセマンティックキャッシュの探索
セマンティックキャッシュは概念の知識表現を保存・検索します。セマンティックキャッシュは、意味的な情報や知識を構造化された方法で保存し、検索するように設計されています。したがって、AIシステムはクエリや要求をよりよく理解し、応答することができます。セマンティックキャッシュの背景にある考え方は、よくある質問やクエリに対して事前に計算された答えを提供することで、関連情報へのより速いアクセスを提供し、AIアプリケーションのパフォーマンスと効率を向上させることです。
GPTCacheは、応答時間を最適化し、大規模なモデルに関連するAPI呼び出しの費用を削減するために開発されたプロジェクトです。GPTcacheは、モデルの応答を保存し、Milvusのパワーを活用するセマンティックキャッシュを作成するために設計されました。この技術はMilvus上に構築されており、大規模モデルアダプタ、コンテキストマネージャ、エンベッディングジェネレータ、キャッシュマネージャ、類似性評価器、プリポストプロセッサなどの重要なコンポーネントが組み込まれています。
GPTCacheアーキテクチャ](https://assets.zilliz.com/Architecture_3afc2ee8a6.png)
アダプタはGPTCacheがどのような大規模モデルともシームレスに動作することを保証します。コンテキスト・マネージャは、システムがさまざまなデータをさまざまな段階で扱えるようにする柔軟性を実現します。エンベッディング・ジェネレータは、ベクトル・ストレージとセマンティック検索のために、データをエンベッディングに変換します。すべてのベクトルとその他の貴重なデータはキャッシュに保存されます。Milvusは大規模なデータの保存をサポートするだけでなく、類似検索のスピードアップと性能向上にも貢献する。最後に、評価者はキャッシュから検索された潜在的な回答がユーザーのニーズに対して十分なものであるかどうかを評価する役割を担っている。次のコード・スニペットは、GPTCacheの異なるモジュールでキャッシュを初期化する方法を示しています。
python from gptcache import cache from gptcache.manager import get_data_manager, CacheBase, VectorBase, ObjectBase from gptcache.processor.pre import get_prompt from gptcache.processor.post import temperature_softmax from gptcache.embedding import Onnx from gptcache.similarity_evaluation.distance import SearchDistanceEvaluation
onnx = Onnx() cache_base = CacheBase('sqlite') vector_base = VectorBase( 'milvus'、 host='localhost'、 port='19530'、 dimension=onnx.dimension ) object_base = ObjectBase('local', path='./objects') data_manager = get_data_manager(cache_base, vector_base, object_base)
cache.init( pre_embedding_func=get_prompt, # 前処理 embedding_func=onnx.to_embeddings, # 埋め込みジェネレータ data_manager=data_manager, # キャッシュマネージャー similarity_evaluation=SearchDistanceEvaluation() # 評価器 post_process_messages_func=temperature_softmax # ポストプロセス )
### 意味データをベクターデータベースにキャッシュする
GPTCacheのようなセマンティックキャッシュの基礎の一つはベクトルデータベースです。具体的には、GPTCacheの埋め込みジェネレータは、ベクトルストレージとセマンティック検索のためにデータを埋め込みに変換します。Milvusのようなベクトルデータベースにベクトルを格納することは、大規模データの格納をサポートするだけでなく、類似検索の高速化と性能の向上にも役立ちます。これにより、キャッシュから潜在的な回答をより効率的に検索することができる。
事前に訓練されたマルチモーダルモデルは、異なるタイプの入力を表現するためのベクトル空間を学習する。その結果、他のモダリティから提供される補完的な情報を取り込むことができる。このパラダイムにより、システムは様々なモダリティのデータを統一的な方法で解釈することができ、セマンティック検索によるより正確で効率的な処理が可能になる。[ベクトルデータベース](https://zilliz.com/learn/what-is-vector-database)は、ベクトル類似性アルゴリズムを介して、マルチモーダル入力の意味検索を可能にする。データを行と列で格納する従来のデータベースとは異なり、ベクトルデータベースは非構造化データをベクトルとして格納・検索する。ベクトルデータベースは高次元データを管理し、異なるデータタイプをベクトルとして処理するマルチモーダルAIアプリケーションで普及している。
### Milvusを使用するメリット
Milvusエコシステムは、データベースの監視、データ移行、データサイズの推定に役立つツールを提供します。Milvusをより簡単に導入・保守するために、クラウドネイティブなサービス[Zilliz Cloud](https://zilliz.com/cloud)がある。MilvusとGPTCacheの組み合わせは、マルチモーダルAIアプリケーションの機能とパフォーマンスを強化するための強力なソリューションを提供します。大量のデータ、複雑なモデル、多様なデータタイプを扱う場合でも、このアプローチによってデータ処理を効率化し、結果の精度と速度を向上させることができます。マルチモーダルAIでMilvusとGPTCacheを統合すると、いくつかの強力な利点が得られます。ここでは、最も注目すべきものをいくつか紹介します:
- データの効率的な保存と検索**。
Milvusは、大規模なベクトルデータの保存と検索のために構築されています。さらに、ベクトルはディープラーニングモデルが話す「一般的な言語」です。Milvusはベクトルを容易に扱うことができ、マルチモーダルデータへの高速かつ効率的なアクセスを提供します。Milvusを使用することで、レスポンスタイムの高速化とユーザーエクスペリエンスの向上につながります。
- 改善された柔軟性とスケーラビリティ**。
AIアプリケーションによって処理されるデータ量が増加するにつれて、スケーラブルなソリューションの必要性も高まっています。Milvusを取り入れることで、システムは需要の増大に合わせてシームレスに拡張することができます。さらにMilvusは、マルチモーダルAIの全体的な柔軟性と機能性を向上させる幅広い機能を提供します。
- 精度とパフォーマンスの向上
Milvusが提供する統一されたデータの保存と検索のおかげで、マルチモーダルAIアプリケーションは、さまざまなデータタイプからの入力をより迅速かつ正確に処理することができます。これは、より正確な結果とシステム全体のパフォーマンスの向上につながります。
- 使いやすさ
Milvusは、pipによるクイックスタートを含む、ローカル展開のためのさまざまなオプションを提供しています。また、Zilliz Cloudを介したクラウドサービスも提供しており、Milvusインスタンスの迅速な立ち上げと拡張が可能です。Milvusはまた、Python、Java、Go(さらに開発中)を含む複数の言語SDKをサポートしており、既存のアプリケーションへの統合を容易にしている。さらに、Milvusはサーバーと簡単にやりとりできるRestful APIを提供している。
- 人気と信頼性
Milvusは、その高いスケーラビリティとパフォーマンスにより絶大な人気を得ています。1,000を超える企業ユーザーと活発なオープンソースコミュニティにより、Milvusは大量の構造化データおよび非構造化データを管理するための信頼性の高いソリューションとして位置づけられています。LF AI & Data Foundation](https://lfaidata.foundation/)の卒業プロジェクトであるMilvusは、組織的な支援も受けており、効率的で信頼性の高いデータ管理ソリューションを求める組織にとって、頼りになるデータベースとしての地位をさらに強固なものにしています。
### キャッシュの制約を克服してアウトプットの多様性を高める
多様なアウトプットを生成できるマルチモーダルAIは、幅広いユーザーのニーズに対応できる包括的かつ効果的なソリューションを提供するために不可欠である。出力の多様性は、ユーザーエクスペリエンスの向上に役立ち、AIシステムの全体的な機能性を向上させる。さらに、出力の多様性は、バーチャルアシスタント、チャットボット、音声認識システムなど、幅広い種類の出力を必要とするアプリケーションにとって極めて重要です。
セマンティックキャッシュはデータを取得する効率的な方法ですが、ユーザーの回答の多様性を制限する可能性があります。大規模なモデルから新しい回答を生成するよりも、キャッシュされた回答を優先する。つまり、システムは、以前にキャッシュされた情報に大きく依存し、同じまたは類似の出力を生成し続ける可能性がある。その結果、出力は反復的になり、新規性に欠ける可能性がある。これは、多様で創造的な回答が必要とされる文脈では問題となりうる。
この問題に対処するため、機械学習における温度は貴重なツールとなっている。温度は応答内容のランダム性や多様性を決定し、温度値が高いほど、最も可能性の高い出力以外の可能性をより探索することができる。これにより、創造的で予想外の出力が得られ、より幅広い嗜好やスタイルに対応することができる。一方、低い温度値は、より集中した決定論的な反応を生み出し、正確で首尾一貫した結果を生み出す。
温度調整によってキャッシュの制約を克服することで、マルチモーダルAIアプリケーションは、より幅広いユーザーのニーズに応える、より包括的で効果的なソリューションを生み出すことができる。
#### GPTCache における温度
適切な温度値を選択することは、ランダム性と一貫性のバランスを取り、ユーザーやアプリケーションの特定のニーズや好みに合わせるために、マルチモーダルAIにおいて不可欠です。GPTCacheの温度は、主に機械学習における温度の一般的な概念を保持しています。これは、ワークフロー内の3つのオプションによって実現されます:
- 評価後に選択
モデルのロジットに対するソフトマックス活性化は、深層学習における温度を含む一般的なテクニックです。GPTCacheも同様にソフトマックス関数を使用して、回答候補の類似度スコアを確率のリストに変換します。スコアが高いほど、最終的な答えとして選択される可能性が高くなります。温度は可能性分布の鋭さを制御します。つまり、より高いスコアを持つ答えが選択される可能性が高くなります。GPTCache のポストプロセッサ `temperature_softmax` は、このアルゴリズムに従って、スコアまたは信頼度が与えられた候補リストから項目を選択します。
python
from gptcache.processor.post import temperature_softmax
messages = ["メッセージ1", "メッセージ2", "メッセージ3"]].
スコア = [0.9, 0.5, 0.1]
answer = temperature_softmax(messages, scores, temperature=0.5)
- キャッシュなしの呼び出しモデル
キャッシュを検索することなく、大きなモデルを直接呼び出す可能性を適用する。この可能性は温度に影響される。温度が高いとキャッシュ検索をスキップする可能性が高くなり、温度が低いとキャッシュ検索をスキップする可能性が低くなる。ここでは、temperatuer_softmax
を使用して、温度によってキャッシュをスキップするかチェックするかを制御する例を示す。
python from gptcache.processor.post import temperature_softmax
def skip_cache(temperature): if 0 < temperature < 2: cache_skip_options = [True, False] です。 prob_cache_skip = [0, 1] です。 cache_skip = temperature_softmax( messages=cache_skip_options、 scores=prob_cache_skip、 temperature=temperature) ) elif temperature >= 2: cache_skip = True else: # 温度 <= 0 cache_skip = False return cache_skip
- キャッシュから結果を編集**する。
小さなモデルやいくつかのツールを使って答えを編集する場合、このオプションには出力のデータ型を変換する機能を持つエディタが必要です。
## マルチモーダルアプリケーション
GPT-3.5だけに頼るのではなく、GPT-4からの支援を求める人が増えています。さらに、現在のトレンドは、純粋なLLMからマルチモーダル・アプリケーションに移行しつつある。マルチモーダルAIは、主にテキスト、ビジュアル、オーディオを含む複数のモダリティのデータと対話します。AI技術の進化に伴い、GPTCacheとMilvusはインテリジェントなマルチモーダルシステムを構築するためのエキサイティングで革新的なアプローチを示しています。以下の例は、GPTCacheとMilvusがマルチモーダルな状況でどのように実装されたかを示しています。
### 1.**テキストから画像へ画像生成
AIによる画像生成は近年話題となっている。これは、事前に訓練されたマルチモーダルなテキスト-画像モデルを用いて、テキストの説明や指示に基づいて画像を生成することを指す。この技術は近年大きく進歩した。画像生成モデルやアプリケーションは驚くほど進歩し、人間が撮影した写真と見分けがつかないような説得力のある画像を生成できるようになりました。
プロンプト|白いシャム猫](https://assets.zilliz.com/Prompt_a_white_siamese_cat_cde4532ed5.png)
画像を生成するプロセスでは、入力としてテキストプロンプトを使用します。GPTCacheでは、プロンプトの意味検索機能により、画像生成が容易になります。このシステムでは、Milvusを使用してテキスト埋め込みを比較し、キャッシュに保存されている類似のプロンプトを検出します。そして、対応する画像をキャッシュから検索する。キャッシュに満足のいく結果がない場合、GPTCacheは画像生成モデルを呼び出す。モデルの画像とテキストの出力はGPTCacheによって保存され、データベースを充実させる。埋め込みジェネレータは各テキストプロンプトをベクトルに変換し、保存と検索を容易にするためにMilvusに保存します。
以下のコード例では、GPTCacheを適応させたOpenAIサービスを呼び出して、"a whilte siamese cat "というテキストを与えられた画像を生成している。このリクエストは、`temperature` と `top_k` という値を通して、生成される画像の多様性をその都度調節している。温度をデフォルト値の0.0から高い値の0.8に変更することで、リクエストは同じテキストが与えられるたびに異なる画像を得る可能性が高くなる。
python
from gptcache.adapter import openai
cache.set_openai_key()
response = openai.Image.create(
prompt="a white siamese cat"、
temperature=0.8, # オプション。デフォルトは0.0。
top_k=10 # オプション。デフォルトは 5 if temperature>0.0 else 1.
)
GPTCacheは現在、OpenAI Image Creation, Stability.AI API, Stable Diffusions at HuggingFace を含む、ほとんどの一般的な画像生成モデルやサービス用のアダプタを内蔵しています。ブートキャンプでは、OpenAIを使った画像生成のチュートリアルを提供しています。
2.**画像からテキストへ画像キャプション
画像キャプションは、通常、事前に訓練されたマルチモーダル画像テキストモデルを使用して、画像のテキスト説明を生成する。この技術により、コンピュータは画像の内容を理解し、人間が解釈できるように自然言語で記述することができます。また、画像キャプションをチャットボットに組み込むことで、より堅牢なソリューションを提供することができます。製品の視覚的側面と会話的側面の間のシームレスな移行を可能にし、全体的なユーザー体験を向上させます。
ベッドの上に寝そべる大きな茶色の犬](https://assets.zilliz.com/A_large_brown_dog_laying_on_top_of_a_bed_8b2586de80.png)
画像のキャプション付けに関して、GPTCacheは、画像埋め込みによって測定された入力画像に似た画像をキャッシュからスキャンすることから始めます。次に、返されたキャプションの品質を保証するために、評価者は、入力画像とキャッシュから検索された画像やキャプションとの関連性や類似性の追加評価を実行します。例えば、ResNetsやViTsのような事前に訓練された視覚モデルは、画像の類似性を評価することができる。さらに、CLIPのようなテキスト-画像モデルを適用して、画像とテキストの類似度を測定することもできる。キャッシュに一致するものがない場合、システムはマルチモーダルモデルを利用して、与えられた画像のキャプションを生成します。その後、GPTCacheは画像とそれに対応するキャプションの両方を保存し、画像とキャプションはMilvusにベクトルとして保存される。
GPTCacheはすでにReplicate BLIPやminiGPT-4のような人気のある画像キャプションサービスを適応しています。GPTCacheはさらに多くのimage-to-textサービスやローカルホスト型マルチモーダルモデルをサポートする予定です。
3.**音声からテキストへ:音声からテキストへの変換
音声からテキストへの変換は、音声トランスクリプションとも呼ばれ、録音された会話、会議、講義などの音声コンテンツを文字に変換します。この技術により、聞き取りが困難な人や、内容を聞くよりも読むことを好む人が、より簡単に情報にアクセスし、理解できるようになります。ChatGPTのようなチャットボットにトランスクリプションを渡すだけでなく、ユーザーはトランスクリプションを使ってより多くのことを調べることができます。
音声ファイル|バーボン1杯、スコッチ1杯、お札1枚](https://assets.zilliz.com/Audio_file_One_bourbon_one_scotch_one_bill_3e636e1586.png)
音声ファイルは通常、音声書き起こしの最初の入力となります。GPTCacheを有効にすることで、最初のステップでは、各入力に対して音声埋め込みを作成します。その後、システムは類似性検索のためにMilvusを利用し、キャッシュから書き起こしの候補を検索します。最後に、評価の結果、対応する答えが見つからなかった場合に、自動音声認識(ASR)モデルまたはサービスが呼び出されます。ASRモデルによって生成された音声とトランスクリプションのペアは、すべてキャッシュに保存されます。Milvusを使用して音声データをベクトルとして保存することで、キャッシュから類似した音声をマッチングすることが可能になります。また、音声データの量が増えてもスケーラビリティを確保することができます。
GPTCacheとMilvusは、複数のASR呼び出しの必要性を大幅に削減し、速度と効率を向上させます。Speech to Text](https://gptcache.readthedocs.io/en/latest/bootcamp/openai/speech_to_text.html)のGPTCacheブートキャンプでは、GPTCacheを有効にし、OpenAI TranscriptionsにMilvusを適用するためのチュートリアル例を提供しています。
結論
マルチモーダルAIモデルの使用は、複雑なデータのより包括的な分析と理解を可能にし、人気を集めている。非構造化データをサポートするMilvusは、マルチモーダルアプリケーションの構築と拡張に理想的なソリューションです。さらに、GPTCacheにセッション管理、コンテキスト認識、サーバーサポートなどの機能を追加することで、マルチモーダルAIの機能がさらに強化されます。これらの進歩により、マルチモーダルAIモデルはより多くの潜在的な用途とシナリオを持つことになります。GPTCacheブートキャンプ](https://github.com/zilliztech/GPTCache/tree/main/docs/bootcamp)では、マルチモーダルAIアプリケーションに関するさらなる洞察をお届けします。
読み続けて

Vector Databases vs. Hierarchical Databases
Use a vector database for AI-powered similarity search; use a hierarchical database for organizing data in parent-child relationships with efficient top-down access patterns.

Vector Databases vs. In-Memory Databases
Use a vector database for AI-powered similarity search; use an in-memory database for ultra-low latency and high-throughput data access.

Deploying a Multimodal RAG System Using vLLM and Milvus
This blog will guide you through creating a Multimodal RAG with Milvus and vLLM.