Skip to main content
Version: v0.8.1

DB-GPT 数据分析应用实践案例

本实践案例旨在帮助入门者使用 DB-GPT 创建数据分析的多智能体应用对 Superstore 数据集进行分析。通过本案例,您将学会如何部署项目、配置环境、准备数据,并成功运行针对 Superstore 销售数据的分析应用。

1. 项目部署​

1.1 克隆代码库​

首先,从 GitHub 克隆 DB-GPT 项目代码:

git clone https://github.com/eosphoros-ai/DB-GPT.git
cd DB-GPT

1.2 环境准备​

DB-GPT 支持多种部署方式,推荐使用 uv 工具进行依赖管理:

# 安装 uv 工具
curl -LsSf https://astral.sh/uv/install.sh | sh

# 验证安装
uv --version

1.3 安装依赖​

根据您使用的模型类型,选择相应的依赖安装方式:

使用 OpenAI 代理模型​

uv sync --all-packages \
--extra "base" \
--extra "proxy_openai" \
--extra "rag" \
--extra "storage_chromadb" \
--extra "dbgpts"

使用本地模型(如 GLM4)​

uv sync --all-packages \
--extra "base" \
--extra "cuda121" \
--extra "hf" \
--extra "rag" \
--extra "storage_chromadb" \
--extra "quant_bnb" \
--extra "dbgpts"

1.4 配置大语言模型和嵌入模型​

OpenAI 代理模型配置​

创建或编辑配置文件 configs/dbgpt-proxy-openai.toml:

[system]
language = "zh"
encrypt_key = "your_secret_key"

[service.web]
host = "0.0.0.0"
port = 5670

[service.web.database]
type = "sqlite"
path = "pilot/meta_data/dbgpt.db"

[rag.storage]
[rag.storage.vector]
type = "chroma"
persist_path = "pilot/data"

# 模型配置
[models]
[[models.llms]]
name = "gpt-3.5-turbo"
provider = "proxy/openai"
api_key = "your-openai-api-key"

[[models.embeddings]]
name = "text-embedding-ada-002"
provider = "proxy/openai"
api_key = "your-openai-api-key"

本地模型配置示例​

创建或编辑配置文件 configs/dbgpt-local-glm.toml:

[system]
language = "zh"
encrypt_key = "your_secret_key"

[service.web]
host = "0.0.0.0"
port = 5670

[service.web.database]
type = "sqlite"
path = "pilot/meta_data/dbgpt.db"

[rag.storage]
[rag.storage.vector]
type = "chroma"
persist_path = "pilot/data"

# 模型配置
[models]
[[models.llms]]
name = "THUDM/glm-4-9b-chat-hf"
provider = "hf"
# 如果未提供,模型将从 Hugging Face 模型中心下载
# 取消注释以下行以指定本地文件系统中的模型路径
# path = "the-model-path-in-the-local-file-system"

[[models.embeddings]]
name = "BAAI/bge-large-zh-v1.5"
provider = "hf"
# 如果未提供,模型将从 Hugging Face 模型中心下载
# 取消注释以下行以指定本地文件系统中的模型路径
# path = "the-model-path-in-the-local-file-system"

2. 数据集与数据库准备​

在开始分析之前,需要获取 Superstore 数据集并将其导入数据库中。您可以从以下链接下载数据集:

数据集网址:https://www.kaggle.com/datasets/jr2ngb/superstore-data

本案例使用MySQL数据库进行演示,具体步骤如下:

  1. 首先确保您已安装MySQL数据库并启动服务
  2. 创建数据库:
    CREATE DATABASE superstore;
    USE superstore;
  3. 创建 superstore_dataset 表:
    CREATE TABLE `superstore_dataset`  (
    `row_id` int NOT NULL COMMENT 'Unique ID for each row',
    `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Unique Order ID for each Customer.',
    `order_date` date NULL DEFAULT NULL COMMENT 'Order Date of the product.',
    `ship_date` date NULL DEFAULT NULL COMMENT 'Shipping Date of the Product.',
    `ship_mode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Shipping Mode specified by the Customer.',
    `customer_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Unique ID to identify each Customer.',
    `customer_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Name of the Customer.',
    `segment` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'The segment where the Customer belongs.',
    `country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT ' Country of residence of the Customer.',
    `city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'city where the customer lives.',
    `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'State of residence of the Customer.',
    `postal_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Postal Code of every Customer.',
    `region` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Region where the Customer belong.',
    `market` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'market name',
    `product_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Unique ID of the Product.',
    `category` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Category of the product ordered.',
    `sub_category` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Sub-Category of the product ordered.',
    `product_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'Name of the Product',
    `sales` float(10, 2) NULL DEFAULT NULL COMMENT 'Product sales price',
    `quantity` int NULL DEFAULT NULL COMMENT 'Quantity of the Product.',
    `discount` float(10, 3) NULL DEFAULT NULL COMMENT 'Discount provided.',
    `profit` float(10, 4) NULL DEFAULT NULL COMMENT 'Profit/Loss incurred.',
    `shipping_cost` float(10, 2) NULL DEFAULT NULL COMMENT 'shipping cost',
    `order_priority` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT 'order priority',
    PRIMARY KEY (`row_id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
  4. 将下载的数据导入到表中

3. 知识库准备​

数据分析多智能体应用需要业务相关的知识文件来描述 Superstore 数据集的指标信息,包括指标名、计算规则、字段等。创建指标.txt文本文件来描述 Superstore 业务指标,不同指标的描述可用"###"分隔,方便后续分片处理。针对当前案例设置两个指标:订单数量和订单占比。

###
指标名称:订单数量
字段:quantity
计算规则:无
建议计算维度:地区(region)
阈值:0.01
###
指标名称:订单占比
字段:quantity
计算规则:SUM(quantity) / TOTAL(SUM(quantity)) OVER()
建议计算维度:地区(region)
阈值:0.05

4. 数据分析​

使用配置文件启动 DB-GPT 服务:

# 使用 OpenAI 代理模型配置启动
uv run dbgpt start webserver --config configs/dbgpt-proxy-openai.toml

# 或使用本地模型配置启动
uv run dbgpt start webserver --config configs/dbgpt-local-glm.toml

打开浏览器并访问:http://localhost:5670

4.1 知识库接入​

  1. 选择知识库

点击“应用管理”,选择“知识库”

  1. 创建知识库

  1. 知识库配置

填写相关配置信息。

  1. 知识库类型

此处选择文档。

  1. 上传

此处上传提前准备好的指标.txt文档。

  1. 分片

分片策略选择"separator",分隔符设置为"###"。

  1. 成功创建知识库

4.2 创建数据库​

  1. 选择数据库

  1. 添加数据源

  1. 配置数据源

配置准备好的数据库连接信息。

  1. 添加成功

4.3 创建数据分析应用​

  1. 创建应用

点击“创建应用”

  1. 基础配置

选择“多智能体自动规划模式”,并输入应用名称和对应描述。

  1. 加入MetricInfoRetriever

选取MetricInfoRetriever,并配置知识库资源。

  1. 加入DataScientist

选取DataScientist,并配置数据库资源。

  1. 加入AnomalyDetector

选取AnomalyDetector。

  1. 加入VolatilityAnalyzer

选取VolatilityAnalyzer,并配置数据库资源。

  1. 加入ReportGenerator

选取ReportGenerator。

  1. 保存

点击“保存”。

4.4 使用​

  1. 开始对话

点击“开始对话”。

  1. 提问

在输入框中输入问题,如“请帮我分析订单数量2012年 年环比增长情况”,点击发送。

  1. 回答

  1. 报告生成

最终生成分析报告。