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