コンテンツにスキップ

DatasetStore

インストールのデータセットを保存するポート。目的(学習または評価)を持つレビュー済みの文書。

ポート: DatasetStore。 indx_interfaces.protocols で、indx_interfaces.datasets のモデルの上に宣言しています(ADR-0077)。

Dataset は、キー(invoices_eval)、名前、DatasetPurpose(training または evaluation)、任意で 文書のタイプ、そして文書です。各文書はダイジェストと写し取った文書名です。例は、それらのダイジェストに 保存されたラベルで、求められたときに LabelStore から読みます。

class DatasetStore(Protocol):
def put(self, owner: OwnerId, dataset: Dataset) -> None: ...
def get(self, owner: OwnerId, dataset_id: DatasetId) -> Dataset | None: ...
def list(self, owner: OwnerId) -> tuple[Dataset, ...]: ...
def delete(self, owner: OwnerId, dataset_id: DatasetId) -> bool: ...

LabelStore にメソッドを足すのではなく 5 つ目のストアのポートにするのは、データセットは人が整えるときに、 ラベルは人がレビューするときに変わるからです。ポートは集約ごとに分けます。データセットは失効しないので、 purge はありません。同梱するバックエンドは memory、sqlite、postgres の 3 つで、INDX_DATASET_STORE が名指します。

  • オーナー。 どのメソッドも最初に OwnerId を取り、オーナーをまたぐものはありません。
  • 同一性。 オーナーの中で、データセットはそのキーです。put は同じキーのものを置き換えます。
  • 冪等性。 ないキーの delete は False です。
  • 順序。 list はオーナーのデータセットをキー順に返します。
  • 検証。 モデルは 2 度並んだダイジェストを拒みます。タイプが存在するか、同じタイプの評価と学習の データセットの両方に入るダイジェストがないかを確かめるのは、ストアではなくサーバーです。

tests/unit/test_store_conformance.py が、インストール済みのすべてのバックエンドをこの規則に従わせます。