🍰
ChromaDBのメモ
ChromaDB
- https://docs.trychroma.com/
- 読み方はクロマ
- Python製
- 「インメモリモード」「クライアントサーバモード」が選択可能
Using collections
- collection単位でベクトルデータを登録。
- contentにmetadataとidを付与できる。
- embbedingのベクトルアルゴリズムは自由に変更できる
- nameを変えたり消したり柔軟に変更可能
- metadata={“hnsw:space”: “cosine”}等で距離の計算方法を変更可能
- 入力する単位はdocument単位でユニークなIDが必要
- フィルタリングをできるようにするために、各ドキュメントにメタデータを持たすことができる。
- embeddingsは引数でマニュアル的に渡すこともできる
Querying a Collection
- queryでmetaタグとかの文字列やcontainとかのフィルターを使える。
- query_textsに入力後でも検索できる
- id検索も可能
- リターンに含むものは大体指定できる
- metadateはglとかの比較演算子も使える
- $and and $or とかのロジカルオペレーションもある
Updating data in a collection
- collectionのupdateもできる
- id指定もできる
- upsertもある
Deleting data from a collection
- id指定
- whereによる指定もできる
Authentication
- サーバーモードで起動する時に認証方式を選べる
- bcryptだけサポート
Embeddings
- デフォルトのembeddingsはall-MiniLM-L6-v2
- OpenAI等の外部embeddingを呼び出すラッパーも存在する
Multi-modal
- データモード(音声、画像、言語など)複数のモーダルに対応
- データは保持しないからidとマッピングして保持する必要がある
- URI指定で保存する可能
- 問い合わせ時もText使ったりイメージ使ったりできる
Discussion