メインコンテンツへ移動

Dataset の概要

追加バージョン: @mastra/core@1.4.0

Dataset は、Agent や Workflow の性能を測る Experiment で使用するテストケースのコレクションです。変更するたびに新しいバージョンが作成されるため、過去の Experiment を正確に再現できます。Dataset と Scorer を組み合わせると、プロンプト、モデル、コードの変更に伴う品質を追跡できます。

使用方法
使用方法への直接リンク

ストレージを設定する
ストレージを設定するへの直接リンク

Mastra インスタンスにストレージを設定します。Dataset には、datasets ドメインを提供するストレージアダプターが必要です。

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { LibSQLStore } from '@mastra/libsql'

export const mastra = new Mastra({
storage: new LibSQLStore({
id: 'my-store',
url: 'file:./mastra.db',
}),
})

Datasets API にアクセスする
Datasets API にアクセスするへの直接リンク

Dataset のすべての操作は mastra.datasets から利用できます。

const datasets = mastra.datasets

// Create a dataset
const dataset = await datasets.create({ name: 'my-dataset' })

// Retrieve an existing dataset
const existing = await datasets.get({ id: 'dataset-id' })

// List all datasets
const { datasets: all } = await datasets.list()

すべてのメソッドについては、DatasetsManager リファレンスを参照してください。

Studio
Studioへの直接リンク

Studio でも Dataset を管理できます。Studio を開き、サイドバーから Datasets を選択すると、利用可能なすべての Dataset を確認したり、新規作成したりできます。

まず Create Dataset を選択し、名前、説明、任意のスキーマを設定します。確定すると Dataset の詳細ページが開き、ItemsExperiments の2つのタブが表示されます。

Items ビューでは、項目の追加、更新、削除、バージョン履歴の確認ができます。Add Item を選択すると、input と ground truth を JSON エディターで入力して新しい項目を追加できます。このビューでは、CSV または JSON ファイルから項目を一括インポートすることもできます。インポート時に、各列を対応する Dataset フィールドへ割り当てます。

Versions を選択すると、Dataset の変更履歴全体を確認できます。Compare Versions を選択して任意の2つのバージョンを指定し、Compare を選択すると、バージョン間で追加、変更、削除されたすべての項目が並べて表示されます。

Dataset を作成する
Dataset を作成するへの直接リンク

名前と任意の説明を指定して create() を呼び出します。

src/mastra/datasets/create-dataset.ts
import { mastra } from '../index'

const dataset = await mastra.datasets.create({
name: 'translation-pairs',
description: 'English to Spanish translation test cases',
})

console.log(dataset.id) // auto-generated UUID

スキーマを定義する
スキーマを定義するへの直接リンク

Dataset の作成時に Standard JSON SchemaZodValibotArkType など)を渡すと、inputgroundTruth の構造を強制できます。

src/mastra/datasets/create-with-schema.ts
import { z } from 'zod'
import { mastra } from '../index'

const dataset = await mastra.datasets.create({
name: 'translation-pairs',
inputSchema: z.object({
text: z.string(),
sourceLang: z.string(),
targetLang: z.string(),
}),
groundTruthSchema: z.object({
translation: z.string(),
}),
})

スキーマに一致しない項目は、追加時に拒否されます。

項目を追加する
項目を追加するへの直接リンク

単一の項目には addItem()、一括追加には addItems() を使用します。

src/mastra/datasets/add-items.ts
// Single item
await dataset.addItem({
input: { text: 'Hello', sourceLang: 'en', targetLang: 'es' },
groundTruth: { translation: 'Hola' },
})

// Bulk insert
await dataset.addItems({
items: [
{
input: { text: 'Goodbye', sourceLang: 'en', targetLang: 'es' },
groundTruth: { translation: 'Adiós' },
},
{
input: { text: 'Thank you', sourceLang: 'en', targetLang: 'es' },
groundTruth: { translation: 'Gracias' },
},
],
})

項目を更新、削除する
項目を更新、削除するへの直接リンク

updateItem()deleteItem()deleteItems() を使うと、itemId で既存の項目を変更または削除できます。

src/mastra/datasets/update-delete.ts
await dataset.updateItem({
itemId: 'item-abc-123',
groundTruth: { translation: '¡Hola!' },
})

await dataset.deleteItem({ itemId: 'item-abc-123' })

await dataset.deleteItems({ itemIds: ['item-1', 'item-2'] })

項目を一覧表示、検索する
項目を一覧表示、検索するへの直接リンク

listItems() はページネーションと全文検索に対応しています。

src/mastra/datasets/list-items.ts
// Paginated list
const { items, pagination } = await dataset.listItems({
page: 0,
perPage: 50,
})

// Full-text search
const { items: matches } = await dataset.listItems({
search: 'Hello',
})

// Search and pagination can be combined with a specific version
const { items: v2Matches } = await dataset.listItems({
version: 2,
search: 'Hello',
page: 0,
perPage: 50,
})

// Version-only snapshot returns a bare DatasetItem[]
const v2Items = await dataset.listItems({ version: 2 })

バージョン管理
バージョン管理への直接リンク

Dataset の項目を変更(追加、更新、削除)するたびに Dataset のバージョンが上がります。これにより、Experiment を特定のデータスナップショットに固定できます。

バージョンを一覧表示する
バージョンを一覧表示するへの直接リンク

listVersions() を使用すると、バージョン履歴をページ分割して確認できます。

src/mastra/datasets/list-versions.ts
const { versions, pagination } = await dataset.listVersions()

for (const v of versions) {
console.log(`Version ${v.version} — created ${v.createdAt}`)
}

項目の履歴を確認する
項目の履歴を確認するへの直接リンク

itemId を指定して getItemHistory() を呼び出すと、特定の項目がバージョン間でどう変化したかを確認できます。

src/mastra/datasets/item-history.ts
const history = await dataset.getItemHistory({ itemId: 'item-abc-123' })

for (const row of history) {
console.log(`Version ${row.datasetVersion}`, row.input, row.groundTruth)
}

バージョンに固定する
バージョンに固定するへの直接リンク

過去のバージョンに存在した項目をそのまま取得します。

src/mastra/datasets/pin-version.ts
const items = await dataset.listItems({ version: 2 })

Experiment も特定のバージョンに固定できます。詳しくは Experiment の実行を参照してください。すべてのメソッドとパラメーターについては、Dataset リファレンスを参照してください。