Skip to main content

🏷️ AutoDDG: Automated Dataset Description Generation using Large Language Models

arXiv UV Ruff Black formatted Python >= 3.10 OpenAI Local LLM

Overview

This repository contains the official implementation for the SIGMOD 2026 paper:

AutoDDG: Automated Dataset Description Generation using Large Language Models

AutoDDG is an automated system for generating comprehensive, accurate, readable, and concise dataset descriptions. The framework combines a data-driven approach to summarize dataset contents with large language models (LLMs) to enrich summaries with semantic information and produce human-readable descriptions. AutoDDG supports both API-based (OpenAI) and local LLM (transformers) modes, providing flexibility for different deployment scenarios.

Installation

Clone the repository and install dependencies via uv (recommended):

git clone https://github.com/VIDA-NYU/AutoDDG.git
cd AutoDDG
uv sync
# If you do not have uv installed:
# * `curl -LsSf https://astral.sh/uv/install.sh | sh`
# * or look at https://docs.astral.sh/uv/getting-started/installation/

Then launch Jupyter Lab to explore:

uv run --with jupyter jupyter lab

Alternatively, install directly via pip:

pip install git+https://github.com/VIDA-NYU/AutoDDG@main

For local LLM support (Qwen, Llama, etc.), install with optional dependencies:

Using uv (recommended):

uv sync --extra local-llm

Using pip:

pip install git+https://github.com/VIDA-NYU/AutoDDG@main[local-llm]
# or
pip install git+https://github.com/VIDA-NYU/AutoDDG@main transformers torch

[!CAUTION] This installation method is temporary. A PyPI release of AutoDDG will soon be available. The git+https method will be deprecated in favor of the PyPI index.


Getting Started

AutoDDG supports both API-based (OpenAI) and local LLM (transformers) modes.

Using OpenAI API

The simplest way to use AutoDDG is with an OpenAI API client:

from openai import OpenAI
from autoddg import AutoDDG

# Setup OpenAI client
client = OpenAI(api_key="sk-...")

# Initialize AutoDDG
autoddg = AutoDDG(client=client, model_name="gpt-4o-mini")

# Generate description from a small CSV sample
sample_csv = """Case_ID,Age,BMI
C3L-00004,72,22.8
C3L-00010,30,34.15
"""

prompt, description = autoddg.describe_dataset(dataset_sample=sample_csv)

print(description)
# >>> This dataset contains medical information about patients, including their unique Case_ID, Age, and Body Mass Index (BMI). etc.

Using Local LLM

AutoDDG also supports local LLMs via transformers (Qwen, Llama, etc.):

from autoddg import AutoDDG

# Initialize AutoDDG with local LLM
autoddg = AutoDDG(
    client=None,
    model_name="Qwen/Qwen2.5-7B-Instruct",  # or any HuggingFace model
    use_local_llm=True,
    local_llm_device="cuda",  # or "cpu" if no GPU
    local_llm_dtype="bfloat16",  # or "float16", "float32"
)

# Generate description
sample_csv = """Case_ID,Age,BMI
C3L-00004,72,22.8
C3L-00010,30,34.15
"""

prompt, description = autoddg.describe_dataset(dataset_sample=sample_csv)
print(description)

Note: For local LLM support, ensure you have installed the optional dependencies:

pip install transformers torch

Semantic Profiler Processing Modes

AutoDDG provides multiple processing modes for semantic profiling to optimize performance based on your use case:

Mode OpenAI API Local LLM Description
Sequential Default mode, processes columns one by one
Multi-threading Concurrent processing for faster execution
Group-prompting Processes multiple columns in one prompt
Batch processing Efficient GPU utilization for local models

Sequential Mode (Default)

The default mode processes columns sequentially. Works with both API and local LLMs:

# Sequential mode (default)
semantic_profile = autoddg.analyze_semantics(dataframe)

Multi-threading Mode (OpenAI API Only)

Use multi-threading to process columns concurrently for faster execution. Only available for OpenAI API clients:

# Multi-threading mode (OpenAI API only)
semantic_profile = autoddg.analyze_semantics(
    dataframe,
    use_multi_threading=True,
    max_workers=32,  # Optional: number of concurrent workers
)

Group-prompting Mode (Both API and Local LLM)

Process multiple columns in a single prompt to reduce API calls. Efficient for both API and local LLMs:

# Group-prompting: process all columns at once
semantic_profile = autoddg.analyze_semantics(
    dataframe,
    use_group_prompting=True,
    group_size=0,  # 0 = all columns at once, >0 = group size
)

# Or process in groups of 5 columns
semantic_profile = autoddg.analyze_semantics(
    dataframe,
    use_group_prompting=True,
    group_size=5,
)

Batch Processing Mode (Local LLM Only)

For local LLMs, use batch processing for efficient GPU utilization. Only available for local LLMs:

# Batch processing mode (Local LLM only)
semantic_profile = autoddg.analyze_semantics(
    dataframe,
    use_batch_processing=True,
    batch_size=32,  # Number of columns to process per batch
)

Important Notes:

  • Multi-threading is only available for OpenAI API clients
  • Batch processing is only available for local LLMs
  • Group-prompting works with both API and local LLMs
  • Batch processing takes precedence over other modes if enabled

Quick Jupyter Notebook Start

For a much better introduction, we highly recommend starting with the quick_start notebook with an example dataset.


How to Cite

If you use AutoDDG in your research, please cite our work:

@article{autoddg-sigmod2026,
Author = {Haoxiang Zhang and Yurong Liu and Wei-Lun Hung and Aécio Santos and Juliana Freire},
Title = {AutoDDG: Automated Dataset Description Generation using Large Language Models},
Journal = {Proceedings of the ACM on Management of Data},
volume = {4},
number = {1},
articleno = {12},
numpages = {27},
url = {https://doi.org/10.1145/3786626},
doi = {10.1145/3786626},
Year = {2026}
}

A preprint of the paper is available on arxiv: https://arxiv.org/abs/2502.01050

@misc{2502.01050,
Author = {Haoxiang Zhang and Yurong Liu and Wei-Lun Hung and Aécio Santos and Juliana Freire},
Title = {AutoDDG: Automated Dataset Description Generation using Large Language Models},
Year = {2025},
Eprint = {arXiv:2502.01050},
}

License

AutoDDG is released under the Apache License 2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

autoddg-0.1.2.tar.gz (43.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

autoddg-0.1.2-py3-none-any.whl (46.6 kB view details)

Uploaded Python 3

File details

Details for the file autoddg-0.1.2.tar.gz.

File metadata

  • Download URL: autoddg-0.1.2.tar.gz
  • Upload date:
  • Size: 43.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for autoddg-0.1.2.tar.gz
Algorithm Hash digest
SHA256 6978502bf3843b63f11563cf56da17df1e36b63d8da0583946c297ed09548910
MD5 3e00fa6c353a2318d45bca705655ed0d
BLAKE2b-256 b2d75f2a4041c5221516c32fd3fed6f2bd4d94ba54d51272d3da4867478d0540

See more details on using hashes here.

File details

Details for the file autoddg-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: autoddg-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 46.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for autoddg-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1b39a155e34ef99f37e67572d8be32f61b7a969bdbc98dcea0359fb50b3a9242
MD5 0a8ed455d927554802db20bbe3bcd8c3
BLAKE2b-256 31de4b3dec6d9653baf8974a9ca4fb958c658f0d5a70e65950629311e4c2038c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page