ダッシュ: 6層の文脈を持つ自己学習型データエージェント

ダッシュ: 6層の文脈を持つ自己学習型データエージェント

イントロダクション

大規模言語モデルの時代において、自然言語クエリから正確な SQL を生成することは依然として課題です。 ダッシュ(リポジトリ: https://github.com/agno-agi/dash)は、ハイブリッド検索、豊富な知識ベース、軽量な学習ループを組み合わせることでこの問題に取り組みます。これは、プロジェクトに組み込み可能か、スタンドアロンサービスとして実行可能なオープンソースの Python ライブラリです。

ダッシュを選ぶ理由

  • 文脈に基づく応答: スキーマ、ビジネスルール、クエリパターン、機関資料、学習結果、実行時スキーマという 6 層の文脈により、すべての応答が実データに基づいています。
  • 再学習不要で自己改善: 学習機械がエラーパターンを記録し、即座に修正を適用することで、クエリごとにエージェントをより賢くします。
  • ゼロコスト継続学習: CPU フレンドリーな微調整を軽量 GPU 乏しいループに置き換えます。
  • オープンソース & 拡張性: GitHub で 100 以上のスター、Apache‑2.0 ライセンス、知識追加用に明確なフォルダ構成を備えています。

コアアーキテクチャ

flowchart TD
  A[ユーザーの質問] --> B[知識 + 学習結果の取得]
  B --> C[意図の推論]
  C --> D[文脈に基づく SQL の生成]
  D --> E[実行 & 解釈]
  E -->|成功| F[インサイトの返却]
  E -->|エラー| G[診断 → 修正 → 学習結果保存]
  G --> C

6 層の文脈

  1. テーブル使用 – スキーマ、列、関係を記述する JSON ファイル。
  2. 人間による注釈 – ビジネスメトリクス、定義、ルール。
  3. クエリパターン.sql ファイルに保存された実績ある SQL スニペット。
  4. 機関知識 – 外部資料や wiki(任意)。
  5. 学習結果 – マシン生成のエラー修正。
  6. 実行時文脈introspect_schema ツールによるライブスキーマ introspection。

クイックスタート

# リポジトリをクローン
git clone https://github.com/agno-agi/dash && cd dash

# OpenAI キーを設定
cp example.env .env
# .env を編集し OPENAI_API_KEY を追加

# サービスのビルドと起動
docker compose up -d --build

# サンプルデータと知識のロード
docker exec -it dash-api python -m dash.scripts.load_data
docker exec -it dash-api python -m dash.scripts.load_knowledge

これで API は http://localhost:8000/docs で利用可能です。

ウェブ UI の使用

  1. https://os.agno.com でログイン。
  2. オンラインサーバーローカル → http://localhost:8000 を追加。
  3. Connect をクリック。
  4. 例として質問:
  5. 誰が最も多くの F1 世界選手権を獲得したか?
  6. ルイス・ハミルトンは何レースで勝ったか?
  7. エージェントは自動的に 6 層の文脈を使用して有意義な回答を生成します。

サンプルクエリフロー

ユーザー: 前四半期の総収益はいくらでしたか?

1. ダッシュは `orders` テーブルのスキーマとビジネスルールを探す。
2. 収益を計算する保存済みパターンを選択。
3. 適切なフィルタ(返金された注文を除外)を付けた SQL を生成。
4. データベース上で実行。
5. 人間が読める要約を返却。

自己学習ループの説明

  1. 実行成功 – インサイトを返却。
  2. 実行失敗 – ダッシュがバグ(例:データ型が不適切)を診断し、修正を適用し learnings に保存。
  3. 同様のクエリが実行されると、修正が自動で適用されます。
  4. このループはバックグラウンドで実行されるため、追加のエンジニアリングトレーニングは不要です。

知識の追加・更新

ダッシュは構造化された knowledge/ フォルダを期待します。

knowledge/
├── tables/          # JSON テーブルメタデータ
├── queries/         # SQL パターン
└── business/        # ビジネスルールとメトリクス

実行:

python -m dash.scripts.load_knowledge
# クリーンスタートの場合
python -m dash.scripts.load_knowledge --recreate

例: テーブルメタデータ

{
  "table_name": "orders",
  "table_description": "Customer orders with denormalized line items",
  "use_cases": ["Revenue reporting", "Customer analytics"],
  "data_quality_notes": ["created_at is UTC", "status values: pending, completed, refunded", "amount stored in cents"]
}

例: クエリパターン

-- <query name>monthly_revenue
-- <query description>
-- Monthly revenue calculation.
-- Converts cents to dollars.
-- Excludes refunded orders.
-- </query description>
SELECT
  DATE_TRUNC('month', created_at) AS month,
  SUM(amount) / 100.0 AS revenue_dollars
FROM orders
WHERE status = 'completed'
GROUP BY 1
ORDER BY 1 DESC;

Railway へのデプロイ

# Railway にログイン
railway login

# 必要なサービスを起動
./scripts/railway_up.sh

# データ/知識をロード
railway run python -m dash.scripts.load_data
railway run python -m dash.scripts.load_knowledge

# ログを確認
railway logs --service dash

Railway ダッシュボードでは、メトリクスの表示、環境変数の更新、コード変更後の再デプロイが簡単に行えます。

ベストプラクティス

  • 知識を最新に保つ:テーブルメタデータとクエリパターンを定期的に見直す。
  • 学習結果を監視learnings ディレクトリを確認し、エージェントが適用している修正を把握。
  • API を保護:本番デプロイ時には認証レイヤーを追加。
  • EXA API(任意)を利用して追加のウェブ検索文脈を取得。

結論

ダッシュは、最小限の自己学習ループ と構造化された知識を組み合わせることで、自然言語から SQL へのワークフローを劇的に改善できることを示しています。Apache‑2.0 の下でオープンソースプロジェクトとして、コミュニティの貢献(新しいクエリパターンの追加や学習エンジンの拡張など)が歓迎されます。再学習なしで継続的に学び続ける軽量 AI アシスタントを探しているなら、ダッシュは非常に魅力的な出発点です。

クエリを楽しんでください! 🚀

この記事を共有