# DataSummarizer: رسم بيانات محلية سريعة

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

معظم “ المحادثة مع بياناتك ” الأنظمة تقوم بنفس الخطأ | : | إنهم يتعاملون مع LLM كما لو أنها قاعدة بيانات

إنهم يضعون الأطر في سياق , يدمجون قطع , أو يختارون |“ | العينات الممثلة | ” | ويأملون أن يكون النموذج قادرا على استنتاج البنية | | الدقة | وحقيقة من القصص | МSK6 | إنه يعمل بشكل جيد بما فيه الكفاية لعرض | مSK7 | ومن ثم يسقط تحت المقياس | المSK8 | القيود المتعلقة بالخصوصية ٬ مSK9 | أو أسئلة أساسية مثل |مSK10 | هل هذه الجملة سامة ٬ المSK11

**DataSummarizer يأخذ المقاربة العكسية.**

ويقوم بحساب **Profil الإحصائي المعرفي** من مجموع البيانات الخاص بك باستخدام DuckDB , يستمر هذا الملف , و *إختياريا* طبقات **الـ LLM المحلية** على رأس لترجمة تلك الحقائق, تقترح القراءة الآمنة- فقط SQL , وتوجيه المتابعةMSC3 تحليل ما بعدM SK4 الرفع الثقيل هو رقميMST5 قابل للتحقق منهM ST6 وسريعM st7 LLM مقيد عمداً بالتفكير والتفسيرMst8

والنتيجة هي:

* Fast, الرسم البياني الخاص
* آلية قابلة للثقة (`tool` JSON)
* تم بناؤه - في كشف التدفق
* و شيء لا يمكن للكثير من الأنظمة فعله على الإطلاق **PII-مجموعات بيانات صناعية مجانية تحافظ على الشكل الإحصائي**

كل ذلك دون إرسال الأطر الخام إلى نموذج.

هذا يبني مباشرة على **[كيف يمكن تحليل الملفات الكبيرة CSV مع LLMs المحلية في C#](/blog/analysing-large-csv-files-with-local-llms)**, الذي قدم الفكرة الأساسية

> **يجب على LLMs أن تنتج الأسئلة, لا تستهلك البيانات.**

هذه المقالة تدفع هذه الفكرة إلى الأمام

* don’t لا تغذى صفات LLM
* لا تغذيه حتى “أمثلة ” إلا إذا كان عليك
* تغذيه **الشكل الإحصائي**
* دعو DuckDB يحسب الحقائق
* دع LLM يفسر هذه الحقائق - ويطلب المزيد

---


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

> الوثائق الكاملة تعيش في
> **[README DataSummarizer](https://github.com/scottgal/mostlylucidweb/blob/main/Mostlylucid.DataSummarizer/README.md)**
> الأداة تبدو بسيطة. إنها ليست’tM SK2 معظم العمل في ما *isn’t* أرسلت إلى النموذج.

> **ملاحظة:** هذا ليس "مسك0" "مسک1" "ليس كذلك" "مازلت" . "أن" "المسك3" "هو مقصود" " المسك4" "الواجهة مستقرة" "لمسك5" "الأحواف مازالت حادة"

---


## المشكلة مع “الحديث مع بياناتك”

عندما يقوم الفرق بتركيب LLM على تحليل البيانات عادة ما يفعلون واحد من ثلاثة أشياء

1. تضع الأ行ات في السياق ( يسقط بسرعة , تسرب البيانات)
2. تضع الجسيمات وتعيدها (الجدول لا يزال -مستوى , لا يزال نشطاً S)
3. تمر “ العينات الممثلةM SK1 ( غالبًا غير ممثلة

حتى مع 200k النوافذ السياقية لل टोकن, هذا هو التجريد الخاطئM SK2

لا تم تصميم أجهزة الـ LLM لحساب مجموعات ــ , الكشف عن الاختلافات ــ, أو إستنتاج بشكل موثوق بخصائص التوزيع عن طريق قراءة الصفات ـــ .

الانقسام الصحيح لا يزال :

**أسباب LLM. حسابات البيانات.**

لكن بإمكانك أن تذهب خطوة أبعد عن ذلك بتغيير *ماذا* أسباب LLM فوق .

---


## ال upgrade key: الإحصائيات كواجهة

بدلاً من إعطاء بيانات النموذج , أعطيه **Profil**.

الرسم البياني هو خلاصة معقدة , منطقية لمجموعة البيانات ’ شكله :

* schema + الأنواع المنطقية
* معدل أصفر, فريدة من نوعها, أساسية
* Min / max / quantilesM SK2 skew, outliers
* القيم العليا للتصنيفات الآمنة
* إشارات الخطر PII (regex + classifier)
* الوقت-تركيب السلسلة (العرضM SK2 الفجوات , الكثافةMSC4
* دلتا drift إختيارية مقابل خط الأساس

هذا الملف يصبح *الواجهة* بين التفكير والحساب.

والنموذج يمكن الآن

* يقرر ما هو مثير للاهتمام
* اقترحوا استجابة منطقية ل-
* ترجمة النتائج
* إكتشاف الهبوط

…دون رؤية الصفات الخام

### العمارة

```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 على الأدلة ــ , ــ وليست أnecdotes

---


## لماذا Profil مفيد (حتى بدون LLM)

ويجيب النموذج على الأسئلة المملة - ولكن - والسؤال الطارئة فوراً

* ما هي السطرات الفضائية (كل-nullM SK2 ثابتةMSC3 قريبة -مستقيمة)?
* ما هي المستجدات التي تمثل مخاطر التسرب ( قريبة-محددات منفردة )?
* أي الأعمدة مرتفعة-null أو خارجية-heavy
* ما هي التصنيفات المهيمنة?
* هل هذه السلسلة الزمنية مترابطة أو مليئة بالفجوات?
* هل التوزيعات متباعدة أو صفر؟

هذه هي الأسئلة التي تكتشفها عادة 30 دقائق في علم الآثار في الجداول

يعطيك الملف في ثواني

---


## لماذا Profil يجعل LLM في الواقع مفيدا

إذا كنت *أفعل* إحداث LLM, هو ما يوقفها من الفعالية

مع الرسم البياني - منطقي فقط , يمكن للنموذج

* التركيز على العمودات الـ high-entropy أو high -skew
* تقترح مجموعة معقولة-bys M SK1low-cardinality categoricalsMSC3
* تجنب الخفاش SQL ( لا يوجد تجميع على 95%- ستجدول منفردة)
* تلاحظ تدفق التوزيع
* تطلب *موجهة* تتبع - الإحصائيات بدلاً من طلب المزيد من البيانات

لا تحتاج إلى نموذج أكبر

تحتاج إلى أدلة أفضل

---


## الأداة : محرك البيانات

حولت هذا إلى CLI حتى أتمكن من تشغيله على الملفات الإختياريّة - بما في ذلك في كرون والـCI - دون أن أقوم بتحريك يديّة

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

### البداية السريعة

**وينډوز:** سحب ملف على `datasummarizer.exe`

**CLI:**

```bash
datasummarizer mydata.csv
```

### طريقة الأداة (JSON выход)

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

ذلك `profile.json` هو العقد:

* تستهلكها العوامل
* مخزنة للكشف عن الهبوط
* تستخدم لصنع بيانات صناعية

---


## លំនាំات التشغيل (تقليد)

* نقطة النهاية Ollama: `http://localhost:11434` (configurable)

* نموذج تلقائي: `qwen2.5-coder:7b` (تخطى مع `--model`)

* السجل الافتراضي DB: `.datasummarizer.vss.duckdb`

* قيود أمن SQL:
  
  * أعاد الـ 20 الأطر إلى LLM
  * ممنوعة: `COPY`, `ATTACH`, `INSTALL`, `CREATE`, `DROP`, `INSERT`, `UPDATE`, `DELETE`, غير آمن `PRAGMA`

تلقائيات متحفظة بشكل مقصود. يمكنك تخفيضها - لكن عليك أن تختار في

---


## Profiling deterministic (Example)

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

ناتج (974 سجلات المرضى مع PII):

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

التحذيرات خطرات تسرب علم الأعلام, مرتفعة-جدول فارغة , مجالات ثابتة, ومسميات مشتبهة M SK4 جميعها حسبت بواسطة DuckDBMSC5

لا تخمين . لا تشوه .

---


## أداة 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"
  }
}
```

هذا مصمم ليتم تخزينه , خزنه |, وفحصه ٬.

---


## إكتشاف التدفقات الآلية (CronM SK1Friendly)

بمجرد وجود الخرائط , يصبح التنقل رخيصاً :

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

* المسافة KS للجدول الرقمية
* جينسون–انحنان الإختلاف للتصنيفات
* schema-خطوط أساسية ملمسة

إنها البنية التحتية المملة - التي هي بالضبط ما تريده

---


## ميزة قاتلة: محاصيل صناعية من الشكل

بمجرد أن يكون لديك شكل إحصائي, يمكنك أن تفعل شيئا مفيدا حقاً

صنع مجموعات بيانات صناعية التي

* يحوي **لا قيمة أصلية**
* يحوي **لا PII**
* تحافظ **التوزيع , الكميات , و تأثيرات الشفافية**

هذا مثالي بالنسبة للنماذج , CI , دعم التجارب , و العينات المتبادلة .

تقرير الصدق يقدر مدى قرب البيانات الإصطناعية - بدلاً من اليد - موجهة | “ | واقعي |”.

---


## نموذج الثقة

* **دييميائي:** جميع الإحصائيات, الكميةM SK1 نقاط الهبوط, و التحذيرات تُحسب بواسطة DuckDB .
* **إختيار LLM:** التفسير, المنطق , واقتراحات SQL فقط.
* **المُدار الهرمائي:** `--no-llm` ينتج مخرجات قابلة للتحقق منها بالكامل، مناسبة لبيئة CI أو المنظمة.

لا يخترع الـ LLM الحقائق أبداً

---


## احصل عليه

**Repo:**
[https://githubMSC1com/scottgalM SK3MostlylucidwebMスク4treeMST5mainMstlylucideMSSK7DataSummarizer](https://github.com/scottgal/mostlylucidweb/tree/main/Mostlylucid.DataSummarizer)

**المتطلبات:**

* .NET  10
* DuckDB (embedded)
* إختياري: أولاما

**Related:**

* [تحليل الملفات الكبيرة CSV مع LLMs المحلية](/blog/analysing-large-csv-files-with-local-llms)
* [DocSummarizer](/blog/building-a-document-summarizer-with-rag)
* [نمط الغموض المقيد](/blog/constrained-fuzziness-pattern) - الفلسفة الكامنة : حسابات التفاضل والتكامل
* [توصيل الصورة](/blog/constrained-fuzzy-image-intelligence) - نفس النمط يطبق على فهم الصورة