DXGX Consult - Chroma DBのmax batch

Chroma DBのmax batch

IT
2024年04月29日

仕事でRAGを勉強する必要が生じたため、langchainを学びつつ、ベクトル化、embedの作業に移行しています。

少し大きいデータをベクトル化するのに、Chromaでembedしようとしたのですが、何も考えずに「まあ、時間はあるからbatchに分けないで一括で入れよう」とバカなことを考えて、errorをくらいました。

chromaの最大バッチサイズは決まっており、Chroma 0.4では41666です。

よって、バッチを分割する必要があるのですが、自分で分割する関数を書いてもいいですし、

from chromadb.utils.batch_utils import create_batches
batches = create_batches(api=client,ids=ids, documents=docs,metadatas=metas)
for batch in data_batches:
    print(f"Adding batch of size {len(batch[0])}")
    collection.add(ids=batch[0],
               documents=batch[3],
               metadatas=batch[2])

でもOKです。ポイントはbatch[]の中の数字で、勝手にids=batch[1]とかにするとerrorが出力されるので要注意です。