MigoXLab/dingo

Dingo: A Comprehensive AI Data, Model and Application Quality Evaluation Tool

Dingo – AIデータ品質評価プラットフォーム

何であるか – Dingoは、AI学習データ、ファインチューニングデータセット、さらには本番環境のLLMやRetrieval-Augmented Generation(RAG)システムの出力を自動的に評価できるオープンソースのPythonライブラリ(およびSaaS対応製品)です。高速なルールベースのチェックと、オプションでLLM駆動の深層評価を組み合わせ、ローカル、Sparkクラスタ、またはIDE風の統合を可能にする組み込みModel Context Protocol(MCP)サーバで実行できます。


コア機能

機能 Dingoの実現方法
マルチソースインジェスト ローカルファイル(JSONL、CSV、Parquet、TXT)、Hugging Faceデータセット、S3バケット、SQLデータベース(PostgreSQL、MySQL、SQLite、Oracle、SQL Server)をストリーミングカーソルで読み込み、数十億行のデータもメモリに収まるように設計されています。
フィールドレベルのパイプライン 異なる列に異なる品質チェックをマッピング可能(例:isbn列にISBNルール、title列にテキスト品質LLM)。フレームワークは各フィールドの結果を分離し、コンテキストの漏洩を防ぎます。
ルールベースのチェック 30以上の組み込みヒューリスティック(正規表現、文字セット、PII検出、フォーマット検証など)が、ほぼゼロコストですべてのレコードに適用されます。カスタムルールはシンプルなデコレータで登録可能です。
LLMベースの評価 オプションの深層チェック(例:LLMTextQualityV4/V5)でOpenAI、DeepSeek、Kimi、またはローカルモデル(Llama 3、Qwen)を呼び出します。プロンプトはdingo/model/llm/下にあり、ドメイン固有のニーズに簡単に置き換えられます。
エージェント駆動の推論 組み込みエージェント(FactCheck、Hallucination)は外部ツール(ウェブ検索、Tavily)を呼び出し、マルチステップ検証を実行します。LangChain ReActエージェントと手動で作成したワークフローの2種類のパターンをサポートしています。
RAG評価 5つの学術的に裏付けられたメトリクス(Faithfulness、Answer Relevancy、Context Precision/Recall、Context Relevancy)により、リトリーバー・オーガナイズドパイプラインをベンチマークできます。
スケーラブルな実行 CLI、Python SDK、Sparkエグゼキュータのいずれかで実行可能。並列処理とバッチサイズはカスタマイズ可能。Sparkエグゼキュータはクラスタ上で作業を分散し、大規模データセットに対応します。
レポート生成 JSON要約、フィールドレベルの分解、ルール違反の詳細、統計的集計(平均、最小、最大、標準偏差)。SaaS版では、インタラクティブなチャート、トレンド分析、エクスポート機能を備えたWeb UIが追加されます。
MCPサーバ 軽量なSSEまたはstdioサーバ(dingo serve)を起動し、CursorやClaude DesktopなどのIDEが評価ツールとしてクエリできるようにします。

クイックスタート(ローカル)

# コアパッケージのインストール
pip install dingo-python
# オプションの拡張機能 – ハルシネーション検出、リトリーバルベンチマーク、またはすべて
pip install "dingo-python[hhem]"          # HHEMモデルを追加
pip install "dingo-python[retrieval]"    # MTEB + pytrec-evalを追加
pip install "dingo-python[all]"          # すべてのオプション機能

例 – 単一レコードに対するルール + LLM評価

from dingo.io.input import Data
from dingo.model.rule.rule_common import RuleSpecialCharacter
from dingo.model.llm.text_quality.llm_text_quality_v4 import LLMTextQualityV4
from dingo.config.input_args import EvaluatorLLMArgs

sample = Data(data_id='123', prompt='hello', content='I am 8 years old. ^I love apple because:')

# 高速なルールチェック
print(RuleSpecialCharacter().eval(sample))

# LLMチェック(OpenAIキーが必要)
LLMTextQualityV4.dynamic_config = EvaluatorLLMArgs(
    key='YOUR_API_KEY',
    api_url='https://api.openai.com/v1/chat/completions',
    model='gpt-4o',
)
print(LLMTextQualityV4.eval(sample))

例 – Hugging Faceデータセット全体の評価

from dingo.config import InputArgs
from dingo.exec import Executor

cfg = {
    "input_path": "tatsu-lab/alpaca",
    "dataset": {"source": "hugging_face", "format": "plaintext"},
    "executor": {"result_save": {"bad": True}},
    "evaluator": [{"evals": [{"name": "RuleColonEnd"}, {"name": "RuleSpecialCharacter"}]}]
}
args = InputArgs(**cfg)
executor = Executor.exec_map["local"](args)
result = executor.execute()
print(result)

CLIの使用方法

# ルールのみの評価を実行
 dingo eval --input .github/env/local_plaintext.json

# LLM駆動の評価を実行(例:GPT‑4o)
 dingo eval --input .github/env/local_json.json

Dingoの拡張方法

  • カスタムルールBaseRuleを継承し、@Model.rule_register('QUALITY_BAD_CUSTOM', ['default'])で登録。
  • カスタムLLM評価器BaseOpenAI(または任意のBaseLLM)を継承し、@Model.llm_register('custom_evaluator')で登録。
  • カスタムエージェント – LangChainベースのAgentFactCheckパターンを使用するか、手動でワークフローを記述(examples/register/を参照)。

SaaS版を使うべきタイミング

コードを書かずにUIを使いたい、ロールベースのアクセス(JWT + Google OAuth)、視覚的なダッシュボード、または下流システム向けのRESTful APIが必要な場合、エンタープライズSaaS版(https://dingo.openxlab.org.cn)が同じ評価エンジンの上にこれらの機能を提供します。


Dingoを検討すべき人

  • LLMに供給する前に巨大な事前学習コーパスを検証する必要があるデータエンジニア
  • 指示チューニングデータセットを構築し、自動3H(誠実・有用・無害)チェックを望むML研究者
  • RAGパイプラインを運用し、信頼性と関連性のメトリクスを体系的に必要とするプロダクトチーム
  • 本番出力全体でPII、毒性、ハルシネーション検出を求めるコンプライアンス担当者

ライセンスとコミュニティ

  • ライセンス: Apache‑2.0(READMEメタデータに基づく)。
  • コミュニティ: Discord、WeChat、およびIssueトラッキング、pre-commitフック、CIバッジを備えた公開GitHubリポジトリ。プラグイン登録システムを通じて貢献を歓迎します。

結論:Dingoは、ファイル、データベース、または大規模言語モデルの出力に存在するあらゆるAI関連データの品質を測定・改善するためのプロダクショングレードで拡張可能なツールボックスを提供します。

関連

  • プロジェクト
  • Dispatch
  • プロジェクト
  • プロジェクト
  • Dispatch