モデル概要
モデル特徴
モデル能力
使用事例
license: apache-2.0 language: en library_name: transformers pipeline_tag: text-generation tags:
- unsloth
- gemma-3
- fine-tuning
- seo
- marketing-automation
- reasoning
- reinforcement-learning
- ontology
- knowledge-graph
- grpo
- seovoc
- schema.org
- wordlift
- 4bit
- proof-of-concept base_model: unsloth/gemma-3-4b-it-bnb-4bit datasets:
- cyberandy/seo-grpo-reasoning-dataset-1000
SEOcrate 01
powered by
SEOcrate-4B_grpo_new_01: コンセプト実証
オントロジー誘導型強化学習によるGemma 3のSEO推論能力強化
SEOcrateは「ソクラテス」(ギリシャの哲学者)のように響き、SEOの専門知識と深い推論を融合させています。
モデル説明:
このリポジトリにはSEOcrate-4B_grpo_new_01が含まれており、大規模言語モデル(LLM)における専門的な推論能力を強化する新しい方法論を実証する**オープンソースのコンセプト実証(PoC)**です。このモデルはunsloth/gemma-3-4b-it-bnb-4bit
(google/gemma-3-4b-it
の4ビット量子化版)をファインチューニングしたものです。
ここで検証された中核的な革新は、**ドメイン固有のオントロジー(SEOntology/seovoc)に導かれた強化学習(特にGRPO)**を使用して、検索エンジン最適化(SEO)タスクにおいて専門家のような推論経路をモデルに教えることです。
- このオントロジー駆動型アプローチとプロジェクトの背景について詳しくは、私たちのブログ記事をご覧ください: An Ontology-Driven Approach to Train Your Next SEO Agent。
プロジェクトの目的:
このPoCの主な目的は、強化学習(RL)とドメインオントロジー(seovoc
、schema.org
を拡張)からの構造化された知識を組み合わせることで、標準的なファインチューニングアプローチと比較して、LLMのそのドメイン内での複雑な推論タスクの実行能力を大幅に向上させることができるという仮説を検証することでした。私たちは、SEOプロンプトを理解し、関連するオントロジー概念を適用し、簡潔な回答とともに構造化された段階的な説明を生成できるモデルを作成することを目指しました。
モデルの能力(PoCで実証):
- 構造化された出力: 明確さのために特定のXMLライクな形式で応答を生成します:
<reasoning> [SEO概念/オントロジー用語を参照した段階的な説明] </reasoning> <answer> [プロンプトに対する簡潔な回答] </answer>
- SEOタスクに焦点を当てた: 様々なSEOタスク(データセットセクションを参照)に関するプロンプトでトレーニングされています。
- オントロジー誘導型推論: ファインチューニングプロセスでは、
schema.org
と**SEOntology(seovoc)**で定義された概念や関係に沿った推論ステップを生成するために、モデルを明示的に報酬を与えました。
方法論: オントロジー誘導型強化学習
この新しい方法論は、ドメイン固有のオントロジーからの構造化された知識を活用して強化学習を導くもので、Knowledge Graph Conference(KGC)で初めて発表されました。模倣を主に教える標準的な教師ありファインチューニング(SFT)とは異なり、私たちは強化学習(RL)を使用して、モデルにSEOドメイン内で効果的に推論する方法を明示的に教えました。
- ベースモデル:
unsloth/gemma-3-4b-it-bnb-4bit
(基礎的な言語能力を提供)。 - 構造化された知識: SEOntology(seovoc)、主要なSEOエンティティ、プロパティ、関係を定義するオントロジー(https://w3id.org/seovoc/)が、構造化された知識ベースとして機能しました。
- 学習方法:
trl
ライブラリを使用したGroup Relative Policy Optimization(GRPO)、Unslothで加速。GRPOは、報酬信号に基づいてポリシー(モデルの生成戦略)を直接最適化するために選択されました。 - オントロジー誘導型報酬信号: これが方法論の中核です。カスタム報酬関数が設計され、LLM-as-a-Judge(Gemini 1.5 Pro)が使用されました。このジャッジは、モデルの生成した
<reasoning>
と<answer>
を、いくつかの基準に基づいて評価し、特にSEOのベストプラクティスとの整合性とseovoc
オントロジーの関連概念の明示的な使用/含意を含めました。モデルは、オントロジーに構造化された知識と一致する論理的なステップを示す出力に対して報酬を与えられました。
ファインチューニングの詳細
- データセット: カスタム合成データセット(
cyberandy/seo-grpo-reasoning-dataset-1000
、約960のクリーンな例を含む)。このデータセットは、Gemini 1.5 Proを使用してプログラム的に生成され、SEOntology(seovoc
)の概念を明示的に参照し組み込んだ詳細なタスクテンプレートに基づいています。生成プロセスでは、様々なSEOタスク(メタ説明の最適化、内部リンクの提案、クエリトレンド分析、Schema.orgの提案、NER、タイトルの最適化、意図の分類、Robots.txtルール、正規化、E-E-A-T評価、GMB最適化、製品スキーマの強化、QAに基づくコンテンツの改訂)に対する入力データ、段階的な推論(<reasoning>...</reasoning>
)、簡潔な回答(<answer>...</answer>
)のペアが作成されました。これらの生成された例は、LLM-as-a-Judge(Gemini 1.5 Pro)によって評価され、正確性、関連性、形式の正確さ、および推論と回答のseovocオントロジー概念との整合性に基づいて報酬スコア(0.0から1.0の間)が割り当てられました。このスコア付けされたデータは、GRPOトレーニング用に{'prompt': '...', 'reward': float}
のペアにフォーマットされました。データセット生成と評価方法論の詳細については、ブログ記事をご覧ください(KGC資料へのリンク): An Ontology-Driven Approach to Train Your Next SEO Agent。 - トレーニングステップ:
500
ステップ。 - 主要なハイパーパラメータ:
- 学習率:
5e-6
(コサイン減衰) - バッチサイズ(実効): 8(
per_device_train_batch_size=8
、gradient_accumulation_steps=1
) - オプティマイザ:
adamw_8bit
- シーケンス長: 2048
- 報酬関数: 形式、キーワード使用(
seovoc
用語の影響を含む)、長さなどを評価するカスタムPython関数、Gemini 1.5 ProによってSEO/オントロジーの原則との整合性に基づいて評価され、tanhでスケーリング。
- 学習率:
- ハードウェア: NVIDIA A100 40GB
使用方法
このモデルは、タスクと期待される出力構造を定義する重要なシステムプロンプトを含む、チャット用にフォーマットされたプロンプトを期待します。
# 必要なライブラリがインストールされていることを確認してください:
# pip install torch transformers accelerate bitsandbytes sentencepiece
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig, TextStreamer
import torch
# このリポジトリのHub IDを使用
model_id = "cyberandy/SEOcrate-4B_grpo_new_01"
device = "cuda" if torch.cuda.is_available() else "cpu"
# 4ビットモデルの場合、float16が一般的に使用されます。
# GPUがbfloat16をサポートしている場合(例: Ampereシリーズ以降)、それも使用できます。
model_dtype = torch.float16
print(f"デバイス '{device}' と dtype '{model_dtype}' でモデルとトークナイザーをロード中 '{model_id}'...")
# トークナイザーをロード
# マージ/ファインチューニングされたモデルの場合、model_idからトークナイザーをロードするのが標準です。
tokenizer = AutoTokenizer.from_pretrained(model_id)
# トークナイザーのパディングを設定(Gemmaモデルにとって重要)
if tokenizer.pad_token_id is None:
print("トークナイザーの `pad_token_id` が None です。`eos_token_id` に設定します。")
tokenizer.pad_token_id = tokenizer.eos_token_id
if tokenizer.pad_token is None: # pad_token文字列もNoneの場合、設定
print("トークナイザーの `pad_token` が None です。`eos_token` に設定します。")
tokenizer.pad_token = tokenizer.eos_token
# 生成用に左パディングを使用
tokenizer.padding_side = 'left'
print(f"トークナイザー設定済み: pad_token_id={tokenizer.pad_token_id}, padding_side='{tokenizer.padding_side}'")
print(f"特殊トークン: BOS='{tokenizer.bos_token}' (ID: {tokenizer.bos_token_id}), EOS='{tokenizer.eos_token}' (ID: {tokenizer.eos_token_id}), PAD='{tokenizer.pad_token}' (ID: {tokenizer.pad_token_id})")
# モデルをロード
# device_map="auto" は、GPUが利用可能な場合はGPUに、そうでない場合はCPUにモデルを配置します。
# サポートされているハードウェアでは、より良いパフォーマンスのために以下を試すことができます:
# attn_implementation="flash_attention_2"
# ただし、FA2が利用可能/インストールされていない場合、"eager" は安全なデフォルトです。
try:
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=model_dtype,
device_map="auto",
attn_implementation="eager", # 安全なデフォルト、サポートされている場合は "flash_attention_2" に変更可能
)
model.eval() # モデルを評価モードに設定
print(f"モデルが正常にロードされました: {model.device}")
except Exception as e:
print(f"モデルのロード中にエラーが発生しました: {e}")
print("十分なVRAM/RAMと必要なライブラリ(4ビットの場合はbitsandbytesなど)があることを確認してください。")
model = None # モデルのロードに失敗した場合、以降の実行を防ぐ
if model:
# システムプロンプト: モデルの出力形式とペルソナを導くために不可欠
system_prompt = """
seovocオントロジー(https://w3id.org/seovoc/、schema.orgを拡張)に精通した専門家SEOアナリストとして行動してください。
提供された入力に基づいて、指定されたSEOタスクを実行します。
指定されたXML形式で分析と提案を出力してください:
<reasoning>
段階的に推論を説明してください。関連する場合、seovoc/schema.orgの概念を使用してステップを正当化してください。
</reasoning>
<answer>
要求された形式で最終的な簡潔な回答のみを提供してください。
</answer>
"""
# ユーザープロンプトの例
user_prompt = "地元の営業時間、住所、電話番号をリストするウェブページに適したschema.orgタイプを提案してください。"
# チャットテンプレートを使用してメッセージをフォーマット
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt},
]
# チャットテンプレートを適用し、トークン化
# Gemmaのような指示モデルでは、add_generation_prompt=Trueが重要
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True, # Gemma指示モデルにとって重要
tokenize=True,
return_tensors="pt"
).to(model.device) # 入力がモデルと同じデバイスにあることを確認
# 生成設定
# 決定論的な出力(貪欲デコード)の場合、do_sample=Falseを設定。
# do_sample=Falseの場合、temperatureとtop_pは無視されます。
gen_config = GenerationConfig(
max_new_tokens=512,
do_sample=False,
pad_token_id=tokenizer.pad_token_id,
# eos_token_idが正しく設定されていることを確認。
# Gemmaの主要なEOSは1(<eos>)。指示モデルは106(<end_of_turn>)も使用する場合があります。
# 利用可能な場合はtokenizer.eos_token_idを使用し、それ以外の場合はデフォルトで1を使用するのが堅牢なアプローチです。
eos_token_id=tokenizer.eos_token_id if tokenizer.eos_token_id is not None else 1,
# オプション: 必要に応じてbos_token_idを明示的に設定することもできますが、通常はテンプレートで処理されます。
# bos_token_id=tokenizer.bos_token_id if tokenizer.bos_token_id is not None else 2,
)
# より創造的/多様な出力のためにサンプリングを有効にする場合:
# gen_config = GenerationConfig(
# max_new_tokens=512,
# do_sample=True,
# temperature=0.6, # ランダム性を調整
# top_p=0.9, # 核サンプリング
# pad_token_id=tokenizer.pad_token_id,
# eos_token_id=tokenizer.eos_token_id if tokenizer.eos_token_id is not None else 1,
# )
# ストリーマーを使用して進行中の出力を表示
text_streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
print(f"\n--- SEOcrate 01の出力: プロンプト '{user_prompt}' ---")
with torch.no_grad(): # 推論のための勾配計算を無効化
_ = model.generate(input_ids=inputs, generation_config=gen_config, streamer=text_streamer)
print("\n--- 出力終了 ---")
else:
print("モデルのロードに失敗したため、生成をスキップします。")
SEOcrate 01をライブで試す! <<< テスト準備完了?
セットアップなしでモデルをテストしたいですか?簡単に使用できるGoogle Colabノートブックを準備しました:
上記のバッジをクリックしてノートブックを開き、独自のSEOプロンプトを入力してSEOcrate 01の動作を確認してください。
推論の例
以下は、SEOcrateがさまざまなSEO関連のプロンプトにどのように応答するかの例で、その推論プロセスと構造化された出力を示しています。
プロンプト1: 内部リンクの提案
ユーザープロンプト: 「The Ultimate Guide to On-Page SEO」という新しいブログ記事があります。また、「Keyword Research for Beginners」、「Writing SEO-Friendly Content」、「Understanding Technical SEO Audits」という既存の記事もあります。新しい「On-Page SEO」ガイドにこれらの既存記事から関連性のある内部リンクを2つ提案してください。
SEOcrateの出力:
<reasoning>
ここでの目標は、ユーザーエクスペリエンスを向上させ、エンゲージメントを高め、検索エンジンに関連性を信号するために、既存のコンテンツに戦略的にリンクすることです。「The Ultimate Guide to On-Page SEO」投稿に利益をもたらすリンクを選択する必要があります。
「Keyword Research for Beginners」: この記事には、関連するキーワードを特定する方法に関する基礎情報が含まれている可能性があります。オンページSEOは適切な用語をターゲットにするためにキーワード調査に大きく依存しているため、「On-Page SEO」ガイドからこの記事にリンクすることは理にかなっています。これは直接的で価値のあるつながりです。
「Writing SEO-Friendly Content」: この記事はおそらく、キーワードを自然にコンテンツに組み込むためのベストプラクティス、見出しの最適化、読みやすさと検索エンジンの可視性を向上させる他の要素についてカバーしています。「On-Page SEO」ガイドからこの記事にリンクすることで、コンテンツ自体がオンページSEOにとって重要であることを強化します。
私は、オンページSEOがなぜ重要か、そして既存の記事がオンページSEOの成功にどのように貢献するかを示すリンクを優先しています。これは、ユーザーの意図に対応する価値のある、役立つコンテンツを提供する原則と一致しています。
</reasoning>
<answer>
「The Ultimate Guide to On-Page SEO」に含めるべき2つの関連内部リンク:
リンク先: 「Keyword Research for Beginners」 使用するテキスト: 「オンページSEOの取り組みで適切なキーワードをターゲットにするために、堅実なキーワード調査戦略から始めましょう。関連する用語を見つける方法を学ぶ: [「Keyword Research for Beginners」へのリンク]」
リンク先: 「Writing SEO-Friendly Content」 使用するテキスト: 「オンページSEOはキーワードだけではありません – 検索エンジン向けに最適化され、かつ魅力的なコンテンツを作成することです。パフォーマンスを発揮するコンテンツの書き方を発見: [「Writing SEO-Friendly Content」へのリンク]」
</answer>
プロンプト2: E-E-A-T評価
ユーザープロンプト: 新しいブログが暗号通貨投資に関する記事を公開しています。GoogleのE-E-A-T信号を改善するために取ることができる3つの主要なアクションは何ですか?
SEOcrateの出力:
<reasoning>
新しい暗号通貨投資ブログがGoogleのE-E-A-T(Experience, Expertise, Authoritativeness, Trustworthiness)信号を改善する方法を分解しましょう。E-E-A-TはGoogleでのランキングにますます重要であり、特に暗号通貨のような誤情報や詐欺が蔓延しているトピックでは重要です。以下は段階的なアプローチです:
実践的な投資経験(具体的には投資の実践経験)を示すことに焦点を当てる: 新しいブログであるため、作成者の個人的な経験が重要です。Googleは、作成者がトピックに関連する何かをしたコンテンツを優先します。これは彼らが何を考えたかだけでなく、どのように投資したかを示すことです。
徹底的な調査と明確な説明を通じて専門知識を構築する: 暗号通貨は複雑です。ブログは、技術、市場、および関連するリスクについての深い理解を示す必要があります。これは、広範な調査、信頼できる情報源(他の暗号通貨ブログだけではない!)の引用、初心者にも明確に概念を説明することを意味します。
信頼できる情報源としての権威性を確立する: これは、ブログ自体が暗号通貨投資コミュニティ内で信頼できる情報源として知られるようになることです。これは、一貫した高品質のコンテンツ、積極的なエンゲージメント、そしておそらく他の信頼できる情報源での言及を通じて達成されます。
透明性とリスク開示を通じて信頼性を強調する: 特に重要なのは、ブログが潜在的な利益相反(例: アフィリエイトリンク)について透明であり、暗号通貨投資に関連するリスクを明確に開示することです。これは信頼を構築するために不可欠です。
これらを考慮して、私はこれらのE-E-A-T要因に直接対応するアクションに焦点を当てます。
</reasoning>
<answer>
新しい暗号通貨投資ブログがE-E-A-T信号を改善するために取ることができる3つの主要なアクション:
個人の投資結果を共有する(注意点付き): ブログは、特定の暗号通貨投資について詳細に記述した記事を公開するべきです。投資の根拠、投資額、結果(プラスとマイナスの両方)を含めます。重要なのは、免責事項を付けることです:「これらは私の個人的な投資であり、結果はあなた自身のものとは異なる場合があります。暗号通貨投資は非常にリスクが高いです。」これは経験を示します – 彼らは実際に資本をリスクにさらしました。これは強力な信号ですが、読者を誤解させないように注意深く扱う必要があります。
信頼できる情報源を引用し、詳細な調査を提供する: 各記事は、信頼できる情報源からの研究に裏付けられるべきです – 他の暗号通貨ブログだけではありません。これには、ブロックチェーンプロジェクトのホワイトペーパー、金融機関のレポート、規制当局の提出書類、または学術研究が含まれる可能性があります。ブログは、これらの情報源がなぜ関連性があり信頼できるのかを説明するべきです。例: 「[プロジェクト名]のSEC提出書類によると、...」これは専門知識を示します。
明確で包括的なリスク開示ポリシーを実施する: ウェブサイト上に、暗号通貨投資に関連するリスク、潜在的な損失、詐欺、規制の不確実性について概説する専用ページを作成します。このページは簡単にアクセスでき、定期的に更新されるべきです。これは信頼性を確立するために不可欠であり、責任ある情報共有への取り組みを示します。これは投資について議論するすべてのページで目立つように表示されるべきです。
</answer>
評価(予備的なPoC結果)
初期の定性的評価では、このPoCモデルが以下を示しました:
- 必要なXML出力形式への良好な準拠。
- スキーマ提案やメタ説明の最適化などのタスクにおける基本的なSEO概念の有望な適用。
- 関連するSEO/オントロジー用語を暗黙的または明示的に参照する推論ステップのインスタンス。
ただし、最先端のモデル(GPT-4oなど)と比較した場合の性能ギャップが明らかでした:
- SEOコンテキスト内での複雑なエンティティ識別。
- より深い理解を必要とする微妙なスキーマ選択。
- マルチステップの数値推論(例: クエリトレンド分析)、形式の準拠が時々失敗。
LLM-as-a-Judge(Gemini 1.5 Pro)のスコアはこれを反映し、より単純で構造化されたタスクでの強いパフォーマンスと、複雑な推論とストレス下での厳密な形式準拠に関する低いスコアを示しました。
方法論と評価の詳細は、Knowledge Graph Conference(KGC)2025で発表されました。
意図された使用と目的
このモデルは、研究と実験目的のみのためのコンセプト実証としてリリースされています。
- 主な使用目的: 専門ドメイン推論のためのオントロジー誘導型強化学習とLLMを組み合わせる可能性を実証するため。
- 二次的な使用目的: この方法論をさらに探求することに興味のある研究者や開発者のためのベースラインまたは出発点として機能するため。
- 意図されていない使用: 重要なさらなる開発、テスト、検証なしに、本番SEOワークフローで直接使用すること。
制限とバイアス
- データセット: 小規模(約1k例)、合成データセットでトレーニングされています。多様な現実世界のSEOの複雑さにうまく一般化しない可能性があります。品質は合成データ生成と報酬スコアリングプロセスに大きく依存します。
- 推論の品質: もっともらしいが誤ったまたは表面的なSEOアドバイスを生成する可能性があります。オントロジー誘導は整合性を改善しますが、すべての場合において事実の正確性や深い戦略的洞察を保証するものではありません。
- オントロジーの基盤: モデルの
seovoc
の理解は操作的(報酬信号を通じて学習)であり、深く本質的または象徴的ではありません。 - バイアス: ベースGemmaモデルまたは合成データ生成プロセスからの潜在的なバイアスが残る可能性があります。
- 検証が必要: 出力は常に専門家のSEO知識と公式ドキュメントで検証してください。
今後の方向性とコラボレーション
このPoCは最初の一歩です。私たちは、基礎モデル、豊富なドメインオントロジー、誘導型RLを組み合わせたこの「レシピ」が大きな可能性を秘めていると考えています。 私たちはこの方法論を反復し、SEOntologyを改良し、RLプロセスを改善し、より大きなデータセットとモデルを探求する予定です。 フィードバック、提案、貢献を歓迎します! 関連プロジェクトのGitHub issues/discussionsを使用するか、著者に連絡してください。
免責事項
このモデルは責任を持って使用してください。著者はその出力に基づいて行われた決定について一切の責任を負いません。これは方法論を示す研究アーティファクトです。
謝辞
- この作業は、Google CloudのGPUクレジットのおかげで可能になりました。
- Agentic SEOとMarketing Automationの境界を押し広げるWordLiftチームによって開発されました。
- GoogleのGemma 3モデルと効率的なファインチューニングのためのUnslothライブラリを基に構築されています。
- schema.orgとSEOntology(seovoc)の概念を活用しています。
- 方法論はKnowledge Graph Conference 2025(KGC)で発表されました。



