Dash:具有六层上下文的自学习数据代理

Dash:具有六层上下文的自学习数据代理

介绍

在大型语言模型时代,从自然语言查询生成准确的 SQL 仍是一大挑战。 Dash(仓库:https://github.com/agno-agi/dash)通过结合混合搜索、丰富的知识库和轻量化学习循环来解决此问题。 它是一个 开源 Python 库,你可以将其添加到项目中,或作为独立服务运行。

为什么选择 Dash?

  • 基于上下文的答案:六层上下文(模式、业务规则、查询模式、机构文档、学习内容、运行时模式)意味着每个回答都以真实数据为依据。
  • 无需重新训练的自我改进:学习机制会记录错误模式并即时修复,使代理在每一次查询后变得更聪明。
  • 零成本持续学习:CPU 友好的微调被轻量化的、GPU 需求低的循环所取代。
  • 开源且可扩展:GitHub 星数超过 100,采用 Apache‑2.0 许可,并提供清晰的文件夹结构方便添加知识。

核心架构

flowchart TD
  A[User Question] --> B[Retrieve Knowledge + Learnings]
  B --> C[Reason About Intent]
  C --> D[Generate Grounded SQL]
  D --> E[Execute & Interpret]
  E -->|Success| F[Return Insight]
  E -->|Error| G[Diagnose → Fix → Save Learning]
  G --> C

六层上下文

  1. 表使用 – 描述架构、列和关系的 JSON 文件。
  2. 人工注释 – 业务指标、定义与规则。
  3. 查询模式 – 存放在 .sql 文件中的已验证 SQL 片段。
  4. 机构知识 – 外部文档或 wiki(可选)。
  5. 学习内容 – 机器生成的错误修复。
  6. 运行时上下文 – 通过 introspect_schema 工具进行实时架构自省。

快速开始

# Clone the repository
git clone https://github.com/agno-agi/dash && cd dash

# Set your OpenAI key
cp example.env .env
# Edit .env to add OPENAI_API_KEY

# Build and start the service
docker compose up -d --build

# Load sample data and knowledge
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 访问。

使用 Web UI

  1. 打开 https://os.agno.com 并登录。
  2. 添加一个 线上服务器本地 → http://localhost:8000
  3. 点击 Connect
  4. 询问类似的问题:
  5. 谁赢得了最多的F1世界冠军?
  6. 刘易斯·汉密尔顿赢得了多少场比赛?
  7. 代理会自动利用六层上下文生成有意义的答案。

查询流程示例

User: What was the total revenue in the last quarter?

1. Dash locates the `orders` table schema and business rules.
2. It picks a saved query pattern that calculates revenue.
3. Generates SQL with proper filtering (exclude refunded orders).
4. Executes against the database.
5. Returns a human‑readable summary.

自学习循环解释

  1. 执行成功 – 返回洞察。
  2. 执行失败 – Dash 诊断错误(如错误的数据类型),应用修复并存入 learnings
  3. 下次执行类似查询时,修复会自动生效。
  4. 由于该循环在后台运行,无需额外的工程训练。

添加或更新知识

Dash 期望一个结构良好的 knowledge/ 文件夹:

knowledge/
├── tables/          # JSON table metadata
├── queries/         # SQL patterns
└── business/        # Business rules and metrics
运行:
python -m dash.scripts.load_knowledge
# For a clean start
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

# Login to Railway
railway login

# Spin up the required services
./scripts/railway_up.sh

# Load data/knowledge
railway run python -m dash.scripts.load_data
railway run python -m dash.scripts.load_knowledge

# Inspect logs
railway logs --service dash

Railway 仪表盘让你轻松查看指标、更新环境变量并在代码更改后重新部署。

最佳实践

  • 保持知识更新:定期审查并完善表元数据与查询模式。
  • 监控学习:检查 learnings 目录,了解代理正在应用哪些修复。
  • 保护 API:为生产部署添加身份验证层。
  • 利用 EXA API(可选)获取额外的网络搜索上下文。

结论

Dash 展示了一个 最小化、自动学习循环 与结构化知识相结合,可以显著提升自然语言到 SQL 的工作流。作为一个 Apache‑2.0 开源项目,它欢迎社区贡献——无论是添加新查询模式还是扩展学习引擎。如果你正在寻找一个实用、轻量级的 AI 助手,能够在无需重新训练的情况下持续学习,Dash 是一个值得考虑的起点。

愉快查询!🚀

原创文章: 查看原文

分享本文