# Weaviateの機能と実践的な使い方
🚀 全件をベクトル込みで吸い出したい――移行や監査エクスポートで深いページングに苦しんでいませんか? Weaviateのカーソル(Cursor)APIなら、offset制限なしに全オブジェクトを順に取り出せます。
📌 タイトルと機能のURL
タイトル: Read all objects
URL:
📝 概要
Weaviateの iterator() メソッドは、従来のoffsetベースのページングが抱える性能劣化を避けて、コレクション全体を効率よく走査します。内部的には after オペレータを使うカーソル方式で、深いページングの問題を回避します。全件処理には必ずこのカーソルを使うのが鉄則です。
🔧 機能の説明
・limit/offset の深いページングは、スキップ件数が増えるほど指数的に遅くなります。これが大規模データで致命的になります。
・カーソルは after パラメータを使い、前回の続きから取得していくため、この劣化を回避します。
・Pythonクライアントでは Iterator としてラップされ、for ループで自然に全件を回せます。
・既定では全プロパティとUUIDを返し、blobやリファレンスのプロパティは含みません。
・結果の順序は保証されません。系統的な全件アクセス向けの仕組みである点に注意してください。
🛠 実践的な使い方
・基本形: collection = client.collections.use("WineReview") のあと for item in collection.iterator(): で全件を回し、item.uuid と を取り出します。
・ベクトルも含めたい場合: for item in collection.iterator(include_vector=True): とし、item.vector でベクトルを取得します。
・名前付きベクトルは include_vector=['title', 'body'] のように指定するか、True で全ベクトルを取得します。
・マルチテナントのコレクションは、テナントごとに with_tenant(tenant_name).iterator() を回します。tenants.get() でテナント一覧を取得できます。
🎯 ユースケース
・別クラスタへの移行で、ベクトルとプロパティをまとめて吸い出して書き戻す。
・監査・コンプライアンス用に、コレクション全件をエクスポートする。
・再インデックスやバッチ処理で、全オブジェクトに順次アクセスする。
・マルチテナント環境で、テナント単位に全件を走査して棚卸しする。
⚠️ 注意点
・結果の順序は保証されません。順序に依存する処理を組まないでください。
・カーソルは系統的な全件アクセス向けで、ランダムなクエリ用途には向きません。
・include_vector=True はベクトル分のデータ転送が増えるため、必要なときだけ有効化してください。
・マルチテナントでは全テナントを一括で回せないため、テナントごとに iterator を実行する必要があります。
#
Weaviate# #
VectorDatabase#