Hub documentation

SQL Console: Запросы к наборам данных Hugging Face в вашем браузере

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SQL Console: Запросы к наборам данных Hugging Face в вашем браузере

Вы можете выполнять SQL-запросы к набору данных в браузере с помощью SQL Console. SQL Console работает на базе DuckDB WASM и полностью функционирует в браузере. Доступ к SQL Console можно получить из Data Studio.

Чтобы узнать больше о SQL Console, см. статью в блоге о SQL Console.

С помощью SQL-консоли вы можете:

  • Выполняйте запросы DuckDB SQL к набору данных (см. раздел SQL Snippets с полезными запросами)
  • Поделитесь результатами запроса с другими по ссылке (см. этот пример)
  • Скачайте результаты запроса в файл формата Parquet или CSV
  • Вставьте результаты запроса на свою веб-страницу с помощью iframe
  • Запрос к наборам данных на естественном языке

Вы также можете использовать DuckDB локально через CLI для запросов к набору данных по протоколу hf://. Подробнее см. в документации DuckDB Datasets. SQL Console предоставляет удобную кнопку Copy to DuckDB CLI, которая генерирует SQL-запрос для создания представлений и выполнения вашего запроса в DuckDB CLI. Альтернативно, выполните те же запросы из терминала или скрипта с помощью hf datasets sql.

Примеры

Фильтрация

SQL Console делает фильтрацию наборов данных очень простой. Например, если вы хотите отфильтровать набор данных SkunkworksAI/reasoning-0.01 по инструкциям и ответам с длиной рассуждения не менее 10, вы можете использовать следующий запрос:

Вот SQL-запрос для сортировки по длине рассуждения

SELECT *
FROM train
WHERE LENGTH(reasoning_chains) > 10;

Гистограмма

Многие авторы наборов данных включают в них статистику о распределении данных. С помощью функции histogram в DuckDB можно построить гистограмму значений столбца.

Например, чтобы построить гистограмму столбца Rating в наборе данных Lichess/chess-puzzles, можно использовать следующий запрос:

Подробнее о функции `histogram` и параметрах — здесь.

from histogram(train, Rating)

Сопоставление регулярных выражений

Одной из самых мощных возможностей DuckDB является глубокая поддержка регулярных выражений. Вы можете использовать функцию regexp для сопоставления шаблонов в ваших данных.

С помощью функции regexp_matches можно отфильтровать датасет GeneralReasoning/GeneralThought-195k, выбрав инструкции, содержащие блоки кода в формате Markdown.

Подробнее о функциях регулярных выражений DuckDB можно узнать здесь.

SELECT *
FROM train
WHERE regexp_matches(model_answer, '```')
LIMIT 10;

API сохранённых запросов и эмбеддингов

Вы можете создавать, обновлять и удалять встраивания SQL Console программным способом. Встраивания представляют собой сохранённые запросы, которые можно распространять по ссылке или встраивать в другие страницы.

Создайте эмбеддинг:

POST /api/datasets/{namespace}/{repo}/sql-console/embed
Content-Type: application/json
Authorization: Bearer {token}

{
  "sql": "SELECT * FROM train LIMIT 10",
  "title": "Sample rows",
  "private": false,
  "views": [{"key": "default/train", "displayName": "Train", "viewName": "train"}]
}

Обновление встраивания:

PATCH /api/datasets/{namespace}/{repo}/sql-console/embed/{embed_id}
Content-Type: application/json
Authorization: Bearer {token}

{
  "sql": "SELECT * FROM train LIMIT 20",
  "title": "Updated title",
  "private": true
}

Удалить embed:

DELETE /api/datasets/{namespace}/{repo}/sql-console/embed/{embed_id}
Authorization: Bearer {token}

Обнаружение утечек

Обнаружение утечки данных — это процесс определения того, присутствуют ли данные из набора данных в нескольких разбиениях, например, содержится ли тестовый набор в обучающем.

Подробнее об обнаружении утечек — здесь.

WITH
    overlapping_rows AS (
        SELECT COALESCE(
            (SELECT COUNT(*) AS overlap_count
             FROM train
             INTERSECT
             SELECT COUNT(*) AS overlap_count
             FROM test),
            0
        ) AS overlap_count
    ),
    total_unique_rows AS (
        SELECT COUNT(*) AS total_count
        FROM (
            SELECT * FROM train
            UNION
            SELECT * FROM test
        ) combined
    )
SELECT
    overlap_count,
    total_count,
    CASE 
        WHEN total_count > 0 THEN (overlap_count * 100.0 / total_count)
        ELSE 0
    END AS overlap_percentage
FROM overlapping_rows, total_unique_rows;
Update on GitHub