ChatGPTをMilvusで強化する:長期記憶でAIを強化する
GPTCacheとMilvusをChatGPTと統合することで、企業はより強固で効率的なAIを活用したサポートシステムを構築することができる。このアプローチは、ジェネレーティブAIの高度な機能を活用し、長期記憶の形式を導入することで、AIが効率的に情報を呼び出し、再利用することを可能にします。
シリーズ全体を読む
- 検索拡張ジェネレーション(RAG)でAIアプリを構築する
- LLMの課題をマスターする:検索拡張世代の探求
- ディープラーニングにおける主要なNLPテクノロジー
- RAGアプリケーションの評価方法
- リランカーによるRAGの最適化:役割とトレードオフ
- マルチモーダル検索拡張世代(RAG)のフロンティアを探る
- ChatGPTをMilvusで強化する:長期記憶でAIを強化する
- RAGパイプラインのパフォーマンスを高める方法
- ChatGPTをMilvusで強化する:長期記憶でAIを強化する
- Pandas DataFrame:Milvusによるチャンキングとベクトル化
- Llama3、Ollama、DSPy、Milvusを使った検索支援生成(RAG)システムの作り方
- 検索拡張世代(RAG)のためのチャンキング戦略ガイド
- 仮説的文書埋め込み(HyDE)による情報検索とRAGの改善
- Milvus Lite、Llama3、LlamaIndexを使ったRAGの構築
- RA-DITによるRAGの強化:LLM幻覚を最小化する微調整アプローチ
ユーザーが頻繁に製品の問題を報告したり質問したりするオンラインサポートサービスを管理することを想像してみてください。24時間体制でサポートするために、MilvusとOpen AIの大規模言語モデル(LLM を使ったRAGフレームワークを使ってサポートサービスを構築しました。システムを運用していくうちに、ユーザーの困っていることが似ていることに気づきます。過去の回答を活用して、新しい問い合わせに迅速に対応できたらどうだろう?このアプローチでは、LLMへのAPIコールごとに消費するトークンの数を減らしてコストを削減できるだけでなく、レスポンスタイムを大幅に向上させ、サポートサービスのユーザー体験を向上させることができる。
そこでGPTCacheの登場です。GPTCacheは、Zillizのエンジニアによって設計されたオープンソースのライブラリで、LLMクエリのためのセマンティックキャッシュを作成します。このブログでは、GPTCacheをChatGPTやMilvusと統合することで、キャッシュされたレスポンスを利用して効率を改善し、LLMのユースケースをどのように変えることができるかを探ります。以前のインタラクションをリコールするシステムを実装することで、LLMに長期記憶のようなものを提供し、より効果的にインタラクションを処理し、LLM APIを繰り返し呼び出す必要なく関連する情報を記憶できるようにする方法を見ていきます。この機能により、ユーザーエクスペリエンスが向上し、バックエンドサーバーの負荷が軽減され、生成AIモデルの能力が向上する。
ChatGPT プラグインの概要
生成AIモデルの機能といえば、ChatGPTプラグインはChatGPTモデルの基本機能を補強するために設計された拡張機能であり、特定のニーズや機能に合わせて作られています。これらのプラグインは、外部サービスとの統合を可能にしたり、パフォーマンスを向上させたり、主要モデルには本来存在しない新しい機能を導入したりします。例えば、図1に示すように、顧客関係管理(CRM)システムとのインタフェースのためにプラグインを開発し、AIに顧客データへのアクセスを提供することで、パーソナライズされたインタラクションを強化することができます。
図1.ChatGPTプラグインを含む操作の簡略図](https://assets.zilliz.com/chat_gpt_plugins_overview_871e7ca442.png)
GPTCacheがもたらす違いを見てみよう。
GPTベースのアプリが爆発的に増えています。OSSチャット](https://osschat.io/)のアプリビルダーが語るように、これはサービスコストの増加などの課題を伴っており、GPTのためのキャッシュ機構を構築する動機となっています。GPTCacheは、図2に示したように、埋め込み関数、類似性評価関数、保存場所、そして、colab notebookでデモしたように、ユーザーが必要に応じてキャッシュをカスタマイズすることができます。
図2 GPTCacheのフローチャート](https://assets.zilliz.com/Fig_2_Flowchart_of_GPT_Cache_in_action_81f0751583.png)
ユーザがクエリを送信すると、まず、類似検索を可能にするための埋め込みを生成します。GPTCacheは、OpenAI、Cohere、Huggingface、ONNX、Sentence Transformers、および2つのLLMアダプタを含む、コンテキストを埋め込むためのいくつかの方法をサポートしています:OpenAIとLangchainである。これらのツールは、テキストと、画像や音声の可能性のあるクエリを密なベクトルに変換する。LLMアダプターは、タスクを処理する特定のモデルを選択することができる。
GPTCacheはベクトルストレージを利用し、ユーザー入力から得られた埋め込みに基づいて、K個の最も類似したリクエストを管理し、検索する。FAISSのようなベクトル検索ライブラリやMilvusのようなベクトルデータベースをサポートし、効率的な検索機能を提供します。LLMからのこれらの応答をキャッシュするために、GPTCacheはSQLite、MySQL、PostgreSQLを含む様々なデータベースオプションと統合することができます。Milvusは、AIメモリ・システムの極めて重要なバックボーンとして際立っている。特に、膨大なデータセットにわたって高性能な高速ベクトル検索%20%into%20one%20collection.を処理する能力があり、スケーラビリティと信頼性が高い。これは、ChatGPTのような生成AIモデルにとって特に重要であり、応答性が高く動的なメモリシステムを維持することで、全体的なパフォーマンスとユーザーインタラクションの質が向上します。さらに、Milvusは多言語サポートにより開発者に優しいコミュニティを育成し、様々なプログラミング環境へのアクセシビリティと適応性に貢献しています。
GPTCacheが設置されると、重要なステップは入力クエリがキャッシュされた答えと一致するかどうかを判断する方法を確立することです。ここで、類似性評価プロセスが登場します。評価関数は、ユーザーが定義したパラメータを使用して、ユーザーのリクエストデータとキャッシュされたデータを比較し、マッチの適合性を評価します。類似性が見つかり、キャッシュにヒットした場合、キャッシュされた応答がユーザーに配信されます。そうでない場合、モデルは新しいレスポンスを生成し、キャッシュストアに保存します。キャッシュを効率的に管理するために、GPTCacheは古いデータやアクセス頻度の低いデータを破棄するために、LRU(Least Recently Used)やFIFO(First-In-First-Out)のようなeviction policiesを実装します。
コラボノート](https://colab.research.google.com/drive/1ezwvCPgo5uprVCVeO1U02gztJh74iu5M#scrollTo=j5UswHpYgmYT)でお気づきのように、GPTCacheを導入する前は、ChatGPTによってすべてのユーザクエリが個別に処理されるため、レイテンシが高くなり、類似した質問の繰り返し処理による運用コストの増加にもつながります。しかし、GPTCacheの後では、クエリを受信すると、GPTCacheはまず似たような質問が以前にされたかどうかをチェックします。キャッシュに一致するものが見つかった場合、保存されている回答が使用され、応答時間と計算負荷が大幅に削減されます。
課題と機会
Zilliz](https://aclanthology.org/2023.nlposs-1.24.pdf)が発表した論文 "GPTCache:著者らは、GPTCacheの有効性は埋め込みモデルの選択に大きく依存しており、正確なベクトル検索は埋め込みモデルの品質に依存するため、これは非常に重要であると論じている。埋め込みが入力テキストの特徴を効果的に捉えない場合、無関係なキャッシュデータを返す可能性があり、通常90%を超えないキャッシュヒット率に影響を与える。さらなる課題としては、検索には最適化されているが、キャッシュには必ずしも最適化されていない現在の埋め込みモデルの限界や、キャッシュ全体の有効性を劇的に低下させることなく不正なヒットをフィルタリングするための厳密な類似性評価の必要性などがあります。
キャッシュの精度を向上させるため、大規模なモデルをテキスト類似性に特化した小規模なモデルに分割し、キャッシュヒットの正と負を区別する問題に対処している。さらに、入力に含まれるトークン数が大きいと、LLMの処理限界を超える可能性があり、キャッシュシナリオでのデータ損失の可能性につながるため、課題が生じます。長いテキストを管理するために要約モデルが使用されますが、これはキャッシュを不安定にする可能性があります。入力を標準化するためのテキスト前処理とキャッシュに従来のデータベースを使用するなどの代替方法が検討されており、より単純な文字列マッチングや数値範囲テクニックでキャッシュヒットを達成できる可能性がある。
結論
GPTCacheとMilvusをChatGPTと統合することで、企業はより強固で効率的なAIを活用したサポートシステムを構築することができます。このアプローチは、生成型AIの高度な能力を活用し、長期記憶の形式を導入することで、AIが効率的に情報を呼び出し、再利用することを可能にする。このようなイノベーションは、業務環境におけるAIの変革の可能性を強調するものであり、サービス品質と業務効率の大幅な改善を約束するものである。AIの最近の進歩に関する最新情報を入手するには、Zilliz Learnの無料コンテンツや以下のリソースをご覧ください。
リソース
ゲスト投稿ChatGPTの効率化 - LangChainとMilvus*の威力](https://thesequence.substack.com/p/guest-post-enhancing-chatgpts-efficiency)
WebPage QA - GPTCache](https://gptcache.readthedocs.io/en/latest/bootcamp/llama_index/webpage_qa.html)
ChatGPT+ Vector database + prompt-as-code - The CVP Stack - Zilliz blog](https://zilliz.com/blog/ChatGPT-VectorDB-Prompt-as-code)
https://zilliz.com/blog/langchain-ultimate-guide-getting-started
QA Generation - GPTCache](https://gptcache.readthedocs.io/en/latest/bootcamp/langchain/qa_generation.html)
パフォーマンスとコスト改善のためのLLMクエリのキャッシュ - Zilliz blog](https://zilliz.com/blog/Caching-LLM-Queries-for-performance-improvements)
SQLiteの例 - GPTCache](https://gptcache.readthedocs.io/en/latest/bootcamp/langchain/sqlite.html)
AIにおける高密度ベクトル:機械学習におけるデータの可能性の最大化](https://zilliz.com/learn/dense-vector-in-ai-maximize-data-potential-in-machine-learning)
マルチベクトルサーチ Milvus ドキュメント](https://milvus.io/docs/multi-vector-search.md#:~:text=Since%20Milvus%202.4%2C%20we%20introduced,to%2010)
ChatGPTプラグイン](https://openai.com/blog/chatgpt-plugins)
大規模言語モデル (LLM)](https://zilliz.com/glossary/large-language-models-)
GitHub - zilliztech/GPTCache:LLM用のセマンティックキャッシュ。LangChainとllama_indexと完全統合
読み続けて

ディープラーニングにおける主要なNLPテクノロジー
ディープラーニングにおける主要な自然言語処理(NLP)技術の根底にある進化と基本原理を探る。

Llama3、Ollama、DSPy、Milvusを使った検索支援生成(RAG)システムの作り方
この記事では、4つの主要技術を使ったRAGシステムの構築を読者に案内することを目的としている:Llama3、Ollama、DSPy、Milvusである。まず、これらが何であるかを理解しよう。

検索拡張世代(RAG)のためのチャンキング戦略ガイド
このガイドでは、RAG(Retrieval-Augmented Generation)システムにおけるチャンキング戦略の様々な側面を探った。