Dataset の概要
追加バージョン: @mastra/core@1.4.0
Dataset は、Agent や Workflow の性能を測る Experiment で使用するテストケースのコレクションです。変更するたびに新しいバージョンが作成されるため、過去の Experiment を正確に再現できます。Dataset と Scorer を組み合わせると、プロンプト、モデル、コードの変更に伴う品質を追跡できます。
使用方法使用方法への直接リンク
ストレージを設定するストレージを設定するへの直接リンク
Mastra インスタンスにストレージを設定します。Dataset には、datasets ドメインを提供するストレージアダプターが必要です。
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 リファレンスを参照してください。
StudioStudioへの直接リンク
Studio でも Dataset を管理できます。Studio を開き、サイドバーから Datasets を選択すると、利用可能なすべての Dataset を確認したり、新規作成したりできます。
まず Create Dataset を選択し、名前、説明、任意のスキーマを設定します。確定すると Dataset の詳細ページが開き、Items と Experiments の2つのタブが表示されます。
Items ビューでは、項目の追加、更新、削除、バージョン履歴の確認ができます。Add Item を選択すると、input と ground truth を JSON エディターで入力して新しい項目を追加できます。このビューでは、CSV または JSON ファイルから項目を一括インポートすることもできます。インポート時に、各列を対応する Dataset フィールドへ割り当てます。
Versions を選択すると、Dataset の変更履歴全体を確認できます。Compare Versions を選択して任意の2つのバージョンを指定し、Compare を選択すると、バージョン間で追加、変更、削除されたすべての項目が並べて表示されます。
Dataset を作成するDataset を作成するへの直接リンク
名前と任意の説明を指定して create() を呼び出します。
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 Schema(Zod、Valibot、ArkType など)を渡すと、input と groundTruth の構造を強制できます。
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() を使用します。
// 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 で既存の項目を変更または削除できます。
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() はページネーションと全文検索に対応しています。
// 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() を使用すると、バージョン履歴をページ分割して確認できます。
const { versions, pagination } = await dataset.listVersions()
for (const v of versions) {
console.log(`Version ${v.version} — created ${v.createdAt}`)
}
項目の履歴を確認する項目の履歴を確認するへの直接リンク
itemId を指定して getItemHistory() を呼び出すと、特定の項目がバージョン間でどう変化したかを確認できます。
const history = await dataset.getItemHistory({ itemId: 'item-abc-123' })
for (const row of history) {
console.log(`Version ${row.datasetVersion}`, row.input, row.groundTruth)
}
バージョンに固定するバージョンに固定するへの直接リンク
過去のバージョンに存在した項目をそのまま取得します。
const items = await dataset.listItems({ version: 2 })
Experiment も特定のバージョンに固定できます。詳しくは Experiment の実行を参照してください。すべてのメソッドとパラメーターについては、Dataset リファレンスを参照してください。