Skip to content
포트폴리오 목록
AI / 머신러닝In Development

Kotoba — 일본어 RAG 평가 하네스

Kotoba — Japanese RAG Evaluation Harness

일본어 문서 특유의 토큰화 변동성, 한자/가나 혼재, 복합 명사를 고려한 재현 가능한 RAG 평가 인프라 R&D입니다. Sudachi/MeCab 형태소 분석을 전처리에 통합하고 pgvector 위에서 nDCG@10·MRR·Recall@K를 배치 측정합니다.

2026 내부 R&D 진행 중 2026-04
#RAG#評価#日本語NLP#pgvector#ベンチマーク

라이브 데모

실제 애플리케이션 화면 미리보기

DEMO
app.kotoba.jp/dashboard
Recall@10
0.847
+4.2%
nDCG@10
0.792
+3.1%
MRR
0.681
+5.8%
Gold dataset
12,480
社内検証

Retriever 比較

live refresh 5s
BM25 (sudachi)R@10 72 · nDCG 68 · MRR 58
Dense (ruri-large)R@10 84 · nDCG 79 · MRR 66
Hybrid RRFR@10 91 · nDCG 86 · MRR 74

Embedding Leaderboard

internal benchmark
#ModelParamsR@10nDCG
1ruri-large-v2337M0.8470.792
2multilingual-e5-large560M0.8210.774
3cl-nagoya/sup-simcse-ja110M0.7890.751
4sudachi-bm25 (baseline)0.7240.683
5mE5-small118M0.7120.669

Query trace — sample #842

index: kotoba-legal-ja-v3

Query

医療機器の添付文書における使用期限の記載要件を教えて

#1
薬機法施行規則 第218条0.942

医療機器の添付文書には、使用の期限を記載しなければならない…

#2
PMDA ガイダンス 20230.887

使用期限の表示は、製造販売業者が設定する有効期間に基づき…

#3
JIS T 14971:20200.812

リスクマネジメントの観点から、使用期限の妥当性を検証する…

#4
社内SOP MED-0070.774

ラベル表示における日付フォーマットは YYYY.MM 形式とし…

retrieval 42ms · rerank 18ms · total 84msreranker: bge-reranker-v2-m3 · top-k 10

과제

기존 RAG 평가 도구는 영어 토큰화·유사도에 최적화되어 일본어 문절 경계와 표기 변동을 제대로 다루지 못하며, 검색 정확도 차이가 과소 평가됩니다. 게다가 일본어 평가 데이터셋이 극히 부족합니다.

솔루션

Sudachi(A/B/C 모드)와 MeCab+IPAdic 토크나이저를 플러그인으로 전환 가능하게 만들고, pgvector(HNSW/IVFFlat) 위에서 ruri-large·multilingual-e5·OpenAI text-embedding-3 세 계열을 병렬 평가합니다. 합성 QA를 LLM-as-Judge로 생성합니다.

성과

  • 내부 합성 QA 1,200건에서 nDCG@10 베이스라인 대비 +18 포인트 개선 (내부 벤치마크)
  • Sudachi 모드 전환 영향을 정량화, C 모드가 장문에서 -6% 정확도 저하 확인
  • 평가 1런 실행 시간을 병렬화로 42분 → 9분으로 단축
  • 재현 가능한 YAML 설정으로 GitHub Actions 야간 회귀 테스트 사내 운용 시작
Key Metrics

Measured Impact

評価データセット件数

1,200 QA

+1,200 (内部合成)

nDCG@10改善幅

+18pt

社内ベースライン比

1ラン実行時間

9分

-33分

並列ワーカー数

8

+6

Features

What it does

評価機能

nDCG/MRR/Recall@K

主要IRメトリクスをDuckDBに永続化し差分可視化。

LLM-as-Judge

合成QAとRagas faithfulness/answer relevancy。

日本語対応

トークナイザ抽象

Sudachi A/B/CモードとMeCabをプラガブル切替。

表記ゆれ正規化

NFKC・全半角・カタカナ揺れの事前統一。

Architecture

System Layers

Layered architecture showing components, responsibilities, and data flow.

L1

Layer

前処理層

表記ゆれと分かち書き境界を揃える日本語前処理。モード別に分岐し結果をキャッシュ。

Sudachi.rsMeCabnormalize-jpUnicodeNFKC
L2

Layer

検索層

密ベクトルとBM25のハイブリッドで候補抽出、cross-encoderで再ランキング。

pgvector HNSWIVFFlatBM25 (PGroonga)ハイブリッドReranker
L3

Layer

評価層

実行ごとのメトリクスとプロンプトをDuckDBに蓄積し差分レポートを生成。

RagasカスタムnDCGDuckDBJupyter Reports
Development Process

How we built it

Step 1

データセット整備

JSQuAD・MIRACL-jaと社内合成QAを統一スキーマに変換。

Deliverables

  • データローダ
  • スキーマ定義
  • 品質レポート
Step 2

トークナイザ比較

Sudachi各モードとMeCabの精度・速度をマトリクス評価。

Deliverables

  • ベンチマーク表
  • ユニットテスト
  • 設定テンプレート
Step 3

埋め込みモデル評価

ruri-large等の日本語特化モデルを並列評価。

Deliverables

  • モデル比較レポート
  • 埋め込みキャッシュ
Step 4

CI統合

夜間回帰と差分アラートをGitHub Actionsに組み込み。

Deliverables

  • ワークフローYAML
  • 通知Bot
  • ダッシュボード
Roadmap

Delivery Timeline

  • Phase 1Done2026-04

    トークナイザ抽象層

    Sudachi/MeCabをPluginインターフェースで統一し単体テストを整備。

  • Phase 2In Progress2026-05

    評価メトリクス実装

    nDCG/MRR/Recallを再計算可能な形でDuckDBに永続化。

  • Phase 3Planned2026-06

    LLM-as-Judge合成QA

    社内文書からQAペアを自動生成し人手レビュー導線を追加。

  • Phase 4Planned2026-08

    OSS公開検討

    MITライセンスでの部分公開と社外ベンチマーク受け入れ。

Team

Who built it

2engineers

Roles

  • MLエンジニア (リード)
  • データエンジニア (パートタイム)
기술 스택

Tools & Platforms

Backend

Python 3.12

Data

pgvectorPostgreSQL 16

Infrastructure

GitHub Actions

Other

Sudachi.rsMeCabruri-largemultilingual-e5RagasDuckDBLangChainPydantic v2pytestPoetry
Build with KGA

유사한 프로젝트를 고려 중이신가요?

고객의 비즈니스에 최적의 솔루션을 제안해 드립니다.

프로젝트 상담하기