導入
埋め込みのベクトルストリーミングが導入されています。これは、大規模なドキュメントの埋め込みを最適化するように設計されています。 Rustの並行性を使用して非同期チャンクと埋め込みを有効にすると、メモリの使用量が減少し、プロセスが高速化されます。今日は、シームレスな画像の埋め込みと検索のために、Weaviate Vectorデータベースと統合する方法を示します。
私の前の記事「Embeddings PipelineをEmbedanythingでSuperChargeで、Embedanythingの背後にあるアイデアと、複数のモダリティからの埋め込みの作成が簡単になる方法について説明しました。この記事では、ベクトルストリーミングと呼ばれる埋め込みの新しい機能を紹介し、Weaviate Vectorデータベースでどのように機能するかを確認したいと思います。
概要
- 埋め込みのベクトルストリーミングは、Rustの並行性と非同期チャンキングを使用して、大規模なドキュメントの埋め込みを最適化します。
- チャンクを並行して処理することにより、従来の埋め込み方法のメモリと効率の問題を解決します。
- Weaviateとの統合により、ベクトルデータベースにシームレスな埋め込みと検索が可能になります。
- ベクトルストリーミングの実装には、データベースアダプターの作成、埋め込みモデルの開始、データの埋め込みが含まれます。
- このアプローチは、大規模なドキュメント埋め込みのために、より効率的でスケーラブルで柔軟なソリューションを提供します。
目次
- 何が問題ですか?
- 問題に対する私たちの解決策
- 埋め込みのユースケースの例
- ステップ1:アダプターを作成します
- ステップ2:埋め込みモデルを作成します
- ステップ3:ディレクトリを埋め込みます
- ステップ4:ベクトルデータベースをクエリします
- ステップ5:ベクトルデータベースをクエリします
- 出力
- よくある質問
何が問題ですか?
まず、特に大規模な文書で、埋め込みの作成に関する現在の問題を調べます。現在の埋め込みフレームワークは、チャンクと埋め込みの2段階のプロセスで動作します。まず、テキストはすべてのファイルから抽出され、チャンク/ノードが作成されます。次に、これらのチャンクは、埋め込みを処理するために特定のバッチサイズの埋め込みモデルに供給されます。これが行われている間、チャンクと埋め込みはシステムメモリにとどまります。
これは、ファイルと埋め込み寸法が小さい場合は問題ではありません。しかし、これは多くのファイルがある場合に問題になり、大規模なモデル、さらに悪いことにマルチベクトル埋め込みを使用しています。したがって、これを操作するには、埋め込みを処理するために高いRAMが必要です。また、これが同期して行われた場合、チャンクは計算が多い操作ではないため、チャンクが作成されている間に多くの時間が無駄になります。チャンクが作成されているため、それらを埋め込みモデルに渡すことは効率的です。
問題に対する私たちの解決策
解決策は、非同期のチャンクと埋め込みタスクを作成することです。 Rustの並行性パターンとスレッドの安全性を使用して、このタスクを処理するために、スレッドを効果的に生成できます。これは、RustのMPSC(Multi-Producer Single Consumer)モジュールを使用して行われ、スレッド間でメッセージを渡します。したがって、これにより、バッファーで埋め込みスレッドに渡されたチャンクのストリームが作成されます。バッファが完了すると、チャンクを埋め込み、埋め込みをメインスレッドに送り返し、ベクトルデータベースに送信します。これにより、単一の操作とボトルネックで時間が無駄になることはありません。さらに、システムはバッファーにチャンクと埋め込みのみを保存し、ベクトルデータベースに移動するとメモリからそれらを消去します。
埋め込みのユースケースの例
さて、この機能を実行しているのを見てみましょう。
Embedanythingを使用すると、ファイルのディレクトリからベクトルデータベースへのベクトルをストリーミングすることは、単純な3段階のプロセスです。
- ベクトルデータベースのアダプターを作成します。これは、データベースの関数をめぐるラッパーであり、インデックスを作成し、メタデータをEmbedanythingの形式からデータベースに必要な形式に変換し、インデックスに埋め込みを挿入する関数です。顕著なデータベースのアダプターはすでに作成されており、ここに存在しています。
- 選択した埋め込みモデルを開始します。さまざまなローカルモデルまたはクラウドモデルから選択できます。構成は、一度にストリーミングする必要がある埋め込みの数について、チャンクサイズとバッファサイズを設定することで決定することもできます。理想的には、これはできるだけ高くなければなりませんが、システムはこれを制限します。
- Embedanythingから埋め込み関数を呼び出します。埋め込みのディレクトリパス、埋め込みモデル、アダプター、および構成を渡すだけです。
この例では、画像のディレクトリを埋め込み、ベクトルデータベースに送信します。
ステップ1:アダプターを作成します
埋め込みでは、ライブラリを重くしないようにアダプターが外部に作成され、どのデータベースを使用するかを選択できます。これは、Weaviate用のシンプルなアダプターです。
embed_anythingからインポートEmbedDataから embed_anything.vectordbインポートアダプターから クラスweaviateadapter(アダプター): def __init __(self、api_key、url): super().__ init __(api_key) self.client = weaviate.connect_to_weaviate_cloud( cluster_url = url、auth_credentials = wvc.init.auth.api_key(api_key) )) self.client.is_ready()の場合: print( "Weaviate Is Ready") def create_index(self、index_name:str): self.index_name = index_name self.collection = self.client.collections.create( index_name、vectorizer_config = wvc.config.configure.vectorizer.none() )) self.collectionを返します def convert(self、embeddings:list [beddata]): data = [] 埋め込みに埋め込むため: Property = embedding.metadata Property ["Text"] = embedding.text data.append( wvc.data.dataobject(properties = property、vector = embedding.embedding) )) データを返します def upsert(自己、埋め込み): data = self.convert(埋め込み) self.client.collections.get(self.index_name).data.insert_many(data) def delete_index(self、index_name:str): self.client.collections.delete(index_name) ###クライアントとインデックスを起動します url = "your-weaviate-url" api_key = "your-weaviate-api-key" weaviate_adapter = weaviateadapter(api_key、url) index_name = "test_index" weaviate_adapter.client.collections.list_all()のindex_nameの場合: weaviate_adapter.delete_index(index_name) weaviate_adapter.create_index( "test_index")
ステップ2:埋め込みモデルを作成します
ここで、画像を埋め込んでいるので、クリップモデルを使用できます
embed_anythingのインポートwhithmodel Model = embed_anything.embeddingmodel.from_pretrained_cloud( embed_anything.whichmodel.clip、 モデル_)
ステップ3:ディレクトリを埋め込みます
data = embed_anything.embed_image_directory( 「\ image_directory」、 beder = model、 adapter = weaviate_adapter、 config = embed_anything.imageembedconfig(buffer_size = 100)、 ))
ステップ4:ベクトルデータベースをクエリします
query_vector = embed_anything.embed_query(["cat of a cat"]、beder = model)[0] .embedding
ステップ5:ベクトルデータベースをクエリします
応答= weaviate_adapter.collection.query.near_vector( Near_vector = query_vector、 制限= 2、 return_metadata = wvc.query.metadataquery(efcessty = true)、 )) 応答を確認してください。
出力
クリップモデルを使用して、猫、犬、サルの写真でディレクトリ全体をベクトル化しました。 「猫の画像」という単純なクエリを使用すると、すべてのファイルを猫の画像を検索することができました。
Colabのコードについては、ノートブックをご覧ください。
結論
ベクターストリーミングは、多くのエンジニアがより最適化されたノーテクノロジーの債務ソリューションを選択できるようにする機能の1つだと思います。クラウドでかさばるフレームワークを使用する代わりに、軽量ストリーミングオプションを使用できます。
Github Repoをご覧ください:Embedanything Repo。
よくある質問
Q1。埋め込みのベクトルストリーミングとは何ですか?Ans。 Vectorストリーミングは、Rustの並行性を非同期チャンクと埋め込みに使用し、メモリの使用量を削減し、プロセスを高速化することにより、大規模なドキュメントの埋め込みを最適化する機能です。
Q2。ベクトルストリーミングはどのような問題を解決しますか?Ans。これは、チャンクを非同期に処理し、ボトルネックを削減し、リソースの使用を最適化することにより、従来の埋め込み方法での高いメモリの使用と非効率性に対処します。
Q3。ベクトルストリーミングはWeaviateでどのように機能しますか?Ans。アダプターを使用して、埋め込みベクターデータベースと埋め込みを接続し、データのシームレスな埋め込みとクエリを可能にします。
Q4。ベクトルストリーミングを使用するための手順は何ですか? Ans。ここにステップがあります:
1.データベースアダプターを作成します。
2。埋め込みモデルを開始します。
3。ディレクトリを埋め込みます。
4.ベクトルデータベースをクエリします。
Ans。従来の埋め込み方法と比較して、より良い効率、メモリの使用量の減少、スケーラビリティ、柔軟性を提供します。
以上がベクトルストリーミング:錆を使用したメモリ効率の高いインデックスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

オンデバイスAIの力を活用:個人的なチャットボットCLIの構築 最近では、個人的なAIアシスタントの概念はサイエンスフィクションのように見えました。 ハイテク愛好家のアレックスを想像して、賢くて地元のAI仲間を夢見ています。

AI4MHの最初の発売は2025年4月15日に開催され、有名な精神科医および神経科学者であるLuminary Dr. Tom Insel博士がキックオフスピーカーを務めました。 Insel博士は、メンタルヘルス研究とテクノでの彼の傑出した仕事で有名です

「私たちは、WNBAが、すべての人、プレイヤー、ファン、企業パートナーが安全であり、大切になり、力を与えられたスペースであることを保証したいと考えています」とエンゲルバートは述べ、女性のスポーツの最も有害な課題の1つになったものに取り組んでいます。 アノ

導入 Pythonは、特にデータサイエンスと生成AIにおいて、プログラミング言語として優れています。 大規模なデータセットを処理する場合、効率的なデータ操作(ストレージ、管理、アクセス)が重要です。 以前に数字とstをカバーしてきました

潜る前に、重要な注意事項:AIパフォーマンスは非決定論的であり、非常にユースケース固有です。簡単に言えば、走行距離は異なる場合があります。この(または他の)記事を最終的な単語として撮影しないでください。これらのモデルを独自のシナリオでテストしないでください

傑出したAI/MLポートフォリオの構築:初心者と専門家向けガイド 説得力のあるポートフォリオを作成することは、人工知能(AI)と機械学習(ML)で役割を確保するために重要です。 このガイドは、ポートフォリオを構築するためのアドバイスを提供します

結果?燃え尽き症候群、非効率性、および検出とアクションの間の隙間が拡大します。これは、サイバーセキュリティで働く人にとってはショックとしてはありません。 しかし、エージェントAIの約束は潜在的なターニングポイントとして浮上しています。この新しいクラス

即時の影響と長期パートナーシップ? 2週間前、Openaiは強力な短期オファーで前進し、2025年5月末までに米国およびカナダの大学生にChatGpt Plusに無料でアクセスできます。このツールにはGPT ‑ 4o、Aが含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
