法務に届いた新しい相談について、過去の法律相談と顧問弁護士の意見書から似た相談を探し、当時の回答と根拠を相談番号付きで返す
事業部門から法務に新しい相談が届いたとき、その文面に近い過去の法律相談を探し、当時どう答えたか、何を根拠にしたか、顧問弁護士の意見書があるかを相談番号付きで並べます。担当者は答えを考える前に、過去の自社の判断を一度で見渡せます。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- IT・SaaS/商社/製造/金融
- 対象部門
- 法務
- 対象業務
- 情報検索/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/品質標準化/属人化解消/検索時間短縮
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 事業部門が相談受付のフォームに相談の内容を書いて送る
- 法務部長が担当者を割り当て、相談台帳に受付番号と件名を書く
- 担当者が、台帳の件名を思いつく言葉で検索し、似た相談を探す
- 見つかれば、受付番号を手がかりにメールの受信箱を検索し、当時の回答を探して読む
- 顧問弁護士に照会した相談だったかを、案件のフォルダを開いて確かめ、意見書があれば読む
- 見つからなければ、古参の担当者に「前に似た相談はなかったか」を聞く
- 当時の回答が今回にも当てはまるかを考え、一から調べるか、当時の回答を下敷きにするかを決める
- 回答を書き、事業部門へ送る。台帳に完了日を書く
- 人事業部門が相談受付のフォームに相談の内容を書いて送る
- 自動フォームの送信をきっかけに、相談の文面を受付番号と一緒に取り込む
- 自動相談の文面から、個人名と社外の固有名を検索用の符号に置き換える
- 自動過去の相談の索引を、文面の近さで検索する。問い合わせた担当者の役割で読める記録だけが対象になる
- 自動見つかった上位の相談について、当時の回答・根拠・意見書の番号・回答日・見直しの印を取り出す
- 自動生成AIが、検索で見つかった記録だけを使い、相談番号付きの一覧と、今回の相談との前提の違いを書く
- 自動相談番号と回答日が索引の値と一致するかを確かめる
- 人担当者が一覧を読み、元の回答と意見書を開いて、今回にどこまで使えるかを判断する
- 人回答を書き、事業部門へ送る。どの過去の相談を参考にしたかを記録する
- 自動回答が完了したら、今回の相談と回答を索引に加える
各工程の詳しい説明を読む
- 事業部門が相談受付のフォームに相談の内容を書いて送る
- 法務部長が担当者を割り当て、相談台帳に受付番号と件名を書く
- 担当者が、台帳の件名を思いつく言葉で検索し、似た相談を探す
- 見つかれば、受付番号を手がかりにメールの受信箱を検索し、当時の回答を探して読む
- 顧問弁護士に照会した相談だったかを、案件のフォルダを開いて確かめ、意見書があれば読む
- 見つからなければ、古参の担当者に「前に似た相談はなかったか」を聞く
- 当時の回答が今回にも当てはまるかを考え、一から調べるか、当時の回答を下敷きにするかを決める
- 回答を書き、事業部門へ送る。台帳に完了日を書く
(a)台帳の件名では見つからない。 件名は受付した人が付けた短い言葉で、「キャンペーンの件」「委託先の件」のように中身を表していないものが多くあります。同じ景品の上限の相談が、「Xキャンペーン相談」「プレゼント企画の確認」「景表法の件」という別々の件名で残っています。 言葉が一致しないと、似た相談があっても見つかりません。
(b)回答がメールにしか残っていない。 台帳で相談を見つけても、回答を読むにはメールを探し直します。当時の担当者が退職していると、そのメールボックスごと読めないこともあります。
(c)意見書が別の相談で読み返されない。 顧問弁護士の意見書が案件のフォルダに入ったまま、同じ論点を顧問弁護士に照会し直すことがあります。
(d)同じ相談に違う答えを返す。 担当者が過去の回答を見つけられないと、それぞれが一から考えて答えます。「前は大丈夫と言われた」と言われて初めて、食い違いに気づきます。
(e)古い回答をそのまま使ってしまう。 過去の回答を見つけても、その後の改定に気づかず当時の回答を下敷きにして答えてしまうことがあります。
- 【人】 事業部門が相談受付のフォームに相談の内容を書いて送る
- 【自動】 フォームの送信をきっかけに、相談の文面を受付番号と一緒に取り込む
- 【自動】 相談の文面から、個人名と社外の固有名を検索用の符号に置き換える
- 【自動】 過去の相談の索引を、文面の近さで検索する。問い合わせた担当者の役割で読める記録だけが対象になる
- 【自動】 見つかった上位の相談について、当時の回答・根拠・意見書の番号・回答日・見直しの印を取り出す
- 【自動】 生成AIが、検索で見つかった記録だけを使い、相談番号付きの一覧と、今回の相談との前提の違いを書く
- 【自動】 相談番号と回答日が索引の値と一致するかを確かめる
- 【人】 担当者が一覧を読み、元の回答と意見書を開いて、今回にどこまで使えるかを判断する
- 【人】 回答を書き、事業部門へ送る。どの過去の相談を参考にしたかを記録する
- 【自動】 回答が完了したら、今回の相談と回答を索引に加える
8番目が、この設計の分かれ目です。 一覧に出てくるのは「似た相談の記録」で、答えではありません。担当者は必ず元の回答を開き、回答日と見直しの印を見てから使います。 一覧の要約だけを見て答えると、古い回答を今回に当てはめる失敗(第3章の(e))を、かえって速く繰り返すことになります。
10番目で索引が育ち、次に同じ型の相談が来たときには今回の回答が候補に出ます。
02今回想定するシステム構成
【取り込み】相談の完了(台帳に完了日)/意見書の格納 ▼【トリガー】完了のたび(夜間にまとめて) AWS Lambda ── 相談・回答・意見書を1件の記録にまとめ、分野・回答日・閲覧区分を付ける ▼ Amazon OpenSearch Service(相談の索引。日本語の解析器+閲覧区分) 【受付】相談受付のフォーム(新しい相談の文面) ▼【トリガー】フォームの送信 AWS Lambda ── 個人名・社外の固有名を符号に置き換え、担当者の権限で検索 ▼ Amazon OpenSearch Service ├─ more_like_this:新しい相談の文面に近い過去の相談 ├─ 日本語の全文検索:法令名・制度名などの言葉の一致 ├─ 文書単位の権限:担当者の役割で読める記録だけ └─ 項目単位の権限:意見書の本文は限られた役割だけ ▼ Claude(Amazon Bedrock)── 検索結果だけを使い、相談番号付きの一覧と前提の違いを書く ▼ AWS Lambda ── 相談番号・回答日の照合 ▼ 【担当者が元の回答と意見書を開いて判断】──▶ 事業部門へ回答
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(more_like_this、Sudachi、細かなアクセス制御) | Azure AI Search、Vertex AI Search(Agent Search) |
| 生成AI | Claude(Amazon Bedrock。検索結果を相談番号付きで並べる) | OpenAI API、Gemini API |
| 連携 | AWS Lambda(取り込み、符号化、検索、照合) | AWS Step Functions |
| 保管 | Amazon S3(意見書の原本のPDFと、検索の記録) | ― |
| 受付 | 既存の相談受付のフォームと相談台帳 | ― |
相談受付のフォームと相談台帳は、新しく足すものではありません。 散っている記録を1つの索引に集め、受付のたびに引けるようにするだけです。
索引に Amazon OpenSearch Service を選ぶ理由は、権限の絞り込みを検索の中で行えることです。 細かなアクセス制御(fine-grained access control)はインデックス・文書・項目の単位のセキュリティを提供します。文書単位のセキュリティでは、ロールを作るときにインデックスのパターンと検索の条件を指定し、そのロールに割り当てたユーザーは条件に合う文書だけを見られるとされています。項目単位のセキュリティでは、含める項目か除く項目の一覧を指定でき、項目のマスキングでは項目を消す代わりに値を匿名化できます。
日本語の解析には、Sudachi のプラグインを使います。 公式の一覧では、Sudachi Analysis は日本語向けに推奨とされ、OpenSearch 1.3 以降で使えます。追加で関連付けるオプションのプラグインで、辞書ファイルを関連付け直しても、すぐにはドメインに反映されず、次のブルー/グリーンデプロイのときに更新されるとされています。もう一つの日本語の解析器 kuromoji は、すべてのドメインに含まれています。
似た相談を探すのは、more_like_this の検索です。 公式のドキュメントでは、入力された文書や文章を解析してそれを特徴づける語を選び、その語を含む他の文書を探す検索とされています。新しい相談の文面をそのまま like に入れられるのが、この題材に合っている点です。
03どうやって実装するのか
処理の起点を決める
トリガーは2つあります。 1つは索引を育てるための相談の完了、もう1つは検索を動かすための新しい相談の受付です。
索引への取り込みは、夜間にまとめて行います。 相談台帳に完了日が入った相談と、その日に共有フォルダへ格納された意見書を拾い、記録にまとめて索引に入れます。完了した相談だけを入れ、検討中の相談は入れません。 回答が固まっていない記録が候補に出ると、まだ誰も確かめていない見解が過去の回答のように扱われます。
検索は、相談受付のフォームの送信ごとに1件ずつ動かします。 部長が担当を割り当てる前に一覧ができていれば、「この相談は過去に誰が受けたか」を見て担当を決められます。
担当者が画面から言葉を足して検索し直すこともできるようにします(「業務委託 指揮命令 常駐」など)。この再検索も、担当者自身の権限で行います。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 新しい相談 | 受付番号、相談部門、相談の文面、添付の有無、希望の回答期限 | 相談受付のフォーム |
| 過去の相談の記録 | 相談番号、相談日、相談部門、分野、相談の要旨、回答の本文、回答日、担当者 | 相談台帳とメール(取り込み時にまとめる) |
| 根拠 | 回答で挙げた法令・条項、ガイドライン、社内規程、参考にした過去の相談番号 | 回答の本文から担当者が記入 |
| 顧問弁護士の意見書 | 意見書の番号、照会日、照会の要旨、結論の部分、本文のPDF | 共有フォルダ |
| 見直しの印 | 回答後に関係する法令やガイドラインの改定があり、見直しが要るかの印と、その日付 | 法務部が付ける |
| 閲覧区分 | 一般/人事/内部通報/訴訟・紛争 などの区分 | 法務部長が付ける |
質を決めるのは、下の3つです。 根拠の欄が空だと、一覧に出た回答が何に基づいていたかが分からず、今回にも使えるかを確かめる手がかりがありません。 見直しの印が無いと、古い回答と今も使える回答の区別がつきません。閲覧区分が無いと、検索の段階で権限を絞れません。
見直しの印は、法務部が付けるものです。 どの改定がどの回答に影響するかは、担当者が改定を読んで決めることで、生成AIには判定させません。
データの取得方法を決める
過去の記録は、相談番号を軸に3か所から集めます。
| 取るもの | どこから | どうやって |
|---|---|---|
| 相談番号・相談日・部門・担当・完了日 | 相談台帳 | スプレッドシートの読み取り |
| 回答の本文 | 法務部の共有メールボックス | 件名の受付番号で該当のスレッドを引く |
| 意見書の本文と結論の部分 | 共有フォルダ | フォルダ名の相談番号で紐付け |
| 根拠・見直しの印・閲覧区分 | 相談台帳に足した列 | 担当者・部長が記入 |
回答の本文は、メールのスレッドから「法務部が最後に送った回答」だけを取ります。 途中の確認のやり取りや、事業部門からの追加の質問まで入れると、索引の文面が長くなり、どの部分が回答なのかが分からなくなります。 最後の回答を本文にし、相談の要旨は受付のフォームの文面から取ります。
過去分の取り込みは、最初の1回だけ手間がかかります。 直近3年分から始め、古い記録は参照される頻度を見て足します。 意見書は、結論の段落を別の項目に分け、全文はPDFへのリンクで開く形にします。
AIへ渡す前に整形する
- 符号への置き換え … 新しい相談の文面に含まれる社員の氏名、取引先や個人の顧客の名前を、検索用の符号に置き換えます。名簿と取引先マスタにある名前を照合して置き換え、生成AIに渡す文面には実名を残しません
- 定型文の除去 … フォームの決まり文句(「お疲れさまです」「よろしくお願いします」)と署名を除きます。more_like_this が拾う語にこれらが入ると、中身と関係なく似た相談になります
- 文面の長さの確認 … 文面が極端に短いもの(「至急確認したい件があります」だけなど)は、検索をせず担当者に回します。特徴となる語が取れない文面では、検索結果が当てになりません
- 分野の推定と言葉の補い … フォームで選ばれた分野(契約・広告表示・労務・個人情報など)を検索の重み付けに使います。分野の選択は絞り込みには使いません。 事業部門が選び間違えていると、正しい分野の相談が出なくなるためです
- 取り込み時の記録の整形 … 過去の記録は、相談の要旨・回答の本文・意見書の結論を別々の項目に入れます。相談の要旨だけで似ているかを見る検索と、回答の中の言葉で引く検索を分けられるようにします
- 閲覧区分の付与の確認 … 区分が空の記録は索引に入れません。空のまま入れると、誰の権限でも見える記録になってしまいます
1番目と6番目は、どちらも見せてはいけないものを守る処理です。 1番目は生成AIへ渡す範囲を、6番目は検索で返す範囲を絞ります。どちらか一方だけでは足りません。
AIに処理させる
検索そのものは OpenSearch が行います。 新しい相談の文面を like に入れた more_like_this と、法令名・制度名の言葉の一致を組み合わせ、上位の相談を返します。
| 検索の部品 | 何をするか | 設定の考え方 |
|---|---|---|
| more_like_this | 相談の要旨の項目で、新しい相談に近い記録を探す | min_term_freq の既定は2。短い文面では語が1回しか出ないため、1に下げる |
| 言葉の一致 | 法令名・制度名・ガイドラインの名前で引く | 「下請」「景品」「委託」などの語を含む記録の点数を上げる |
| 文書単位の権限 | 担当者の役割で読める閲覧区分だけを返す | ロールに検索の条件として閲覧区分を書く |
| 項目単位の権限 | 意見書の本文の項目を、限られた役割以外には返さない | 結論の部分は返し、全文は返さない |
more_like_this の既定値は、そのままでは短い相談に合いません。 公式のドキュメントでは、入力の中で出現回数が min_term_freq(既定は2)より少ない語は無視され、出現する文書の数が min_doc_freq(既定は5)より少ない語も無視されます。選ぶ語の数は max_query_terms(既定は25)、一致させる語の割合は minimum_should_match(既定は30%)です。フォームの相談は数行のことが多く、大事な語ほど1回しか出ません。 min_term_freq を1にしないと、肝心の語が落ちます。
unlike に渡した文章の語は、検索に影響させないために使えます。 定型の相談(ひな形の場所を聞くだけなど)が上位を占めるなら、その典型の文面を入れます。
生成AIにさせるのは、検索で見つかった記録の並べ直しだけです。
| させること | 内容 |
|---|---|
| 一覧の作成 | 上位の相談ごとに、相談番号・相談日・回答日・当時の回答の要点・根拠・意見書の有無を並べる |
| 前提の違いの指摘 | 今回の相談の文面と過去の相談の要旨を比べ、書かれている前提の違い(相手が個人か法人か、国内か海外か、金額の規模など)を挙げる |
| 見直しの印の表示 | 印が付いている記録は、その旨と印の日付を先頭に出す |
| 根拠の写し | 回答の本文に書かれた法令・条項・ガイドラインの名前を、本文の表記のまま写す |
| させないこと | 理由 |
|---|---|
| 今回の相談への回答 | 法的な判断は担当者が行う。記録に無い見解を書かせない |
| 過去の回答が今も有効かの判定 | 改定の影響は法務が見直しの印で付ける |
| 根拠の補足 | 回答に書かれていない条項を足すと、当時の根拠が変わる |
| 相談の閲覧区分の判断 | 区分は法務部長が付ける |
| 顧問弁護士への照会の要否 | 費用と時間を伴う判断で、担当者と部長が決める |
いちばん起きやすいのは、2行目と3行目の失敗です。 生成AIは「改正されている可能性があります」と書き添えたり、回答に無い条文を補ったりします。どちらも根拠の無い文が一覧に混ざります。
指示内容を固定する
あなたは法務部の担当者を手伝う立場です。
新しい法律相談に対して、検索で見つかった過去の相談の記録を、相談番号付きで並べ直してください。
今回の相談への回答は書かないでください。
【使ってよい情報】
- 下の「検索で見つかった記録」に書かれていることだけ
- 記録に書かれていない法令・条項・判例・ガイドラインを持ち出さないでください
【1件ごとに書くこと】
1. 相談番号、相談日、回答日(記録の値をそのまま)
2. 当時の相談の要旨(2文以内)
3. 当時の回答の要点(回答の本文から、結論にあたる部分を2文以内で)
4. 根拠(回答の本文に書かれた法令・条項・ガイドライン・社内規程の名前を、表記を変えずに写す)
5. 顧問弁護士の意見書の番号と、意見書の結論(記録にあれば。なければ「なし」)
6. 見直しの印(印があれば「見直し要の印あり」と印の日付。なければ「印なし」)
7. 今回の相談との前提の違い(両方の文面に書かれている事実だけを比べる)
【厳守事項】
- 記録に書かれていない項目は「記載なし」としてください。推測で埋めないでください。
- 当時の回答が現在も通用するかどうかを書かないでください。
「改正されている可能性があります」のような一般論も書かないでください。
- 根拠の欄には、回答の本文に書かれていたものだけを書いてください。
関係しそうな条文を補わないでください。
- 前提の違いは、今回の相談の文面と過去の相談の要旨の両方に書かれている事実だけで比べてください。
片方にしか書かれていないことは「今回の文面からは不明」としてください。
- 似ている理由を説明する必要はありません。順位も変えないでください。
- 符号(P001、C001 など)は符号のまま書いてください。
- 記録が0件のときは、一覧を作らず「該当なし」とだけ返してください。
【新しい相談】{new_consultation}
【検索で見つかった記録(順位順)】{search_hits}
「改正されている可能性がありますのような一般論も書かない」を明記しないと、ほぼ必ず書き添えます。 一般論として書かれた注意は、印の付いた記録にも付いていない記録にも同じように付くため、見直しの印の意味が薄れます。 注意は印の有無だけに任せます。
「片方にしか書かれていないことは不明とする」も同じ理由です。 書かれていない事情を「おそらく法人」と補うと、担当者は事業部門に確かめるべき点を見落とします。不明と出れば、それが確認事項になります。
順位を変えさせないのは、検索の結果を検証できるようにするためです。 順位は OpenSearch の点数のままにします。
出力形式を固定する
次の形のJSONで受け取り、画面では表にして見せます。
{
"intake_no": "",
"status": "listed | no_hits | input_too_short",
"hits": [
{
"rank": 1,
"consult_no": "",
"consult_date": "",
"answer_date": "",
"summary": "",
"answer_point": "",
"grounds": [""],
"opinion": { "no": "", "conclusion": "" },
"review_flag": { "flagged": false, "flag_date": "" },
"differences": [
{ "point": "", "past": "", "current": "" }
]
}
],
"unknown_in_current": [""]
}
JSONで受け取る理由は3つあります。
1つ目は、相談番号と日付を機械で照合できることです。 consult_no、consult_date、answer_date を索引の値と突き合わせ、一致しない行があれば一覧ごと出さずに担当者へ知らせます。 生成AIが相談番号を写し間違えると、担当者は別の相談の回答を読むことになります。
2つ目は、見直しの印を先頭に出せることです。 review_flag.flagged が真の行は、画面で色を変え、回答の要点よりも先に印の日付を表示します。
3つ目は、unknown_in_current を事業部門への確認事項にできることです。 前提の違いを比べる中で「今回の文面からは不明」となった点を集め、担当者が事業部門に聞き返す質問の一覧として使います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 相談受付のフォーム | 送信の通知 | 新しい相談の文面と受付番号を受け取る |
| 相談台帳 | スプレッドシートの読み取り | 完了した相談、根拠、見直しの印、閲覧区分を読む |
| 共有メールボックス | 読み取り | 受付番号でスレッドを引き、最後の回答を取る |
| 共有フォルダ | 読み取り | 意見書のPDFと結論の部分を取る |
| Amazon OpenSearch Service | 検索のAPI | 担当者の権限で more_like_this と言葉の検索を行う |
| Claude(Amazon Bedrock) | API呼び出し | 検索結果を相談番号付きの一覧にする |
| 相談台帳 | 書き込み(1列だけ) | 担当者が選んだ「参考にした相談番号」を記録する |
検索は、担当者の権限で行います。 Lambda が自分の強い権限で検索してから結果を絞るのではなく、担当者のロールに対応する権限で OpenSearch に問い合わせます。 公式のドキュメントでは、ロールの割り当てがなければクラスターへの要求はすべて権限のエラーになるとされています。
相談台帳への書き込みは、参考にした相談番号の列だけです。 回答の本文も、見直しの印も、この構成からは書きません。記録の中身を変えるのは、いつも人です。
人が確認する
担当者は、一覧を答えとして使いません。 一覧は、どの過去の記録を開くべきかを決めるためのものです。
- 見直しの印を先に見る … 印のある記録は、印を付けた理由(改定の内容)を確かめてから読みます。印のある回答を下敷きにするときは、改定後の内容で一から確かめます
- 元の回答を開く … 一覧の要点ではなく、メールの回答の本文を読みます。要点は2文に縮めたもので、条件や留保が落ちていることがあります
- 意見書は結論だけで判断しない … 意見書がある記録は、PDFの全文を読める担当者が前提と結論の両方を確かめます
- 前提の違いを事業部門に確かめる …
unknown_in_currentの項目を、事業部門への質問として送ります - 参考にした相談番号を記録する … どの記録を下敷きにしたか、使わなかったならその理由を、台帳の列に書きます
2番目を省かないでください。 過去の回答には「ただし、〜の場合は別途ご相談ください」という留保が付いていることが多く、要点の2文にはそれが入りません。
目標は、120件をならして1件10分です。 多くは「前提が違うので一から検討」と判断することになりますが、過去の判断を知ったうえで始められます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 文面が短く、特徴となる語が取れない | 検索せず input_too_short で担当者へ。事業部門に詳細を聞く |
| 検索結果が0件 | no_hits。新しい型の相談として扱い、回答後に索引に入れる |
| 上位がすべて見直しの印付き | 一覧は出すが、先頭に「上位はすべて見直し要」と表示する |
| 相談番号・日付が索引の値と一致しない | 一覧を出さず担当者へ。生成AIの出力を捨てて検索結果だけを表示する |
| 閲覧区分が空の記録が取り込まれようとした | 取り込まず、部長へ区分の記入を依頼する |
| 担当者の権限で読めない記録が近い | 検索結果に出ない。出ないことを担当者には知らせない |
| 回答の本文がメールから取れない | 相談台帳の件名と要旨だけで記録を作り、「回答本文なし」の印を付ける |
| 意見書のPDFが文字として読めない | 結論の部分を人が入力するまで、意見書の項目を空にする |
| 生成AIが応答しない | 検索結果だけを表にして出す。一覧の要約が無くても記録は開ける |
6行目は意図した動きです。 担当者の権限で読めない記録は、近い相談があっても検索結果に出ません。「権限が無いため表示できない記録があります」と出すと、その種類の相談が過去にあったこと自体が伝わってしまいます。 内部通報や人事の処分の相談では、それだけで秘密が漏れます。限られた役割の担当者は、自分の権限で検索すればその記録を見られます。
4行目で出力を捨てるのは、どこが正しいかを担当者が確かめるより、検索結果の表だけを出すほうが速く確実だからです。
記録を残す
- 新しい相談の受付番号と、符号に置き換えた後の文面(実名の文面は相談受付のフォーム側にだけ残す)
- 検索の条件(more_like_this の設定値、言葉の検索の語、担当者のロール)と、返った相談番号と点数
- 生成AIに渡した記録と、返ってきた一覧のJSON
- 照合の結果(一致・不一致)
- 担当者が参考にした相談番号と、使わなかった記録とその理由
- 見直しの印の付与と解除の履歴(誰が、いつ、どの改定を理由に)
5つ目が、この構成を良くしていく材料になります。 上位に出たのに使われなかった記録が多い分野は、検索の設定か記録の書き方に問題があります。「前提が違う」で使われない記録が続くなら、相談の要旨の書き方に前提を入れるように台帳の運用を直します。
6つ目は、過去の回答を誰がいつ「古い」と判断したかの記録です。 改定のたびに印を付けた理由が残っていれば、後から改定がもう一度あったときに、どの回答を見直すべきかが分かります。
04実装レベルの3段階
最小構成では件数がさばけません。 30件の一覧を毎回貼るので、数千件の過去の相談からは探せません。確かめるための段階です。 半自動化で、1件30分が15分程度になります。 探す場所は1つになりますが、開いて読む時間と聞き取りは残ります。本格構成で10分になり、この段階が本記事の想定です。 差が出るのは、一覧に見直しの印と前提の違いが並び、開くべき記録を絞り込めるからです。 段階を飛ばさないでください。 半自動化で検索を繰り返すと、閲覧区分の付け方や要旨の書き方の不足が見えてきます。
05工数削減シミュレーション
導入後 120件 × 10分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 事業部門からの法律相談を法務部がメールや相談フォームで受けており、年に千件を超える相談の履歴が受付の台帳・メール・共有フォルダに分かれて残っているIT企業・メーカー・商社・金融機関の法務部。同じような相談に担当者ごとに違う答えを返している、あるいは「前にも同じ相談があったはず」と古参の担当者に聞いて回っている場合。顧問弁護士の意見書が案件ごとのフォルダに埋もれ、別の相談で読み返されていない場合。AWS を使っており、検索基盤と生成AIを同じ環境で動かせる場合。
- 法律相談が月に数件で、担当者が全件を覚えていられる場合。過去の相談と回答が記録として残っておらず、口頭や電話で済ませてきた場合(先に受付の記録を始める必要がある)。法務の担当が1名で、引き継ぎや担当間のばらつきが問題になっていない場合。なお、新しい相談にどう答えるかの法的な判断と、顧問弁護士へ照会するかどうかの判断は法務の担当者が行い、この構成はそれを代わりに行いません。
07最小構成で試す方法
- 過去1年の完了した相談から、よく似た型が繰り返されている相談を30件選ぶ(同じ型が3件以上あるものを含める)
- その30件について、相談の要旨・回答の本文・回答日・根拠をスプレッドシートにまとめる
- 最近届いた新しい相談を10件選び、手元のAIサービスに、30件の一覧と新しい相談を1件ずつ貼り付ける
- 「この一覧から、新しい相談に近い過去の相談を3件まで選び、相談番号・回答日・当時の回答の要点・根拠を並べてください。今回の回答は書かないでください。一覧に無いことを書かないでください」と指示する
- 出てきた相談番号を、担当者が自分で探したときに選んだ相談と突き合わせる
30件は実際の記録で作り、閲覧区分が一般のものだけを選びます。 人事や内部通報の相談は入れません。
| 出てきた内容 | 判断 |
|---|---|
| 担当者が選んだのと同じ相談が上位に出た | 索引と検索の構築に進む |
| 近い相談は出たが、回答に無い条文を補った | 指示の書き方で直る。構成は有効 |
| 似ていない相談ばかりが出る | 相談の要旨の書き方が先。 件名だけの記録では似ているかを判断できない |
3行目が出たら、要旨の欄に「誰が、誰に対して、何をしようとしているか」を書く運用から始めてください。 検索の仕組みが無くても、引き継ぎの質を上げます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 短い相談で近い記録が出ない | min_term_freq の既定は2。 1に下げ、定型文を除いてから渡す |
| 定型の相談ばかりが上位に出る | 典型の文面を unlike に入れる |
| 検討中の相談が候補に出る | 完了した相談だけを取り込む |
| 閲覧区分が空の記録が誰にでも見える | 区分が空なら取り込まない。取り込み時に必ず確かめる |
| 強い権限で検索してから結果を絞っている | 担当者の権限で検索する。 生成AIへ渡る前に絞る |
| 「表示できない記録があります」と出してしまう | 出さない。記録があること自体が秘密になる |
| 辞書を直したのに検索が変わらない | Sudachi の辞書は次のブルー/グリーンデプロイで更新。急ぐなら新しい索引へ再インデックス |
| 生成AIが「改正の可能性」を書き添える | 一般論を禁じ、見直しは印だけで示す |
| 生成AIが根拠の条文を補う | 本文の表記のまま写すことを指示し、本文に無い語を検知する |
| 相談番号の写し間違い | 索引の値と照合し、不一致なら一覧を捨てる |
| 古い回答を下敷きにして答える | 見直しの印を先頭に表示し、印の運用を法務部で決める |
| 要点だけ読んで留保を落とす | 元の回答を開くことを確認の手順に入れる |
上の7行は、一覧に何が出るかを決める部分、下の5行は出てきたものをどう扱うかの部分です。 後者はどれも、似た相談が見つかったことを答えが見つかったことと取り違える失敗につながります。見直しの印と元の回答の確認を、運用の手順に組み込んでください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 社員と取引先と顧客の名前、取引の条件、社内の処分や紛争の経緯、顧問弁護士の意見書です。社内で最も機密性の高い記録の一つです。
- 閲覧の範囲を検索の段階で絞る … 細かなアクセス制御の文書単位のセキュリティで、担当者の役割に合う記録だけを返します。 生成AIに渡してから絞る設計にしません
- 意見書の全文を読める役割を限る … 項目単位のセキュリティで、意見書の本文の項目を限られた役割にだけ返します。一覧には結論の部分だけを出し、全文はPDFを開ける人だけが読みます
- 生成AIに実名を渡さない … 新しい相談の文面は、名簿と取引先マスタで符号に置き換えてから渡します。過去の記録も、索引に入れる段階で符号化した版を作ります
- この構成は法的な判断を代替しません … 新しい相談にどう答えるか、過去の回答が今も通用するか、顧問弁護士に照会するかは、法務の担当者と部長が決めることです。 この構成が出すのは、自社の過去の記録の一覧だけです
- 見直しの印の運用を決める … 法令やガイドラインの改定を知ったときに、誰が、どの分野の記録に印を付けるかを決めておきます。印が付かないまま古い回答が上位に出続けるのが、この構成の最も大きな危険です
- ログも法務部の中に閉じる … 検索のログには相談の内容と担当者が残ります。ログの索引にも同じ権限をかけます
- 細かなアクセス制御は最初から有効にする … HTTPS、保存データの暗号化、ノード間の暗号化が前提で、一度有効にすると無効にできません
誤りが起きた場合のリスクは、見せてはいけない相談を見せることと、古い回答をそのまま使うことの2つです。 どちらも検索の精度ではなく、記録の管理の問題です。
10まず何から始めるか
1週目:閲覧区分と見直しの印の列を台帳に足す
相談台帳に、閲覧区分の列、根拠の列、見直しの印の列、参考にした相談番号の列を足します。どの役割がどの区分を読めるかを、法務部長が決めます。
2週目:30件で試す
過去1年の一般区分の相談から30件を選び、要旨・回答・根拠をまとめて、最近の相談10件で近い相談を選ばせます。担当者が自分で選んだ相談と同じものが出るかを最優先で見ます。
3週目:要旨の書き方をそろえる
似ていない相談が出た記録の要旨を、「誰が、誰に対して、何をしようとしているか」を書く形にそろえます。
4週目:索引を作り、担当者が画面から引けるようにする
OpenSearch のドメインを細かなアクセス制御を有効にして作り、Sudachi を関連付け、直近3年分の一般区分の相談から取り込みます。この時点では受付との自動連携はせず、担当者が画面から検索します。
2か月目: 閲覧区分ごとのロールを作り、人事・紛争の記録を取り込みます。受付のフォームと連携し、送信ごとの自動検索を始めます。3か月目以降: 生成AIの一覧と前提の違い、相談番号の照合を足し、1件30分が何分になったかを実測します。改定のたびに見直しの印が付く運用が回り始めた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Sudachi Analysis が日本語向けに推奨とされ OpenSearch 1.3 以降で使えること。kuromoji がすべてのドメインに含まれること。オプションのプラグインであり、Sudachi の辞書ファイルを関連付け直しても即時には反映されず、次のブルー/グリーンデプロイで更新されること。新しいパッケージで新しい索引を作り再インデックスする方法もあること | AWS: Plugins by engine version in Amazon OpenSearch Service | 2026-10-07 |
| 細かなアクセス制御がインデックス・文書・項目の単位のセキュリティを提供すること。文書単位のセキュリティがロールに指定した検索の条件に合う文書だけを見せること。項目単位のセキュリティと項目のマスキング。HTTPS・保存データの暗号化・ノード間の暗号化が必要で、一度有効にすると無効にできないこと。ロールを割り当てなければ要求はすべて権限のエラーになること | AWS: Fine-grained access control in Amazon OpenSearch Service | 2026-10-07 |
more_like_this が入力を特徴づける語を選んで他の文書を探すこと。like に自由な文章や索引の文書を渡せること。unlike の役割。min_term_freq(既定2)、min_doc_freq(既定5)、max_query_terms(既定25)、minimum_should_match(既定30%)。対象の項目が text か keyword 型であること | OpenSearch Documentation: More like this | 2026-10-07 |
新しい相談にどう答えるか、過去の回答が今も使えるかは、法務の担当者と顧問弁護士の判断によります。 本記事は公開されている製品の仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0730)についてのご相談はこちらから。
