【埋め込みデータベース】Chromaとは

埋め込みデータベースとは

埋め込みデータベース(Embedding Database)は、データの特徴表現を効率的に保存・検索するためのデータベースです。埋め込み(Embedding)は、データを低次元のベクトル空間に変換する手法であり、データの意味や特徴を抽出した表現を得ることができます。

埋め込みデータベースは、一般的に機械学習や自然言語処理のタスクにおいて特に有用です。例えば、顔認識システムでは、顔画像を埋め込みベクトルに変換してデータベースに格納し、そのベクトルとの距離を計算することで、特定の人物の顔を識別することができます。また、文書の類似性検索では、文書を埋め込みベクトルに変換し、ベクトル間の距離を計算して類似した文書を検索することができます。

埋め込みデータベースは、高速な検索やクエリ処理を実現するために最適化されています。特に、近傍探索(Nearest Neighbor Search)などの高度な検索アルゴリズムが使用され、大規模なデータセットに対しても効率的な操作が可能です。

Chromaとは

Chromaはオープンソースの埋め込みデータベースです。Chromaは、知識、事実、スキルをLLM(Language Model)にプラグイン可能にすることで、LLMアプリケーションの構築を容易にします。


Chromaは、以下のような機能を提供します:

  • 埋め込みとそれに関連するメタデータの保存
  • ドキュメントやクエリの埋め込み
  • 埋め込みの検索

Chromaは、以下の点を重視しています:

  • シンプルさと開発者の生産性
  • 検索に基づく分析
  • 非常に高速な処理が可能

Chromaには、PythonクライアントSDK、JavaScript/TypeScriptクライアントSDK、およびサーバーアプリケーションが含まれています。

Chromaのインストール

Python

Pythonでは、Chromaはメモリ内またはクライアント/サーバーモード(アルファ版)で実行することができます。

メモリ内モードでは、Chromaはデータベースをメモリ内に展開し、データを高速に処理することができます。これは小規模なデータセットや一時的な処理に適しています。

クライアント/サーバーモードでは、Chromaはクライアントとサーバーの役割を分けて動作します。クライアントはPythonのChromaクライアントSDKを使用してデータベースにアクセスし、サーバーはChromaサーバーアプリケーションを実行してデータの永続的な保存と検索を担当します。これにより、大規模なデータセットや分散環境での処理が可能となります。

ただし、クライアント/サーバーモードは現在アルファ版であり、開発中の機能です。

pip install chromadb

Chromadbインストールのエラー

上記のコマンドでchromadbをインストールするとエラーがでるかもしれません。

Building wheels for collected packages: hnswlib
  Building wheel for hnswlib (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for hnswlib (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [5 lines of output]
      running bdist_wheel
      running build
      running build_ext
      building 'hnswlib' extension
      error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for hnswlib
Failed to build hnswlib
ERROR: Could not build wheels for hnswlib, which is required to install pyproject.toml-based projects

エラーの原因一つの理由として、Pythonのバージョンがあげられます。最新のPythonをインストールして再度試してみましょう。

次にpipのバージョンも最新のものに更新しておきます。

pip install --upgrade pip setuptools

ウィンドウズのビルドツールからMicrosoftのC++ビルドツールをインストールする

このエラーについてはGitHubの

ではこのリンクからMicrosoftのビルドツールをダウンロードします。

https://visualstudio.microsoft.com/visual-cpp-build-tools/

実行ファイルを起動してVisual Studio Installerを起動します。Modifyをクリックします。

次にIndivisual Componentsのタブから、MSVCのツールを探します。これは自分のマシンによって選択するものが変わりますが、Windowsの場合はx64/x86になります。

次にwindows11(若しくは10)のSDKを探しチェックします。

ではこの2つを選択した状態で右下のModifyのボタンを押しましょう。

では再度pip install chromadbのコマンドを実行します。

私の場合はこれでうまくいきました!

これでもまだうまくいかない場合はGitHubのIssueを確認しましょう。

https://github.com/chroma-core/chroma/issues/189