MigoXLab/dingo
Dingo: A Comprehensive AI Data, Model and Application Quality Evaluation Tool
Dingo – AI 데이터 품질 평가 플랫폼
무엇인가요 – Dingo는 AI 학습 데이터, 파인튜닝 데이터셋, 그리고 실제 운영 중인 LLM 또는 검색 증강 생성(RAG) 시스템의 출력물 품질을 자동으로 평가할 수 있는 오픈소스 Python 라이브러리(및 SaaS 기능 지원 제품)입니다. 빠른 규칙 기반 검사와 선택적 LLM 기반 심층 평가를 결합하며, 로컬, Spark 클러스터, 또는 IDE 스타일 통합을 위한 내장된 모델 컨텍스트 프로토콜(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 에이전트와 수동 워크플로우 두 가지 패턴을 지원합니다. |
| RAG 평가 | 학계에서 검증된 5가지 메트릭(Faithfulness, Answer Relevancy, Context Precision/Recall, Context Relevancy)을 통해 검색 증강 파이프라인을 벤치마킹할 수 있습니다. |
| 확장 가능한 실행 | CLI, Python SDK, 또는 Spark 실행자로 실행 가능. 병렬 처리 및 배치 크기 조정 가능. Spark 실행자는 클러스터에 작업을 분산하여 대규모 데이터셋 처리 가능. |
| 보고서 생성 | JSON 요약, 필드 수준 분석, 각 규칙 위반 세부 정보, 통계 집계(평균, 최소, 최대, 표준편차). SaaS 버전은 인터랙티브 차트, 트렌드 분석, 내보내기 옵션을 갖춘 웹 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, 그리고 이슈 추적, pre-commit 훅, CI 배지가 있는 공개 GitHub 리포지토리. 플러그인 등록 시스템을 통해 기여를 환영합니다.
결론: Dingo는 파일, 데이터베이스, 또는 대규모 언어 모델의 출력물에 존재하는 AI 관련 데이터의 품질을 측정하고 개선하기 위한 프로덕션 수준의 확장 가능한 도구 상자를 제공합니다.
관련
- 프로젝트
- Dispatch
- 프로젝트
- 프로젝트
- Dispatch