SQLマインドのためのChromaDB
こんにちは。Chroma DB は、GenAI アプリケーションの操作に役立つベクトル データベースです。この記事では、MySQL の同様の関係を調べることで、Chroma DB でクエリを実行する方法を検討します。
スキーマ
SQL とは異なり、独自のスキーマを定義することはできません。 Chroma では、それぞれ独自の目的を持つ固定列が得られます:
import chromadb #setiing up the client client = chromadb.Client() collection = client.create_collection(name="name") collection.add( documents = ["str1","str2","str3",...] ids = [1,2,3,....] metadatas=[{"chapter": "3", "verse": "16"},{"chapter":"3", "verse":"5"}, ..] embeddings = [[1,2,3], [3,4,5], [5,6,7]] )
ID: 一意の ID です。 SQL とは異なり、自動インクリメントがないので、自分で指定する必要があることに注意してください
Documents: 埋め込みの生成に使用されるテキスト データを挿入するために使用されます。テキストを指定すると、埋め込みが自動的に作成されます。または、埋め込みを直接指定してテキストを別の場所に保存することもできます。
埋め込み: これらは類似性検索を実行するために使用されるため、私の意見では、データベースの最も重要な部分です。
メタデータ: これは、追加のコンテキストのためにデータベースに追加する可能性のある追加データを関連付けるために使用されます。
コレクションの基本が明確になったので、CRUD 操作に進み、データベースにクエリを実行する方法を見てみましょう。
CRUD操作
注: コレクションは Chroma のテーブルのようなものです
コレクションを作成するには、create_collection() を使用し、必要に応じて操作を実行できますが、コレクションがすでに作成されており、再度参照する必要がある場合は、get_collection() を使用する必要があります。そうしないと、エラーが発生します。
Create Table tablename
#Create a collection collection = client.create_collection(name="name") #If a collection is already made and you need to use it again the use collection = client.get_collection(name="name")
Insert into tablename Values(... , ..., ...)
collection.add( ids = [1] documents = ["some text"] metadatas = [{"key":"value"}] embeddings = [[1,2,3]] )
挿入されたデータを更新するか、データを削除するには、次のコマンドを使用できます
collection.update( ids = [2] documents = ["some text"] metadatas = [{"key":"value"}] embeddings = [[1,2,3]] ) # If the id does not exist update will do nothing. to add data if id does not exist use collection.upsert( ids = [2] documents = ["some text"] metadatas = [{"key":"value"}] embeddings = [[1,2,3]] ) # To delete data use delete and refrence the document or id or the feild collection.delete( documents = ["some text"] ) # Or you can delete from a bunch of ids using where that will apply filter on metadata collection.delete( ids=["id1", "id2", "id3",...], where={"chapter": "20"} )
クエリ
次に、特定のクエリがどのように見えるかを見ていきます
Select * from tablename Select * from tablename limit value Select Documents, Metadata from tablename
collection.get() collection.get(limit = val) collection.get(include = ["documents","metadata"])
get() は、より高度なクエリのために大規模なテーブル セットをフェッチするためにありますが、クエリ メソッドを使用する必要があります
Select A,B from table limit val
collection.query( n_results = val #limit includes = [A,B] )
これで、データをフィルタリングする 3 つの方法が考えられます: 類似性検索 (ベクター データベースが主に使用される用途)、メタデータ フィルタ、ドキュメント フィルタ
類似性検索
テキストまたは埋め込みに基づいて検索し、最も類似した出力を取得できます
collection.query(query_texts=["string"]) collection.query(query_embeddings=[[1,2,3]])
ChromaDB では、where および where_document パラメーターを使用して、クエリ中に結果を フィルター します。これらのフィルターを使用すると、メタデータまたは特定のドキュメント コンテンツに基づいて類似性検索を絞り込むことができます。
メタデータによるフィルター
where パラメーターを使用すると、関連するメタデータに基づいてドキュメントをフィルターできます。メタデータは通常、ドキュメントの挿入時に指定するキーと値のペアの辞書です。
カテゴリ、作成者、日付などのメタデータでドキュメントをフィルタリングします。
import chromadb #setiing up the client client = chromadb.Client() collection = client.create_collection(name="name") collection.add( documents = ["str1","str2","str3",...] ids = [1,2,3,....] metadatas=[{"chapter": "3", "verse": "16"},{"chapter":"3", "verse":"5"}, ..] embeddings = [[1,2,3], [3,4,5], [5,6,7]] )
Create Table tablename
ドキュメントの内容でフィルタリングする
where_document パラメーターを使用すると、ドキュメントの内容に基づいて直接フィルター処理できます。
特定のキーワードを含むドキュメントのみを取得します。
#Create a collection collection = client.create_collection(name="name") #If a collection is already made and you need to use it again the use collection = client.get_collection(name="name")
重要なメモ:
- $contains、$startsWith、$endsWith などの演算子を使用します。
- $contains: 部分文字列を含むドキュメントと一致します。
- $startsWith: 部分文字列で始まるドキュメントと一致します。
- $endsWith: 部分文字列で終わるドキュメントと一致します。
-
例:
Insert into tablename Values(... , ..., ...)
ログイン後にコピーログイン後にコピー
一般的な使用例:
次のように 3 つのフィルターをすべて組み合わせることができます:
-
特定のカテゴリ内を検索:
collection.add( ids = [1] documents = ["some text"] metadatas = [{"key":"value"}] embeddings = [[1,2,3]] )
ログイン後にコピーログイン後にコピー -
特定の用語を含むドキュメントを検索:
collection.update( ids = [2] documents = ["some text"] metadatas = [{"key":"value"}] embeddings = [[1,2,3]] ) # If the id does not exist update will do nothing. to add data if id does not exist use collection.upsert( ids = [2] documents = ["some text"] metadatas = [{"key":"value"}] embeddings = [[1,2,3]] ) # To delete data use delete and refrence the document or id or the feild collection.delete( documents = ["some text"] ) # Or you can delete from a bunch of ids using where that will apply filter on metadata collection.delete( ids=["id1", "id2", "id3",...], where={"chapter": "20"} )
ログイン後にコピーログイン後にコピー -
メタデータとドキュメント コンテンツ フィルターを組み合わせる:
Select * from tablename Select * from tablename limit value Select Documents, Metadata from tablename
ログイン後にコピーログイン後にコピー
これらのフィルターにより類似性検索の精度が向上し、ChromaDB が対象を絞ったドキュメント検索のための強力なツールになります。
結論
独自のプログラムを作成しようとするときに、このドキュメントにはまだ多くの要望が残されていると感じたので、この記事を書きました。これがお役に立てば幸いです!
読んでいただきありがとうございます。この記事が気に入っていただけましたら、ぜひ「いいね!」してシェアしてください。また、あなたがソフトウェア アーキテクチャに慣れておらず、さらに詳しく知りたい場合は、私が個人的にあなたと協力し、ソフトウェア アーキテクチャと設計の原則についてすべてを教えるための小さなグループを提供するグループ ベースのコホートを開始します。ご興味がございましたら、以下のフォームにご記入ください。 https://forms.gle/SUAxrzRyvbnV8uCGA
以上がSQLマインドのためのChromaDBの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。
