# DataSummarizer @ :快速本地数据分析

<!--category-- Data Analysis, DuckDB, C#, LLM -->
<datetime class="hidden">2025-12-22T18:30</datetime>

@“cchat 大多使用您的数据 {”} systems make the same mistake

他们将行插入上下文 @,嵌入块@,, 或选择 @MS K2代表样本_” 希望模型能推断出结构#,Q}质量\, 和前置字串中的真相。 它非常有效, 可以演示“-” 然后在比例表下崩溃 “,隐私限制>,或者基本问题 比如““是这列垃圾"?”?"

**DataSummarizer 采取了相反的方法@. @%**

它计算a **确定性统计概况** 您使用 DuckDB ,的数据集 *任选* a 层a **当地LLM** 为解释这些事实 , 提议安全读取- 仅 SQLQ, 并指导后续跟踪 <-\QApp分析>_.}重力提升是数字=,\Q可审计@,}和快速.}LLM故意受推理和辨别的制约

结果是:

* 私人剖析
* 可信赖的自动化@( @%`tool` 杰森尼・马斯科0
* 内建的- 漂移探测
* 和大多数系统都能够做的东西\"’t 完全可以做\":" **PII-自由合成数据集,保存统计形状**

全部不发送原始行到模型@. @%

这直接基于: **[如何用 C# 中的本地 LLM 分析大型 CSV 文件](/blog/analysing-large-csv-files-with-local-llms)**介绍核心思想的,+#:}

> **LLM 程序应生成查询@, 不消耗数据 @.**

这篇文章进一步推进了这个想法 @: @

* ’ t feed the LLM 列
* 连喂都吃不饱,除非你必须
* 喂喂它 **统计形状**
* let duckDB 计算事实
* 让法学硕士解释这些事实 并且要求更多

---


[![释放GitHub](https://img.shields.io/github/v/release/scottgal/mostlylucidweb?filter=datasummarizer*&label=datasummarizer)](https://github.com/scottgal/mostlylucidweb/releases?q=datasummarizer)

> 完整文件使用寿命
> **[DataSummerizer 高级数据采集器](https://github.com/scottgal/mostlylucidweb/blob/main/Mostlylucid.DataSummarizer/README.md)**
> 此工具看起来简单@ . @ it is’}♪ most of the working is in what *是’t* 发送到模型@. @%

> **注::** 这是’@ t @ 1.0 @ 尚未 @ I. 意旨@ MS K4 界面稳定@ MPK5} 边缘仍在变亮@ MOSK6

---


## 问题与 @“#Chat 您的数据@”

当团队将LLM 锁定到数据分析上时, 他们通常会做三件事中的一件事"MS K1"

1. 将行插入上下文@(落在快速 @,漏出数据\)
2. 嵌入块并取回它们 @ ( @ still 列@ MS K1 @ level @ ,} 仍然漏出@ MPK3 *
3. *代表样本* *”*  通常不具有代表性*,}仍然有风险 *MSC4

即使使用“ 200 @ k signal 上下文” 窗口@ MS K1}\ this is the wrong mession *% .} 也是错误的抽象

LLMS不是设计用来通过读取行 < .> 来计算总和=, 检测 skew,}或可靠地解释分配属性的。 它们产生幻觉, 因为它们被要求做数据库工作@.\ {

正确的分割仍然是:

**LLM 原因 @.数据库计算@.**

但是,你可以更进一步 通过改变 *什么什么是* 超过.的LLM原因

---


## 将密钥升级@:}统计作为接口

而不是提供模型数据@,给它一个 **配置简介**.

配置文件是数据集的缩略语\ ,\ 确定性摘要@ MS K1\ 形状}:

* \ + begnected 类型
* 无效@,独一性 @,
* @ / @ 最大 / @ 孔径@ MS K2 @ skew,}外端
* 安全直径的顶值
* PII 风险信号
* -=YTET -伊甸园字幕组=- 翻译:
* 任选漂流三角形相对于基线

此配置成为 *接口界面* 在推理和计算之间@. @%

这个模型现在可以 :

* 决定什么是’ 很有趣
* 提出合理的后续问询
* 解释结果
* 探测器漂流

@…# 从未见过原始行 @ . @

### 建筑结构架构

```mermaid
flowchart LR
    A[Data file] --> B[DuckDB profiles]
    B --> C[Statistical Profile JSON]
    C --> D[LLM reasoning step]
    D --> E[SQL/tool calls]
    E --> F[DuckDB executes locally]
    F --> G[Aggregate results]
    G --> H[LLM synthesis]

    style B stroke:#333,stroke-width:4px
    style D stroke:#333,stroke-width:4px
    style F stroke:#333,stroke-width:4px
```

这保留了熟悉的 **LLM *→ SQL * → duckDB** 圆环,,但锁定在事实中@:

* 特征分析是决定性的
* LLM 以证据操作@, @ not aecdotes

---


## 为什么配置文件有用 ? @(_Even without a LLM=)}(即使没有LLM#MSK 1) *

一个配置解答无聊的@-_but @-}立即回答紧急问题$:

* 哪些列是垃圾 ? @(all-Null}, 常數=, 靠近@-constant)?
* 哪些列是渗漏风险? @(Near@-unique标识符=)?
* 哪些列是高@-null 或外端 @-_heavy}?
* 占支配地位的类别是什么?
* 这个时间序列是连续的还是充满空白的? ?
* 分布偏斜或为零@ - @ influmed @ MS K1}

这些是您通常在电子表格考古学中 发现的“30”分钟的问题

配置文件在几秒内向您提供@. @%

---


## 为什么《简介》让LLM真正有用

如果你 *do 做* 启用 LLM,}该配置文件是阻止它表现为 profile=.}

使用 profile\ - 仅上下文\ MPK1\ 模式可以\ MOSK2\ {

* 高@-entopropy 或高 @-skew 列的焦点
* 智者建议合理组别 @-bys @MS K1_low@-}心电图绝对值=)#
* 避免垃圾回收站 SQL @(no 分组
* 通知分配流
* 要求 *目标对象* 而非要求更多数据

您不需要更大的型号@ . @

你需要更好的证据 .

---


## 工具@:数据拼写器

我把它变成一个CLI 这样我就可以在任意的文档上运行它 {-},包括cron和CI -}没有手写=-}笔迹分析 每次<.}

[![释放GitHub](https://img.shields.io/github/v/release/scottgal/mostlylucidweb?filter=datasummarizer*&label=datasummarizer)](https://github.com/scottgal/mostlylucidweb/releases?q=datasummarizer)

### 快速启动

**Windows :** 将文件拖动到 `datasummarizer.exe`

**CLI :**

```bash
datasummarizer mydata.csv
```

### 工具模式 @(JSON 输出@)

```bash
datasummarizer tool -f mydata.csv > profile.json
```

这: `profile.json` 是合同@:

* 制剂消费的活性
* 储存用于漂流探测
* 用于合成数据生成

---


## 操作默认值 *\ ( 明确=)\ {

* 奥拉马端点 @: `http://localhost:11434` (可配置})

* 默认型号@: @% `qwen2.5-coder:7b` (_上传 `--model`)

* 默认登记册 DB: `.datasummarizer.vss.duckdb`

* SQL 安全限制
  
  * 最大 =% 20 返回到 LLM
  * 被禁止的: `COPY`, `ATTACH`, `INSTALL`, `CREATE`, `DROP`, `INSERT`, `UPDATE`, `DELETE`安全无保障 `PRAGMA`

默认值是有意保守的 @. 您可以松绑@-, 但您必须选择“ .” 。

---


## 确定性剖析@( @example_)

```bash
datasummarizer -f patients.csv --no-llm --fast
```

输出 pII ): 的患者记录

```
── Summary ────────────────────────────────────────────────
974 rows, 20 columns. 4 columns have >10% nulls. 8 warnings.
```

示警旗泄漏风险@,高-null 列MS K2常态字段 @,和可疑识别符{-}所有由 DuckDB.计算

无猜疑 没有幻觉 . *

---


## 自动化工具 JSON 工具

```bash
datasummarizer tool -f patients.csv --store > profile.json
```

缩略输出@: @%

```json
{
  "Profile": {
    "RowCount": 974,
    "ColumnCount": 20,
    "ExecutiveSummary": "974 rows, 20 columns. 18 alerts."
  },
  "Metadata": {
    "ProfileId": "0ae8dcc4d79b",
    "SchemaHash": "44d9ad8af68c1c62"
  }
}
```

这是设计成 diffed, 存储MS K1 和审计.

---


## 自动 Drift 检测@( @Cron @-_Friendly})

一旦配置文件存在,#, 漂移变得便宜 #:#

```bash
datasummarizer tool -f daily_export.csv --auto-drift --store
```

* 数字列的 KS 距离
* Jensen – 夏农对绝对体的分歧
* schema- 指印基准

这正是你想要的 .

---


## 来自元件的杀手特写@:合成克隆人

一旦您有了统计形状@ , @ 您可以做一些真正有用的事 :} @

生成合成数据集

* 包含 **无原始值**
* 包含 **无 PII**
* 保留 **和聚变效应**

这是演示-,-CIQ, 支持 repros_,-和共享样本-MS K3-的理想模式

真实性报告量化合成数据有多接近“-”而不是手“MS K1” 。

---


## 信托信托基金模式

* **确定性:** 所有Stats, juntilesMS K1漂移计数,,警报由 DuckDBMSC3计算。
* **可选LalM:** SQL建议仅@.
* **热量模式:** `--no-llm` 能够产生适合CI或受监管环境的完全可审计产出

LLM从未发明事实 . 它对他们的反应

---


## 拿着它

**转寄@: @**
[https @://github.comQ}/scottgalMS K3}最普通的网路@/tree□/main{/mostlylucid}.DataSummarizer](https://github.com/scottgal/mostlylucidweb/tree/main/Mostlylucid.DataSummarizer)

**需求*:**

* # .NET @10#
* 鸭子 DB # M( # 嵌入的@ ) @ *
* 奥拉马(Ollama)

**相關@: @**

* [使用本地 LLMs 分析大型 CSV 文件](/blog/analysing-large-csv-files-with-local-llms)
* [DocSummamer 缩写器](/blog/building-a-document-summarizer-with-rag)
* [受限制的模糊模式](/blog/constrained-fuzziness-pattern) “- 基本哲学”“:确定论计算”“,概率提议”
* [图像摘要器](/blog/constrained-fuzzy-image-intelligence) @- 图像理解的相同模式