すべてのプロダクト
Search
ドキュメントセンター

DashVector:スキーマフリー

最終更新日:Mar 12, 2026

DashVector は、スキーマフリーとして設計されています。ドキュメントを挿入更新、またはアップサートする際に、fields パラメーターに任意のキーと値のペアを渡すことができます。事前のスキーマ定義は不要です。

collection.insert(
    Doc(
        id='1',
        vector=np.random.rand(4),
        fields={
            'name': 'zhangsan',
            'weight': 70.0,
            'age': 30,
            'anykey1': 'anyvalue',
            'anykey2': 1,
            'anykey3': True,
            'anykey4': 3.1415926
            ... ...
        }
    )
)
説明

フィールドを追加するごとに、メモリとディスクリソースが消費されます。フィルタリングや取得のニーズに応えるフィールドのみを含めるようにしてください。

サポートされているデータ型

フィールドは、4 つの Python データ型をサポートしています。

説明制約
str文字列値--
float浮動小数点数--
int整数値32 ビット符号付きのみ:-2,147,483,648 ~ 2,147,483,647
boolブール値True または False
重要

Python の int 型は任意精度をサポートしていますが、DashVector が受け入れるのは 32 ビット符号付き整数 (-2,147,483,648 から 2,147,483,647 まで) のみです。この範囲外の値はオーバーフローエラーを引き起こします。

フィールドによるフィルタリング

フィルター式でフィールドのキーと値のペアを使用して、検索結果を絞り込みます。

ret = collection.query(
    vector=[0.1, 0.2, 0.3, 0.4],
    filter='(age > 18 and anykey2 = 1) or (name like "zhang%" and anykey3 = false)'
)
説明

フィールドの数が増え、フィルター式が複雑になると、CPU 使用率とクエリのレイテンシーが増加します。

フィールドスキーマを事前定義するケース

DashVector はデフォルトでスキーマフリーですが、コレクションを作成する際にフィールドスキーマを事前定義することで、クエリパフォーマンスの向上、ストレージオーバーヘッドの削減、入力検証の有効化が可能になります。

ret = client.create(
    name='complex',
    dimension=4,
    fields_schema={'name': str, 'weight': float, 'age': int}
)

事前定義フィールドのメリット

メリット説明
フィルタリングの高速化条件付きフィルタリングは、アドホックフィールドに対するフィルタリングよりも CPU 使用量が少なく、結果をより速く返します。
ストレージオーバーヘッドの削減事前定義フィールドは値のみを格納します。アドホックフィールドはキーと値の両方を格納するため、より多くのメモリとディスク領域を消費します。
フィルターの事前検証DashVector は、フィルター構文を事前定義されたフィールド型に対して検証し、型の不一致がある場合はエラーを返します。スキーマがない場合、型の検証は利用できません。

推奨アプローチ

ほとんどのドキュメントに現れ、頻繁にフィルタリングに使用するフィールドは事前定義してください。一部のドキュメントに固有の属性については、挿入時にアドホックフィールドを使用します。