ベクトルデータベースWeaviateにおける「スキーマの定義と変更」は、データ構造とベクトル検索の動作を決定する非常に重要な工程です。以下に、その基本的な考え方、操作手順、および注意点を詳しく説明します。
1. スキーマとは何か
Weaviateの**スキーマ(Schema)**は、投入するデータの構造を定義するものです。具体的には、次のような情報を含みます:
-
クラス(Class):データの種類(例:Article, Product, Personなど)
-
プロパティ(Property):クラス内のフィールド(例:title, description, priceなど)
-
データタイプ:プロパティの型(string, int, date など)
-
ベクトル化設定(Vectorization):どのプロパティをベクトル化するか、どのモジュールを使うか
2. スキーマの定義方法
スキーマはREST APIまたはPythonクライアント等を用いて定義できます。以下はREST APIを用いた基本的なクラス定義の例です。
例:Article クラスの作成
Article クラスの作成
このスキーマにより、Article クラスに対してタイトル、内容、日付を含むデータを投入できるようになります。
3. スキーマの確認
スキーマの全体構造は以下のように取得できます:
特定のクラスだけを確認したい場合は:
4. スキーマの変更(追加・削除)
プロパティの追加
既存のクラスに新しいプロパティを追加するには、次のようなAPIを使用します:
プロパティの削除
Weaviateはプロパティの削除を公式にはサポートしていません。スキーマ構造の削除や変更を行いたい場合、クラスごと削除して再作成するのが一般的です。
注意:この操作により該当クラスの全データが削除されます。
5. ベストプラクティスと注意点
-
設計前に構造を明確化すること:プロパティの削除ができないため、事前に十分な設計が求められます。
-
ベクトル化設定の理解:使用するベクトル化モジュール(例:
text2vec-openai,text2vec-transformers)によって、ベクトル生成の対象や方式が異なります。 -
データ型の正確な指定:
textやnumber,boolean,date,geoCoordinates,referenceなど正確に選定することが重要です。
6. Pythonクライアントを使ったスキーマ定義(参考)
Pythonクライアント(weaviate-client)を使用する場合の例:
まとめ
| 項目 | 内容 |
|---|---|
| クラス定義 | /v1/schema にPOST |
| プロパティ追加 | /v1/schema/{class}/properties にPOST |
| スキーマ確認 | /v1/schema または /v1/schema/{class} にGET |
| スキーマ削除 | /v1/schema/{class} にDELETE(注意) |
| 主な注意点 | 削除不可のため初期設計が重要 |
ChatGPT4o 生成日:2025/06/20