🎄

オンデバイス LLM で、サポートボットを作るための RAG のチューニングを検証してみた。

に公開

オートロ株式会社の代表をしております福田です。オートロとオープン株式会社でLLMの研究開発を行っております。

今回は、オンデバイスで実行できる LLM で RAG のチューニングをしてみました。題材は、オートロのサポートサイトドキュメント を情報源としたサポートチャットボットです。

Embedding モデルも API を利用しないオンデバイスで実行できるもので試しました。これにより、機微な情報を取り扱う必要があるケースでもプライバシーに配慮したエージェントが作成できるようになります。

1. 概要

1.1 目的

本実験の目的は、サポートセンター業務の一部を自動化するための技術的検証を行うことです。具体的には、ユーザーからの問い合わせに対してサポートドキュメントから適切な情報を抽出し、自然言語で回答を生成する仕組みを構築・評価しました。

1.2 実験内容

以下の4つの技術的要素に関して、比較評価しました。

  • Embeddingモデル(ベクトル生成の精度)
  • 検索手法(ベクトル検索 vs ハイブリッド検索)
  • 大規模言語モデル(LLM)の性能
  • 取得チャンク数

1.3 結論

  • Embeddingモデル:ruri-v3-30m
  • 検索手法:ハイブリッド検索
  • LLM:gemma-3-12b-it (4bit量子化)
  • 取得チャンク数:3

この組み合わせにより、検索精度83.33%、回答妥当性83.33%というパフォーマンスを達成しました。

2. 実験設定

2.1 データセット

検索用データ

評価データ

30問の想定問答で検証しました。

data set
カテゴリ クエリ 記事タイトル 想定回答
はじめての方へ AUTOROの特徴を教えて AUTOROは、どのようなサービスですか? AUTOROの特徴として以下のような項目が挙げられます。 ・ブラウザが動作するすべての環境で利用することができる ・非プログラマからスペシャリストまで使いやすい ・GUIによるドラッグ・アンド・ドロップでの設定できる ・Yaml形式での設定をサポート ・ユーザー管理が簡単に行うことができる ・導入コストを低く抑えることができる ・クラウド型だからPCを占有しない ・スケジュール実行できるから24時間365日動かすことができる
はじめての方へ 利用料金はどれくらいですか 利用料金はいくらですか? Liteプランは月額5万円よりご利用いただけます。 組織管理やVPN接続など、ニーズに合わせたプランもございます。 詳しいお話をご希望の際は、こちらより面談の設定が可能となっております。 ※表記の価格は税抜です。
はじめての方へ 問題が解決せず困っています 問題が解決しない場合にはどうすればいいですか? 左下の黒いボタンから、チャットにてサポートにお問い合わせください。
はじめての方へ ChatGPTと連携できますか 外部システムや他社サービスと連携出来ますか? はい、連携できます。 現在連携できる他社サービスとして、以下のサービスがございます。 DropBox DropBoxFullAccess GoogleDrive OneDrive Box Amazon S3 Gmail Gmail for Google Workspace Google Spreadsheet Google Docs Google Calendar Google Analytics Serach Console Google Ads Facebook Ads Slack Github Google Cloud Storage BigQuery Chatwork Trello Cloudsign Excel ExcelOnline Outlook Microsoft Teams Message Salesforce Yahoo Ads Twilio Twitter Ads Apple Search Ads TikTok Ads HubSpot kintone Zoho CRM ChatGPT (2023年5月現在)
はじめての方へ ワークフローの上限はいくつですか 作成できるワークフロー数に制限はありますか? すべてのプランにおいて、作成可能ワークフロー(シナリオ)数には制限をかけておりません。 現在、Liteプランを含むすべてのプランにおいてワークフローの作成可能数に上限を設けておりません。 ※ロボットの起動時間、アカウント数、プロジェクト数はプランによって制限が存在します。それらに関しましては、ご契約のプランをご確認ください。
使い方ガイド ワークフローとはなんですか ワークフロー 端的には、ロボットが実行する作業、およびその手順書をワークフローと呼びます。 より砕いて言うと、「やる主体(ロボット)」と「やること(ワークフロー)」の違いです。 ロボットは「やること(ワークフロー)」を順番に処理していきます。
使い方ガイド ワークフローの作り方を教えて下さい ワークフローの新規作成 ワークフローは以下の手順で作成できます。  1. プロジェクトの「フォルダー画面」または「ワークフロー一覧画面」を開く  2. 「+追加」または「ワークフローを作成」をクリック  3. ワークフローの新規作成方法を選択  4. ワークフローの詳細を入力  5. 「作成」ボタンをクリック  6. 作成できたプロジェクトを確認
使い方ガイド ファイルのダウンロードが失敗する場合どうすれば良いですか ファイルのダウンロード(応用編) ファイルのダウンロードがうまくいかない場合は、まず最初に「GetDownloadFilesの実行結果にファイル名が表示されているか?」を確認します。 ファイル名が表示されていない場合は、解決のために以下の点を確認していきます。  クリックアクションの確認  ダウンロード時の挙動の確認  ダウンロード待機時間の延長  各設定は正しいように見えるがダウンロードされない
使い方ガイド Excelファイルから情報を読み込む方法を教えて Excelファイルを取得・編集し、変更を保存する 下記手順にてワークフローを設定します。 今回は、AUTOROのローカルストレージに存在するExcelファイルを取得します。 このために、「ファイルを取得する(GetFile)」アクションを使用します。 ・「ストレージプロバイダ」に、Local(AUTORO)を指定 ・「ファイル」に、任意のExcelファイルを指定 次に、取得したファイルから、編集したいシートを選択・取得します。 「シートを選択する(SelectSheet)」アクションを使用して、各パラメータを下記画像のように指定します。 最後に、範囲を読み込む(ReadRange)」アクションを使用してデータを取得します。f
使い方ガイド エラーが発生した時に通知するようにしたい エラー通知 AUTOROでは、ワークフローにエラーが発生した際に、コラボレーター(プロジェクトに登録されているメンバー)にメールで通知を送付することが可能です。 下記手順にて通知設定をします。  通知先の設定 「ワークフローの編集ボタン」をクリックします。 「通知先」を選択します。 「更新」をクリックします。 通知先に、以下の情報が記載されたメールが送信されます。 プロジェクト名 ワークフロー名 セッションID セッションログのURL(詳細を確認するボタンのリンク)
よくあるご質問 パスワードを忘れてしまいました パスワードの変更・パスワードを忘れた場合の再設定 ログイン画面の「パスワードを忘れた方はこちら」ボタンから変更できます。 「パスワードを忘れた方はこちら」をクリックすると、ご登録のメールアドレス宛にパスワードリセット用のメールが送信されます。 パスワードリセット用のメールは以下のような文面となっています。 「パスワードを再設定する」をクリックし、パスワードを再設定してください。
よくあるご質問 エラーの解決を手伝ってほしい サポートチームへのご質問方法 お問い合わせ時に、以下のような情報をご共有いただけると、回答がスムーズとなります。  1. エラーに関するお問い合わせ エラーの内容(ログ上のエラーメッセージ)と発生しているアクションをお伝えいただけるとスムーズな回答が可能となります。 エラーが発生しているアクション名 エラー文または、ログ画面に表示されているエラーのスクリーンショット なお、「エラー解消のために詳細な確認が必要」「開発チームへの改修依頼が必要」と判断した場合、下記の情報を追加でお伺いさせていただくことがあります。 エラー発生日時 エラーが発生したワークフローのID エラーが発生したセッションのID ワークフローの実行モード ワークフローのYAMLコード 利用しているシステムへの弊社メンバーのログイン可否 ワークフローIDの確認方法 ワークフローを開いている画面のURL中、末尾の数字がワークフローIDとなります。 セッションIDの確認方法 セッション画面から確認できます。
よくあるご質問 エラーを事前に防ぐために注意すべきことはありますか AUTORO導入後のFAQ エラーが発生しないようにRPAを作成する際のポイントは以下の通りです。 1. 小さなステップで作成してテスト RPAを一気に作るのではなく、少しずつアクションを追加し、都度テストを行うことで、問題点を早期に発見しやすくなります。 2. 待機時間の利用 ブラウザやアプリの反応時間の遅延を考慮し、画面が切り替わるきっかけになるアクションの後に一定の待機時間を設定することでエラーを回避します。 アクションに実行前/後待機の設定欄がない場合は、Waitアクションをご使用ください。 3. 条件分岐の網羅 事前に様々な状況や条件を考慮し、それに応じてワークフローを分岐させることで、エラーを未然に防ぐことができます。 4. 開発を行った人以外のテスト 見落とされているバグや問題点を第三者が指摘することができます。 また、エラーの検知にはTryアクションを使用します。こちらによって予期せぬエラーが発生した際に、適切に通知・対応できるようにしておくことができます。 ただし、エラーは完全には避けられないものであるという考え方をしておく必要があります。 見落としが無いように注意して作ったワークフローも、サイトの変化や取りうるパラメータの変動など、新たな要因によってエラーが発生することが考えられます。 エラーが起きた際にその原因や影響範囲が分かりやすいように設計し、必要に応じてすぐに保守対応ができる体制を整えることが重要です。
よくあるご質問 Error: 400 Bad Requestの解決方法を教えて よくあるエラー集 Error: 400 Bad Requestが発生する原因は、 [400 Bad Gateway] リクエストの形式に問題があるため、サーバーへのリクエストに失敗したことです。一般的な解決方法は、アクションのパラメーターに入力されている値が正しい形式か確認することです。
よくあるご質問 画面が白いままで、AUTOROにログインできない時はどうすれば良いですか AUTOROにログインできません 以下をお試し/ご確認ください。 開いているブラウザを全て閉じてから、再度AUTOROへアクセスし、ログインすることをお試しください。 インターネット接続や通信状況が確保されているか、ご確認ください。(通信環境に問題がある場合、AUTOROへログインできない場合があります) ブラウザのキャッシュの削除もお試しください。
ワークフロー作成例 ワークフロー作成におけるブラウザの開き方を教えて下さい。 ブラウザを操作する AUTOROでブラウザ操作を行うためには、最初にOpenBrowserアクションでブラウザを開く必要があります。 以下の手順で進めてください。 1.OpenBrowserを設定する ・アクション一覧から、「OpenBrowser」をクリックします。 ・クイックガイドに、概要説明、各設定項目の説明が表示されるのを確認します。 ・動画を参考に、「OpenBrowser」を真ん中にドラッグ&ドロップしてください。 ⇒ドロップするとカード形でアクションが設定されます。 2.パラメータを設定する ・URLパラメータに https://ja.wikipedia.org と入力してください。 ・コメント欄にコメント(アクションの詳細)を入力します。 3. RPAを保存/実行する ・クイックガイドの下の青い「保存」ボタンをクリックします。 ・保存が完了したら「実行」ボタンをクリックしてください。RPAが実行されます。 ※「実行」を押すと設定が自動保存されます。 ・ブラウザのスクリーンショットが表示されればRPAの実行完了です。
ワークフロー作成例 CSVを表計算ソフトに転記するワークフローを作成するために必要な準備を教えて下さい。 CSVを表計算ソフトに転記する まず最初に、書き込み先のブック等の準備と連携設定が必要になります。 1.書き込み先のシート等を用意 AUTOROの書き込み用に、表計算ソフトのシート等を用意してください。 ※以下ワークフローの設定例では、新規に作成したシート(何も書き込まれていない状態)を使用していますが、既存のものでも基本的な手順は変わりません。 2.AUTOROにコネクション連携を追加する (既にコネクション登録済みの方はスキップしてください) GoogleSpreadsheeet、OneDrive(使用するシートが保存されている場合)等を使用する場合は、コネクション連携の追加が必要です。 方法はこちらをご参照ください。
ワークフロー作成例 画像から文字を抽出するワークフローの例を教えて下さい。 画像データからのテキスト取得(OCR) 以下が、画像からテキストを取得するワークフロー例です。 弊社HP内のある画像を取得し、その画像内からテキストを取得する。 1. ブラウザを開く ・「ブラウザを開く」アクションを設定します。 ・URLに以下を入力します https://autoro.io/request/wp-compliance-form/ 2. 要素のスクリーンショットを取る テキストの抽出元となる画像を撮影します。 ・「TakeElementShot(要素のスクリーンショットを取る)」アクションを設定します。 ・CSSセレクタに以下を指定します。 div#__layout div.c-item-form__head (画像位置を右クリックし、CSS Selectorを取得します。) ・アクションの詳細設定を開きます。 ・実行前待機に3000を指定します。 3. 画像からテキストを検出する ・TextDetection(画像からテキストを検出する)を設定します。 ・画像ファイルパラメータに、TakeElementShotのアウトプットを指定します。 ・他のパラメータ(モード選択、テキストのみ)は編集せず、そのままとします。 4.任意. 改行の除去 今回の例の場合、TextDetectionのアウトプット(文字列)には、改行が入っています。(本ページ下部のワークフロー実行結果を参照ください) この改行は、以下の方法で削除できます。 ・ReplaceText(検索して置換)を設定します。 ・検索対象に、TextDetectionのアウトプットを指定します。 ・検索クエリに、\nを入力します(改行記号)。 ・置き換えるテキストには、何も入力しません(これにより、削除されます)
ワークフロー作成例 PDFを結合するワークフローの作成方法を教えて下さい。 PDFを結合する 複数のPDFを1つに結合する方法は以下の3つです。 ・繰り返しを使わずに2つのPDFを結合する ・ブラウザからダウンロードした複数のPDFファイルを結合する ・繰り返しを使って複数のPDFファイルを結合する(ブラウザを使用しない)
ワークフロー作成例 検索結果のスクレイピングができなくなったのですが、なぜですか。 検索結果のスクレイピング 現在はGoogleでの検索を利用することはできません。(2025/2/12時点) Google検索サービスのロボット判定強化により、AUTOROからの検索についても検索結果が表示されなくなりました。 別の検索エンジンを利用するか、Web検索アクションをご利用ください。
アプリから探す スプレッドシートとの連携方法を教えて下さい。 Google Spreadsheetとの連携 下記手順にてコネクションを作成します。 1. コネクションページでの操作 まず、AUTORO側でコネクション作成の準備を行います。 ・「コネクション」のページを開きます。 ・「アプリケーションを追加」をクリックします。 ・「Google Spreadsheet」のカードを選択します。 2.Google認証 続いて連携するアカウントでGoogle認証をいたします。 ・Googleのログインページに遷移します。 ・すでにログイン済みの場合は連携するアカウントを選択してください。 ・Googleの認証ページが表示されます。 ・「許可」をクリックして認証を完了します。 3. コネクションカードを確認 Google認証が完了すると、コネクションページのアプリ連携の項目にGoogle Spreadsheeetのコネクションカードが追加されます。
アプリから探す Outlookのメール送信で複数の宛先をToに指定する方法を教えて下さい。 Outlookでのメール送信 クラウド版のみ、CCやBCCと同様にtoに対しても以下の形式で複数アドレスへ送信ができます。 ・カンマ区切り ・配列形式 現状、デスクトップ版では複数アドレスへの送信ができません。 なお、運用案として送信先リストを作成し、ForEachアクションで1件ずつ送信することは可能です。 設定方法についてはこちらをご参照ください。
アプリから探す Slackで改行したメッセージを送る方法を教えて下さい。 Slackにメッセージ送信 以下の2つの方法があります。 ①Textアクションで本文を作成する(推奨) Textアクションで文章を作成して、 アウトプットをSendSlackMessageアクションの「本文(body)」に指定します。 Textアクションは入力された文章の改行表現を保持する(Enterを押したところで改行される)ため、 通常のメールエディタと同じ感覚で文章を作成できます。 ②SendSlackMessageアクションの「本文(body)」で本文を作成する SendSlackMessageアクションの「本文(body)」で改行を表現する場合、 ${“\n”}(改行コード)を使う必要があります。 段落の表現のため、改行して1行空ける時にも、改行コードが1つ必要になる点にご注意ください。
アプリから探す AUTOROでChatGPTを使用する方法を教えて下さい。 ChatGPTを使用する AUTOROでは、ChatWithGPTアクションを用意しています。 このアクションに命令文(プロンプト)を入力すると、ChatGPTが返答します。 ※2023-05-15現在、使用されているモデルはOpenAIのGPT-3.5-turboモデルとなります。
アプリから探す Gmailで添付ファイルをダウンロードする方法を教えて下さい。 Gmailからのメール取得 GmailGetと併せて、 「GmailGetAttachments(添付ファイルをダウンロード)」アクションの設定が必要です。 こちらで設定方法を紹介しているので、ご確認ください。
アカウント・管理者設定 一般編集者にプロジェクトの新規作成の権限はありますか? 権限一覧表 一般編集者にプロジェクトの新規作成の権限はありません。
アカウント・管理者設定 プロジェクトの作成できる上限数を教えて下さい。 プロジェクトの新規作成 作成できるプロジェクトの数には上限があります。 上限は組織ごとに異なります。契約内容をご確認の上、計画的に作成してください。 ※プロジェクト作成数を増やしたい場合には、CSチームまたは営業担当へお問い合わせください。
アカウント・管理者設定 AutoroLinkとは何ですか。 AutoroLink AutoroLinkとは、SSHトンネルを利用して、AUTOROのネットワークとユーザー様の社内ネットワークを繋げることができる、インストール型のデスクトップアプリケーションです(Windows/Mac対応)
アカウント・管理者設定 個人情報などのデータは暗号化されていますか。 保存データは暗号化されていますか? ユーザーの個人情報、パスワード等の保存データは暗号化されています。
アカウント・管理者設定 契約プランの変更方法について教えて下さい。 組織管理画面の説明 契約プランの項目では、契約中のプラン内容を確認することができます。 契約内容を変更された場合は、変更内容が適切に反映されているかご確認ください。 プラン変更については、弊社CSチームまたは営業担当へお問い合わせください。

2.2 システム構成

前処理フロー

  1. ファイル読込
  • XMLやMarkdownファイルからテキスト抽出(LangChainやBeautifulSoupを使用)
  1. チャンク分割
  • 文書を文書単位、1500トークン単位で分割
  • オーバーラップを300トークンで設定
  • 検索一致を確認するメタ情報としてチャンクタイトルを付与
  1. ベクトル化
  • 各チャンクをEmbeddingモデルによりベクトル変換
  1. Vector Store登録
  • ChromaベースのVector Storeにてインデックス作成・格納

質問応答処理フロー

  1. ユーザークエリをEmbeddingモデルでベクトル化
  2. Chromaで類似チャンクをTop-k(上位k項目)で検索
  3. 検索結果をプロンプトに付与し、LLMへ入力
  4. LLMによる回答生成

2.3 評価指標

  1. 検索の再現率(Recall)
  • 目的の文書・チャンクが検索結果に含まれているか
  • クエリごとに期待されるチャンクタイトルとの一致率をTop-kで測定
  1. 回答の妥当性
    • LLMにより生成された回答の精度について、以下の点を考慮して人手により主観的に評価
      • 回答内容が質問に対して適切であるか
      • 簡潔に回答できているか
      • 日本語で回答できているか
      • 指示語などが不自然ではないか
    • 平均回答時間(秒)

2.4 検証項目

今回は、4つの技術的要素について比較検証を行いました。

  • 検索に影響を与える要素
    • Embeddingモデル(ベクトル生成の精度)
    • 検索手法(ベクトル検索 vs ハイブリッド検索)
  • 回答に影響を与える要素
    • 大規模言語モデル(LLM)の性能
    • 取得チャンク数(3 vs 5)

また、基準となるベースラインモデルを以下のように設定し、検証が終わった項目から最適だと思われる設定に変更を行ってから、次の検証に移行しました。

項目 ベースラインモデル
Embeddingモデル multilingual-e5-large-instruct
検索手法 ベクトル検索
LLM Qwen2.5-7B-Instruct(4bit量子化)
取得チャンク数 5

3. Embeddingモデルの比較

3.1 モデル一覧

開発元 モデル名 パラメータ数 特徴
名古屋大学 ruri-v3-30m 30M 日本語特化
名古屋大学 ruri-v3-310m 310M 日本語特化
SB Intutions株式会社 sarashina-embedding-v1-1b 1B 日本語特化
La Javaness bilingual-embedding-large 559M 英語とフランス語のバイリンガルテキストに特化
Microsoft multilingual-e5-large-instruct 560M 100以上の言語に対応した多言語テキスト埋め込みモデル

3.2 評価結果

モデル名 パラメータ数 検索精度
(上位5件検索率)
cl-nagoya/ruri-v3-30m 30M 86.67%
cl-nagoya/ruri-v3-310m 310M 70.00%
sbintuitions/sarashina-embedding-v1-1b 1B 76.67%
Lajavaness/bilingual-embedding-large 559M 83.33%
intfloat/multilingual-e5-large-instruct 560M 70.00%

今回は、最も軽量であるにもかかわらず、最も検索精度の高かった cl-nagoya/ruri-v3-30m を採用しました。

4. 検索手法の比較

4.1 検索手法一覧

検索手法 概要
ベクトル検索 テキストをベクトル化し、意味的な類似度に基づいて検索
キーワード検索 クエリとドキュメントの単語の文字列一致に基づいて検索
ハイブリッド検索 ベクトル検索とキーワード検索を組み合わせて検索

4.2 評価結果

検索手法 検索精度(上位5件検索率)
ベクトル検索 86.67%
キーワード検索 66.67%
ハイブリッド検索 86.67%

今回の検証では、ベクトル検索とハイブリッド検索で検索精度に違いはありませんでした。(検索が成功した問題には一部違いあり。)

一般的には、ベクトル検索よりもハイブリッド検索の方が精度が高くなることが知られているため、今回はハイブリッド検索を採用しました。

5. LLMの比較

5.1 モデル一覧

開発元 モデル名 パラメータ数 特徴
Alibaba Qwen2.5-7B-Instruct 7B(4bit量子化) 多言語対応
東京工業大学 tokyotech-llm-Llama-3.1-Swallow-8B-Instruct-v0.3 8B(4bit量子化) 日本語特化
Google gemma-3-12b-it 12B(4bit量子化) 多言語対応

5.2 評価結果

モデル名 回答精度 平均回答時間(秒) 他と比較した特徴
Qwen2.5-7B-Instruct 36.67% 37.54 回答時間が短い
tokyotech-llm-Llama-3.1-Swallow-8B-Instruct-v0.3 40.00% 48.51 日本語回答率が高い(100%)
gemma-3-12b-it 50.00% 51.96 簡潔な回答が多い

全体的に、パラメータ数が増加するほど、回答精度が上がる一方で、回答時間も長くなる傾向があることが分かりました。ただし、今回は製品を使用したことのない検証者がサポートページをもとに独自に問題を設定し、それに対する回答を検証者自身で評価しているため、回答精度と特徴については主観的な評価になります。

各モデルごとに特徴があるため、実運用をする際には、重要視する項目によって適切なモデルを選択する必要があると感じました。今回は回答が簡潔で分かりやすく、回答精度が最も高いと感じた gemma-3-12b-it を採用しました。

5.3 回答例

質問

ワークフローとはなんですか

想定回答

端的には、ロボットが実行する作業、およびその手順書をワークフローと呼びます。
より砕いて言うと、「やる主体(ロボット)」と「やること(ワークフロー)」の違いです。
ロボットは「やること(ワークフロー)」を順番に処理していきます。

Qwen2.5-7B-Instruct(正解)

ワークフローは、一連のステップやタスクを自動的に実行するためのプロセスまたは手続きです。 AUTOROの場合、ワークフローはロボットが一系列のアクションを順番に実行することで定義されます。

具体的には以下のようになります:

  • ワークフロー:一連のアクション(タスク)を定義し、自動的に実行するためのプロセスです。
  • アクション:ロボットがマウスやキーボード操作をするなど何かを実行する「作業」。複数の入力パラメーターを受け取り、一つの出力を生成します。
  • コントロールタスク:if分岐、for_eachの繰り返しといった条件分岐やループ構造でワークフロー自体を動的に変更するためのもの。

これらは自動化されたタスク群であり、ユーザーが手動で実行しなくても、指定した条件に達すると AUTOROによって自動的に実行されます。

tokyotech-llm-Llama-3.1-Swallow-8B-Instruct-v0.3(正解)

ワークフローは、複数のタスクを順番に実行する手順です。
AUTOROでは、ロボットを使って自動化したい作業をワークフローとして設定します。

例えば、「新しいブログ記事を投稿する」という作業をワークフローにする場合、

  1. Googleドライブから記事のファイルをダウンロードする
  2. ブログプラットフォームにログインする
  3. 記事のタイトルと本文を入力する
  4. 投稿ボタンをクリックする

といった手順を、ワークフローとして設定します。

AUTOROでは、これらのタスクを「アクション」として定義し、それらを順番に実行するように指示します。

ワークフローを作成すると、ロボットが自動的にこれらのタスクを実行し、あなたの代わりに作業を行ってくれます。

AUTOROのワークフローは柔軟で強力です。

  • さまざまなアクションを使うことができます(ファイル操作、Webブラウザ操作、アプリケーション連携など)。
  • 条件分岐や繰り返し処理などの制御機能を使用できます。
  • 変数や関数を使って複雑なロジックを表現できます。

これにより、様々な業務の自動化を実現することができます。

gemma-3-12b-it(正解)

ワークフローは、「やるべきこと(ワークフロー)」を順番に処理するロボットの手順書のことです。

6. 取得チャンク数の比較

6.1 評価結果

取得チャンク数 検索精度 回答精度 平均回答時間(秒)
3 83.33% 83.33% 22.36
5 86.67% 50.00% 52.45

今回の検証では、取得チャンク数を5から3にを減らすことで、検索精度は3.33%(1問分)低下するものの、回答精度は33.33%(11問分)向上し、平均回答時間は約30秒短縮することができました。ただし、今回は検索率が全体的に高いことからもわかるように、質問内容が簡単な問題が多いため、チャンク数を減らした場合でも検索精度の低下が小さかったことが考えられます。また、今回は重要なチャンクの検索順位が高かったため、チャンク数を減らすことによる検索率の低下は最小限に抑えながら、不要な情報を取り除くことができたため、LLMの回答精度の向上と回答時間の短縮に成功したと考えられます。

実運用時には、LLMと同様に、検索精度、回答精度、回答時間を考慮しつつ、重要視する項目によって適切なモデルを選択する必要があると感じました。今回は、回答精度が高かった取得チャンク数3を最適な設定として採用しました。

6.2 回答例

質問

ワークフローの作り方を教えて下さい

想定回答

ワークフローは以下の手順で作成できます。
 1. プロジェクトの「フォルダー画面」または「ワークフロー一覧画面」を開く
 2. 「+追加」または「ワークフローを作成」をクリック
 3. ワークフローの新規作成方法を選択
 4. ワークフローの詳細を入力
 5. 「作成」ボタンをクリック
 6. 作成できたプロジェクトを確認

取得チャンク数3の場合(正解)

ワークフローの新規作成には2通りの方法があります。

  1. 空白のワークフローから作成: ワークフローを0から作成できます。
  2. 作成テンプレートから作成: AUTOROがあらかじめご用意したテンプレートから作成することができます。

新規作成手順は以下の通りです:

  1. プロジェクトの「フォルダー画面」または「ワークフロー一覧画面」を開きます。
  2. 画面右上の「+追加」または一番左上の「ワークフローを作成」をクリックします。
  3. 作成方法を選択します。
  4. ワークフローの詳細を入力します(名前、説明、割当ロボット、ゲートウェイ環境、ロボットタイプ、ブラウザのバージョン、デバッグ実行モード、カラーなど)。
  5. 「作成」ボタンをクリックします。

作成成功すると、新しいワークフローがフォルダー画面の末行に追加されます。

取得チャンク数5の場合(不正解)

AUTOROでワークフローを作成する方法を説明します。大きく分けて以下のステップがあります。

1. ワークフローの準備

  • AUTORO Assistantのインストール: クリック位置の指定などで使用するため、Chromeの拡張機能であるAUTORO Assistantをインストールしてください。AUTORO画面左下の黒い問い合わせボタンからインストールできます。

2. ワークフローの作成

  • 新規ワークフローの作成:
    • 左側のメニューから「フォルダー」をクリックし、フォルダー画面に遷移します。
    • 「[追加] → [ワークフロー作成]」としてワークフローを作成します。
    • また、[参考記事]の「ワークフローの新規作成」も参照してください。
  • ワークフロー編集画面の理解:
    • 作成したワークフローを開き、ワークフロー編集画面を開きます。
    • 画面構成を理解しましょう:
      • ①ワークフロー: ロボットへの指示一覧。上から順番に実行されます。
      • ②検索: アクション・制御タスクを検索できます。
      • ③アクション・制御タスク一覧: ロボットへ指示する各パーツ一覧。
      • ④ガイド/インスペクター: アクションの簡単な説明や実行履歴を確認できます。
      • ⑤表示設定/変数セット: ワークフローの表示設定や変数セットを設定できます。
      • ⑥編集: ワークフローの編集画面を開きます。

3. ワークフローの構築

  • ワークフローの内容を整理:
    • 作りたいワークフローの目標と手順を整理します。
    • 例:「AUTOROのヘルプサイトにアクセスし、ブラウザと一致するページを検索後に、表示されたページのスクリーンショットを撮影する。」
    • 手順を細かく分解します。(例:AUTOROヘルプサイトを開く、検索ワードを入力、検索ボタンをクリック、スクリーンショットを撮影)
  • アクションの追加と設定:
    • 整理した手順に対応するアクションをワークフローに追加します。
    • 例:ブラウザを開く場合は、「OpenBrowser」アクションを使用し、URLパラメーターにヘルプサイトのURLを設定します。
    • アクションを追加する際はドラッグ&ドロップでワークフローに組み込んでください。
  • ワークフローの実行とテスト:
    • アクションを追加したら、ワークフローを実行し、期待通りに動作するかテストします。
    • 問題があれば、アクションの設定や順番を調整し、再度テストします。

補足:

  • アクションの種類: AUTOROには様々なアクションがあります。例えば、ブラウザ操作、キーボード操作、マウス操作など。必要なアクションを選択して使用します。
  • 制御タスク: ワークフローの動作を制御するためのタスクです。例えば、ループ処理、条件分岐など。
  • 変数: ワークフロー内で使用する値を一時的に保存するための仕組みです。

重要な参考資料:

  • [参考記事]の「ワークフローの新規作成」: https://example.com/workflownew (実際のURLはAUTOROのドキュメントを参照してください)
  • ワークフロー設定画面: ワークフローの詳細な設定に関する情報があります。

このガイドは、AUTOROのドキュメントに基づいた概要です。具体的な操作手順や設定方法については、AUTOROの公式ドキュメントを参照してください。

7. まとめ

7.1 ベストな組み合わせ

  • Embeddingモデル:ruri-v3-30m
  • 検索手法:ハイブリッド検索
  • LLM:gemma-3-12b-it (4bit量子化)
  • 取得チャンク数:3

今回はこの組み合わせが、検索精度83.33%、回答妥当性83.33%という最も高いパフォーマンスを達成しました。

7.2 実運用時に検討すべき項目

  • Embeddingモデル
    • 今回の検証から、パラメータサイズが大きいことが必ずしも検索精度の向上につながるわけではないということが分かったため、検索精度が低い場合は幅広いモデルを検証する必要があると考えられます。
  • 検索手法
    • 今回の検証では、検索手法による大きな差異は見られませんでした
  • LLM
    • 使用するモデルのパラメータ数が増加するほど、回答精度が上がる一方で、回答時間も長くなる傾向があると考えられます。
    • モデルによって特徴があるため、重要視したい項目を得意としたモデルを選択することも重要だと考えられます。
  • 取得チャンク数
    • 取得チャンク数を減らすことで、検索精度は低下するものの、平均回答時間は短縮される傾向があると考えられます。
    • 今回のように、重要なチャンクの検索順位が高い場合は、取得チャンク数を減らすことによる検索率の低下を最小限に抑えながら、不要な情報を取り除くことができるため、LLMの回答精度の向上と回答時間の短縮が期待できることが分かりました。
    • 今回の検証から、取得チャンク数と回答精度が密接に関係していると考えられるため、適切なチャンク数を設定することが重要であると考えられます。

おわりに

精度の高いアウトプットを出すためには RAG のチューニングも必要な要素です。今回は、公開できるデータで置き換えたため、評価に使う想定問答が30問だったりして簡略化しています。実運用まで持っていにはより広範なケースで評価する必要があります。

RAG のチューニングでも、精度を高くするためには決定版と言える者がなく参照する情報によって前処理や設定値を変えて調整する必要があります。

弊社では、このようにエージェントの研究・開発を行うエンジニアを募集しています!ぜひご連絡ください。

オープン開発チーム

Discussion