ダッシュ: 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 層の文脈
- テーブル使用 – スキーマ、列、関係を記述する JSON ファイル。
- 人間による注釈 – ビジネスメトリクス、定義、ルール。
- クエリパターン –
.sqlファイルに保存された実績ある SQL スニペット。 - 機関知識 – 外部資料や wiki(任意)。
- 学習結果 – マシン生成のエラー修正。
- 実行時文脈 –
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 の使用
- https://os.agno.com でログイン。
- オンラインサーバー → ローカル → http://localhost:8000 を追加。
- Connect をクリック。
- 例として質問:
- 誰が最も多くの F1 世界選手権を獲得したか?
- ルイス・ハミルトンは何レースで勝ったか?
- エージェントは自動的に 6 層の文脈を使用して有意義な回答を生成します。
サンプルクエリフロー
ユーザー: 前四半期の総収益はいくらでしたか?
1. ダッシュは `orders` テーブルのスキーマとビジネスルールを探す。
2. 収益を計算する保存済みパターンを選択。
3. 適切なフィルタ(返金された注文を除外)を付けた SQL を生成。
4. データベース上で実行。
5. 人間が読める要約を返却。
自己学習ループの説明
- 実行成功 – インサイトを返却。
- 実行失敗 – ダッシュがバグ(例:データ型が不適切)を診断し、修正を適用し
learningsに保存。 - 同様のクエリが実行されると、修正が自動で適用されます。
- このループはバックグラウンドで実行されるため、追加のエンジニアリングトレーニングは不要です。
知識の追加・更新
ダッシュは構造化された 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 アシスタントを探しているなら、ダッシュは非常に魅力的な出発点です。
クエリを楽しんでください! 🚀
元の記事:
オリジナルを見る