問題概要
Proxy内でEmbeddings算出のため、chromadbを使用したい。Default Embedding FunctionによりEmbeddingsを算出したいが、
https://chroma-onnx-models.s3.amazonaws.com/
にアクセスできないエラーとなる。また、
us-api.i.posthog.com
へのアクセスもできないためこちらもエラーとなる。
背景情報
ネットワーク環境
- proxy環境下でコンテンツフィルターがあり、us-api.i.posthog.com、chroma-onnx-models.s3.amazonaws.comへのアクセスが禁止されている。
実行環境
- Ubuntu
- Python 3.12.3
- chromadb version 0.5.3
解決策の概要
https://chroma-onnx-models.s3.amazonaws.com/all-MiniLM-L6-v2/
からonnx.tar.gzを取得し、以下にコピーする。
~/.cache/chroma/onnx_models/all-MiniLM-L6-v2/
上記フォルダでtar xzf onnx.tar.gzなどとして展開すると、
~/.cache/chroma/onnx_models/all-MiniLM-L6-v2/onnx
に必要なファイル群が配置される。
またHttpClientを作成するときに、Settingsでanonymized_telemetryをFalseにする。
import chromadb
from chromadb.config import Settings
config_settings = Settings(anonymized_telemetry=False)
chroma_client = chromadb.HttpClient(host='xxx.xxx.xxx.xxx', port=xxxx, settings=config_settings)
collection = chroma_client.get_or_create_collection(name="my_collection")
手順
- posthogへの対策を実施してchromaサーバーを所定のホスト、ポートで起動しておく。
- クライアント側でpip install chromadbをして、pythonプログラムを作成する。onnx.tar.gzの措置とanonymized_telemetryの措置を実施しておく。
- 続きは、お好きなように。HttpClient経由で、collectionにたいしてquery/addなどできます。
結果
Proxy下でもchromadbを使用したdefault embedding functionでEmbeddingsを算出したりaddしたりできました。
次は独自のembedding functionを使用して使うことを検討します。