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

DashVector:よくある質問

最終更新日:Jan 08, 2025

1. ドキュメントに対する操作でパーティションが指定されていない場合、どのパーティションが適用されますか?

コレクションの作成時に、default という名前のパーティションがデフォルトで作成され、削除できません。ドキュメントに対する操作でパーティションが指定されていない場合、default パーティションが適用されます。たとえば、ドキュメント検索でパーティションが指定されていない場合、default パーティション内のドキュメントのみが検索されます。

2. 違いは何ですか ドキュメントの挿入ドキュメントの更新、およびドキュメントのアップサート

  • ドキュメントの挿入: 挿入するドキュメントの ID が既に存在する場合、既存のドキュメントは上書きされず、ドキュメントに対する挿入操作は無効になります。

  • ドキュメントの更新: この操作は、既存のドキュメントを上書きします。更新するドキュメントの ID が存在しない場合、ドキュメントに対する更新操作は無効になります。

  • ドキュメントの挿入または更新: 挿入するドキュメントの ID が既に存在する場合、ドキュメントの更新操作が実行されます。ID が存在しない場合、ドキュメントの挿入操作が実行されます。

3. コレクションをクリアするにはどうすればよいですか?

コレクションをクリアすることはできません。ただし、コレクションを削除してから、新しいコレクションを作成することはできます。

4. ドキュメントに対する操作で非同期モードを有効にするにはどうすればよいですか?

async_req パラメーターを True に設定すると、ドキュメントの挿入ドキュメントの更新ドキュメントのアップサートドキュメントの検索ドキュメントの削除ドキュメントの取得などの操作で非同期モードが有効になります。次のサンプルコードは例を示しています。

# 1,000 回の非同期書き込みを実行し、次元を 20000 に、バッチサイズを 8 に設定します。
batch_size = 8
loop = 1000
start = time.time()

async_results = [
    collection.insert(
        [(j + i * batch_size, np.random.rand(20000)) for j in range(batch_size)],
        async_req=True
    ) for i in range(loop)
]

# すべての書き込み操作が完了するまで待ちます。
print([async_result.get() for async_result in async_results])

print(f"async insert {loop} times with batch-size = {batch_size}, cost = {time.time() - start}")

# 出力:
# async insert 1000 times with batch-size = 8, cost = 31.13356590270996

# 同期書き込み (コードは省略)。
# sync insert 1000 times with batch-size = 8, cost = 408.63447427749634
重要

非同期操作では、制限で指定されているよりも多くのクォータが必要になる傾向があります。さらにクォータが必要な場合は、申請してください。

5. ドキュメントの ID はどこで一意である必要がありますか? コレクション内ですか、それともパーティション内ですか?

パーティション内です。コレクションには、同じ ID のドキュメントを含む可能性のある異なるパーティションが含まれています。

6. なぜベクトルは挿入後に精度が低下するのですか?

DashVector は、FP32 または float32 とも呼ばれる単精度浮動小数点型のデータをサポートしています。次の表は、その精度範囲を示しています。

image.png

挿入されたベクトルの精度が上限を超えると、FP32 の精度範囲内の最も近い値に自動的に丸められ、精度が低下します。