AKARI Tech Blog

燈株式会社のエンジニア・開発メンバーによる技術ブログです

ドメイン・業界特化RAGのためのモデル学習

みなさんこんにちは。燈株式会社CTOの三澤です。

今回は、ドメイン・業界特化の検索拡張生成(Retrieval Augmented Generation: RAG)システム構築における言語モデルの学習について紹介します。この記事は、ドメイン特化のRAGシステム構築に興味のあるAIエンジニアを対象にしています。

TL;DR

背景

2023年にChatGPTのAPIが登場したことにより、LLMを活用するのが容易になりました。
こういったLLMをさらに活用しようと、現在ではLLMを組み込んだRAGと呼ばれるシステムがさまざまな業界に浸透しています。
RAGは主に以下の2ステップから構成されます:

Retrieval(検索):
クエリに対して、外部のドキュメントベース(例:社内Wiki、論文、法令、FAQなど)から関連性の高い文書を検索。
検索には全文検索アルゴリズムであるBM25や、深層学習モデルを用いてベクトル化をして検索を行う手法(ベクトル検索)が用いられます。
以下に、ベクトル検索を行う場合のよくある流れを示します。

ベクトル検索システムの概要

Generation(生成):
検索で得た文書を文脈としてLLMに入力し、それに基づいて自然言語での回答を生成します。
この文脈は"コンテキストウィンドウ"に取り込まれ、あたかもモデルがその知識を「知っている」かのように振る舞わせます。

専門分野におけるRAGシステムの課題

多くのRAGシステムは、検索にはベクトル検索が用いられますが、この際に用いる言語モデルは主にWebで収集されたコーパスについて学習しているため、専門用語を適切に検索できないことがあります。
最も顕著な例として、建設分野において、「建築」と「土木」は全く異なる分野ですが、汎用モデルのベクトル検索においてこれらの分野の文章の類似スコアは非常に高いため、建築の文脈なのに土木の答えを返してしまう、などの問題が考えられます。
例えば、
文章(建築):

この建築では、構造体としての強度と、空間を軽やかに見せる意匠性を両立するため、特殊な鉄骨フレームを採用した。材料の選定にあたっては、耐久性だけでなく、リサイクル可能性も考慮されている。

文章(土木):

橋梁の主桁には、長期的な荷重に耐えうる高い引張強度を持つ特殊鋼材が使用されている。材料疲労を考慮した設計により、構造全体の安全性を確保している。

という二つの文章をruri-rerankerを用いて類似度を判定すると、「構造」という共通する単語によって非常に高い類似スコアを示します。
これを改善するには、例えば「建築」と「橋梁」の類似性が非常に低いことを学習させる必要があります。
そのために、建設業界の専門用語をベースとするコーパスを用いて業界特化のモデルを学習することが重要になります。

ドメイン特化RAGシステムの概要

EmbeddingモデルおよびRerankerモデルそれぞれに対してドメイン向けにチューニングする手法を紹介します。
今回は、特に専門用語が多い建設業についてドメイン適合を行いました。

使用データ:

計算環境:

  • NVIDIA HGX H200: Amathと呼ばれる燈謹製のGPUクラスタに配備されている1ノードを利用。

ただし、各実験についてはモデルの選定含め数十の実験を回しましたが、ブログのスペースのため良かった結果のみピックアップしています。

ドメイン特化Embeddingモデルの学習

Embeddingモデルの構築のために、ファインチューニングを実施しました。

  • 比較ベースモデル: ruri, ruri-v2-large, ModernBert(SB-Intuitions), その他多数の日本語言語モデル
  • 評価方法: 学習データに存在しない建設データおよび質問文についてTop-k精度で評価。nDCGのような評価指標も考えられますが、今回はLLMのコンテキストに入れられるかという観点でTop-k (特にk=3, 5)を重視して評価しました。

以下では、結果として最良だったruri-v2-largeの条件と結果を示します。

学習条件
  • 学習データ: ruri-dataset-ft, 建設コーパス (およそ8:2)
  • シーケンス長: 512
  • 学習率: 3e-6
  • Optimizer: RAdamScheduleFree
  • 並列分散学習:DeepSpeed ZeRO2
  • Task-homogeneous (Li et al., 2023) と呼ばれるバッチテクニックを使用
学習結果
Results: ruri-v2-ftは今回作成したモデル

ドメイン特化Rerankerモデルの学習

Rerankerモデルの構築のために、ファインチューニングを実施しました。

  • 比較ベースモデル: ruri-reranker, ModernBert(SB-Intuitions), その他多数の日本語言語モデル
  • 評価方法: 学習データに存在しない建設データおよび質問文についてTop-k精度で評価。さらに、Rerank前のTop-k精度からどれだけ改善したかを評価。

以下では、結果として最良だったModernBERT-310M (SB Intuitions)をベースにした場合の条件と結果を示します。ただし、学習は(Tsukagoshi et al., 2024)を参考に2ステージで行いました。

学習条件(Stage 1)
  • 学習データ: ruri-reranker-dataset (stage1), 建設コーパスから生成されたトリプレット (およそ15:3)
  • シーケンス長: 256
  • 学習率: 3e-5
  • Optimizer: RAdamScheduleFree
  • バッチサイズ 512
学習条件(Stage 2)
  • 学習データ: ruri-reranker-dataset (stage2), 建設コーパスから生成されたトリプレット (およそ6:1)
  • シーケンス長: 512 (Stage 1より倍増)
  • 学習率: 3e-6
  • Optimizer: RAdamScheduleFree
  • バッチサイズ 64
学習結果

まず、前の実験で構築されたruri-v2-ft_2とBM25をハイブリッドにしたものをベンチマークとおき、そこからRerankによってどれだけTop-k精度が変わるかを可視化します。

Results: modernbert-ftは今回構築したモデル

一般的な文章のみを学習したruri-rerankerではRerank後むしろTop-k精度が悪化していることがわかります。実はこれが冒頭述べた「建築と土木の文章の類似スコアが高くなる」と同じような現象が起きていると考えられます。

一方で、今回学習したモデルではTop-k精度が大幅に向上しています。特にTop-5精度では80%を出しており、RAGシステムにおいて回答の大幅な精度向上が見込まれます。

最後に

今回は建設コーパスを用いてドメイン特化モデルを構築しました。
本記事でベースとしたモデルはRuri-v2でしたが、この記事を執筆している最中にModernBERTをベースとしたRuri-v3も出ています。
今後も引き続きRuri-v3など最新のモデルや技術を取り入れ、各業界に特化したRAGシステムを構築していきます。

We’re Hiring!

燈では高性能なGPUを用いたAI開発ができます!興味がある方、ぜひカジュアル面談でお話しましょう!お待ちしています!

akariinc.co.jp


この記事を書いた燈メンバー🙌
www.wantedly.com

参考文献

Li, Zehan, et al. "Towards general text embeddings with multi-stage contrastive learning." arXiv preprint arXiv:2308.03281 (2023).
Tsukagoshi, Hayato, and Ryohei Sasano. "Ruri: Japanese General Text Embeddings." arXiv preprint arXiv:2409.07737 (2024).

*1:建設コーパスは計画, 環境, 構造, 施工, 法規など建設の各ジャンルから幅広く集めたコーパスから作成したものを使用。