🍰

ChromaDBのメモ

2024/04/01に公開

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