ChatGPT+ ベクターデータベース + prompt-as-code - The CVP Stack

Zillizで取り組んでいるデモアプリケーションを紹介できることを嬉しく思います。私たちはこれをOSS Chatと呼んでいます。お気に入りのオープンソースプロジェクトに関する技術的な知識を得るために使用できるチャットボットです。この最初のリリースでは、Hugging Face、Pytorch、Milvusのみをサポートしていますが、私たちはあなたのお気に入りのオープンソースプロジェクトのいくつかに拡張する予定です。私たちはOpenAIのChatGPTとベクターデータベースのZillizを使ってOSS Chatを構築しました!私たちは、それを使用するすべての人に無料のサービスとして提供しています。あなたのオープンソースプロジェクトを掲載したい場合は、私たちに知らせてください。
OSS チャットを作った背景
ChatGPTは知識ベースが限られているため制約があり、知らないトピックについて質問されると幻覚のような答えが返ってくることがあります。私たちはこの制約を克服するために、ChatGPT+Vectorデータベース+prompt-as-code(CVPスタック)という新しいAIスタックを導入しています。
ChatGPTは自然言語のクエリに答えるのが非常に得意です。ユーザーのクエリと検索されたテキストを結びつけるプロンプトと組み合わせることで、ChatGPTは適切で正確なレスポンスを生成する。このアプローチは、ChatGPTが "幻覚のような回答 "を提供することを緩和することができます。
CVP スタックの実用的なデモンストレーションとして、OSS Chat を構築しました。OSS Chatは、オープンソースプロジェクトの様々なGitHubリポジトリと、関連するドキュメントページを真実のソースとして活用しています。このデータをエンベッディングに変換し、エンベッディングを Zilliz に、関連するコンテンツを別のデータストアに保存します。ユーザーがOSS Chatでオープンソースプロジェクトについて質問すると、Zillizで類似検索を行い、関連するマッチングを見つけます。検索されたデータはChatGPTに供給され、正確で精度の高い回答を生成します。
OSSチャットアーキテクチャ](https://assets.zilliz.com/updated_diagram_OSS_Chat_13c46d6f4a.jpg)
答えを幻覚する
ChatGPTとOSSチャットを使ったQ&Aの例をいくつかお見せして、間違った回答を削除する方法をお見せしたいと思います。
Q1 ハグする顔はOpenAI Whisperをサポートしていますか?
私たちがChatGPTにこの質問をしたとき、その限界を認め、正確な答え(データを持っていない)を教えてくれましたが、これは役に立ちませんでした。
2021年9月現在、Hugging FaceはOpenAI Whisperのサポートを発表していない。しかし、将来的にサポートを追加する可能性は常にある。OpenAI WhisperはOpenAIの新しい言語モデルであり、他の企業や開発者が自社のプラットフォームや製品に統合するには時間がかかるかもしれない。
OSSチャット**では、Huggingfaceのドキュメントサイトから取得しているため、正確な回答を得ることができます。 *はい、Hugging FaceはOpenAI Whisperをサポートしています。FlaxWhisperModelクラスは、OpenAI Whisperモデルのラッパーであるtransformersライブラリで利用可能です。このクラスを使って、事前にトレーニングされたOpenAI Whisperモデルをロードし、テキスト分類、質問応答、テキスト生成などの様々な自然言語処理タスクに使用することができます。
Q2 torch.compile
APIは何をするのですか?
PyTorchのAPIについてChatGPTに質問したところ、そのAPIが何であるかについての長い回答(私たちが質問したわけではない)と、PyTorchにはtorch.compile
APIはないという回答を得ました。
2021年9月現在、PyTorchにはtorch.compile
APIはありません。
torch.nn.ModuleはPyTorchの全てのニューラルネットワークモジュールのベースクラスであり、ニューラルネットワークモデルの定義や最適化のための様々なメソッドやフックを提供する。
さらに、PyTorchはTorchScript JITコンパイラのようなJIT(Just-In-Time)コンパイラと統合するためのインタフェースを提供しており、TorchScript JITコンパイラは様々なハードウェアプラットフォームで効率的に実行できるようにPyTorchモデルを最適化してコンパイルするために使用できます。JITコンパイラは、PyTorchモデルを他の環境や言語でロードして実行できる、スタンドアロンでシリアライズされた表現に変換するために使用できます。 まとめると、PyTorchにはtorch.compile APIはありませんが、ニューラルネットワークモデルの最適化とコンパイルのためのさまざまなAPIとツールが提供されています。
以下はOSSChatからの情報です: torch.compile`APIの目的は、先にコンパイルすることでPyTorchのコードを高速化することです。既存のコードに最小限の変更を加えるだけで、任意の Python コードを扱うことができ、データに依存した制御フローを扱うことができます。また、TorchScript のトレースでは定数として扱われ、正しくない結果になる可能性のある、PyTorch 以外の関数呼び出しも扱うことができます。
Q3 MilvusのTTLとは何ですか?
この最後の質問に対して、私たちはChatGPTに尋ねました。そして、それは私たちに合理的な答えを提供しました(それはコードスニペットさえ持っていました!)しかし、それは質問に対する答えではありませんでした。その代わりに、それは答えをコンパイルしたに違いない「幻覚」のひとつだった。
*Milvusでは、TTL(Time To Live)はデータの有効期限を設定できる機能です。MilvusのコレクションやパーティションにTTLを設定すると、指定したTTLを超えたデータは自動的に削除されます。MilvusでコレクションまたはパーティションにTTLを設定するには、それぞれ set_collection_ttl
または set_partition_ttl
APIを使用します。以下に例を示す。
python python コピーのコード import datetime from milvus import Milvus, DataType
milvus = Milvus()
コレクションを作成する
コレクションを作成する 'collection_name': 'my_collection'、 'dimension':128, 'index_file_size': 1024、 'metric_type':DataType.FLOAT_VECTOR、 } milvus.create_collection(collection_param)
コレクションにTTLを設定する
now = datetime.datetime.now() delta = datetime.timedelta(days=7) # 7日間のTTL expiry_time = now + delta milvus.set_collection_ttl('my_collection', expiry_time.timestamp())
パーティションを作成する
パーティションを作成する 'collection_name': 'my_collection'、 'partition_name': 'my_partition'、 } milvus.create_partition(partition_param)
パーティションのTTLを設定する
milvus.set_partition_ttl('my_collection', 'my_partition', expiry_time.timestamp())
*この例では、Milvusでコレクションとパーティションを作成します。set_collection_ttl` APIと `set_partition_ttl` APIを使用して、コレクションとパーティションにそれぞれ7日間のTTLを設定します。TTLはUnixタイムスタンプで指定し、1970年1月1日からの秒数である。datetimeモジュールを使って、現在時刻にTTLを足すことで有効期限を計算する。
*Milvusの起動時にTTL機能を有効にする必要があることに注意してください。これはMilvusの設定ファイルに`TTL_CHECK_INTERVAL`パラメータを設定することで可能です。デフォルト値は60秒です。
一方、**OSSchat**は正しい答えを教えてくれた:コレクション・セット・プロパティに希望の秒数を設定する1行のコードである。
*TTLはMilvusにおける "Time to Live "の略である。コレクション内のデータに有効期限を設定できる機能である。コレクション内のデータの有効期限が切れると、自動的にクリーンアップされ、検索やクエリに関与しなくなります*。
*MilvusでコレクションのTTL値を設定するには、Pythonの `collection.set_properties()` メソッドを使用します。例えば、TTL値を1800秒(30分)に設定するには以下のようにします。
`collection.set_properties(properties={"collection.ttl.seconds": 1800})`)
*コレクションを作成するときに、コレクションのプロパティで `collection.ttl.seconds` プロパティを指定してTTL値を設定することもできます。値は秒数で指定し、0以上でなければなりません。0はTTLが無効であることを意味します。
## 今すぐ始める
今後、[OSS チャット](https://osschat.io/) にさらに機能を追加し、どのように構築したかをブログで紹介する予定です。それまでの間、OSS チャットで遊んでみて、どのような機能が欲しいか、あるいは追加したいオープンソースプロジェクトがあれば、それも [お知らせください](https://forms.gle/X3kRWTJmdYCxfur58) !
読み続けて

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.

Empowering Innovation: Highlights from the Women in AI RAG Hackathon
Over the course of the day, teams built working RAG-powered applications using the Milvus vector database—many of them solving real-world problems in healthcare, legal access, sustainability, and more—all within just a few hours.

The Practical Guide to Self-Hosting Compound LLM Systems
BentoML shares its research insights in AI orchestration, demonstrating solutions for optimizing performance issues when self-hosting AI models.