法律事務所で、過去の準備書面・調査メモ・裁判例の整理メモから争点の近い書面を探し、該当箇所を案件番号付きで返す
弁護士が新しい案件の争点を入れると、事務所に蓄積した準備書面・調査メモ・裁判例の整理メモから争点の近い節を探し、該当箇所の原文を案件番号とページ付きで返します。探す作業は、フォルダを開いて回ることから、出てきた原文を読み比べることに変わります。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 保険/士業/金融
- 対象部門
- 法務
- 対象業務
- 情報検索/比較検討
- 主な課題
- 属人化している/引き継ぎができていない/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 弁護士が、新しい争点と、相手方の主張の要旨をメモにする
- ファイルサーバーの全文検索で、キーワードを変えながら過去の書面を探す
- 出てきた書面を1通ずつ開き、どの節に似た争点が書かれているかを探して読む
- 見つからない、または自信がないときは、その分野を長く扱っている弁護士に聞く
- 該当しそうな書面の判決や和解の結果を、案件管理システムで確かめる
- 使えそうな節の案件番号、書面名、ページをメモに書き出し、パラリーガルに写しを頼む
- 自動案件管理システムで書面が「提出済み」、調査メモが「確定」になると、ファイルを取り出す
- 自動Claude が書面を見出しで節に分け、節ごとに争点の名前、当方の立場、書かれている裁判例の表示を取り出す
- 人担当のパラリーガルが、節の分け方と争点の名前を確かめて確定する
- 自動確定した節を、本文の埋め込みと一緒に検索基盤に登録する。判決・和解が出たら、その争点の結果を書き足す
- 人弁護士が、争点の説明と相手方の主張の要旨を検索画面に入れる
- 自動Claude が争点の説明から、検索に使う語と、用語の言い換えの候補を出す
- 自動語の一致と文章の近さを組み合わせたハイブリッド検索で、閲覧してよい案件の節から候補を最大30件集める
- 自動上位の節について、2回目の問い合わせで該当箇所のハイライトを原文から切り出す
- 自動Claude が各節について「なぜ近いか」を1〜2文で書き、案件番号・書面名・ページ・結果と一緒に並べる
- 人弁護士が原文を開いて確かめ、使う節を選ぶ。選んだ節は調査メモに書き出す
各工程の詳しい説明を読む
- 弁護士が、新しい争点と、相手方の主張の要旨をメモにする
- ファイルサーバーの全文検索で、キーワードを変えながら過去の書面を探す
- 出てきた書面を1通ずつ開き、どの節に似た争点が書かれているかを探して読む
- 見つからない、または自信がないときは、その分野を長く扱っている弁護士に聞く
- 該当しそうな書面の判決や和解の結果を、案件管理システムで確かめる
- 使えそうな節の案件番号、書面名、ページをメモに書き出し、パラリーガルに写しを頼む
(a)争点で探せない。 全文検索は語の一致しか見ないので、同じ争点を別の言葉で書いた書面は引けません。 法改正で用語が変わった分野ほど、古い書面が見つからなくなります。
(b)1通の中のどこにあるかが分からない。 準備書面は数十ページあり、争点が複数入っています。検索で書面が出ても、似た争点がどの節にあるかは、開いて読まないと分かりません。
(c)分野に長い弁護士に聞くしかない。 その人は、どの案件でどういう主張をしたかを覚えています。そのため質問はその人に集まり、その人が退所すると、調べる手段ごと失われます。 退所した弁護士の調査メモは、フォルダに残っていても誰も開きません。
(d)結果がひも付いていない。 書面のファイルには、その主張が判決で採られたかは書かれていません。採られなかった主張を、そうと知らずに再び使うことがあります。
取り込み(書面の提出・メモの確定のたび)
- 【自動】 案件管理システムで書面が「提出済み」、調査メモが「確定」になると、ファイルを取り出す
- 【自動】 Claude が書面を見出しで節に分け、節ごとに争点の名前、当方の立場、書かれている裁判例の表示を取り出す
- 【人】 担当のパラリーガルが、節の分け方と争点の名前を確かめて確定する
- 【自動】 確定した節を、本文の埋め込みと一緒に検索基盤に登録する。判決・和解が出たら、その争点の結果を書き足す
検索(新しい争点を調べるたび)
- 【人】 弁護士が、争点の説明と相手方の主張の要旨を検索画面に入れる
- 【自動】 Claude が争点の説明から、検索に使う語と、用語の言い換えの候補を出す
- 【自動】 語の一致と文章の近さを組み合わせたハイブリッド検索で、閲覧してよい案件の節から候補を最大30件集める
- 【自動】 上位の節について、2回目の問い合わせで該当箇所のハイライトを原文から切り出す
- 【自動】 Claude が各節について「なぜ近いか」を1〜2文で書き、案件番号・書面名・ページ・結果と一緒に並べる
- 【人】 弁護士が原文を開いて確かめ、使う節を選ぶ。選んだ節は調査メモに書き出す
3番目が、この設計の分かれ目です。 節を分けて争点の名前を付けるのはAIですが、それが正しいかを確かめるのは、書面の提出に関わったパラリーガルです。 提出の直後なら、どの節が何の争点かを覚えています。10年後に別の弁護士が読み解くより、はるかに確実です。
02今回想定するシステム構成
【取り込み】案件管理システム(書面の提出済み・メモの確定) ▼【トリガー】状態の変更 AWS Lambda ── ファイルを取り出し、ページ番号付きで本文を抜く ▼ Claude(Amazon Bedrock)── 節の分割、争点の名前、当方の立場、裁判例の表示 ▼【人】パラリーガルが確定 Amazon Titan Text Embeddings V2 ── 節の本文を埋め込み ▼ Amazon OpenSearch Service(節の索引。日本語の形態素解析) 【検索】弁護士の検索画面(争点の説明・相手方の主張の要旨) ▼ Claude(Amazon Bedrock)── 検索に使う語と言い換えの候補 ▼ Amazon OpenSearch Service ── ハイブリッド検索+閲覧できる案件だけに絞る ▼ Amazon OpenSearch Service ── 上位の節についてハイライトを切り出す ▼ Claude(Amazon Bedrock)── 「なぜ近いか」の一言を付けて並べる ▼ 弁護士が原文を確認 → 調査メモへ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(ハイブリッド検索とハイライト) | Azure AI Search、Vertex AI Search(Agent Search) |
| 埋め込み | Amazon Titan Text Embeddings V2(Amazon Bedrock) | Cohere Embed、OpenAI の埋め込みモデル |
| 生成AI | Claude(Amazon Bedrock。節の分割、検索語の言い換え、近さの一言) | Gemini API、OpenAI API |
| 連携 | AWS Lambda(取り込みと2回の問い合わせの処理) | AWS Step Functions |
| 保管 | Amazon S3(書面の本文の写し) | 既存のファイルサーバー |
| 案件管理 | 既存の案件管理システム | ― |
検索の中心は、OpenSearch のハイブリッドクエリです。 公開されているドキュメントでは、ハイブリッドクエリは複数のクエリの関連度のスコアを1つのスコアに組み合わせるもので、組み合わせには検索パイプラインを使います。サブクエリは最大5つで、filter は1つのクエリとしてすべてのサブクエリに適用されます。閲覧してよい案件の絞り込みは、この filter とアクセス制御の両方で掛けます。
日本語の語の一致は、形態素解析の質で決まります。 Amazon OpenSearch Service では、Japanese(kuromoji)Analysis がすべてのドメインに含まれ、Sudachi Analysis は日本語に推奨されるオプションのプラグインとして一覧に載っています。法律用語の辞書を足したいので、本記事は Sudachi を想定します。ただし、辞書のファイルを関連付け直しても、すぐにはドメインに反映されません。 次のブルー/グリーンデプロイで更新されるか、新しいパッケージで索引を作り直して再索引する方法が案内されています。
該当箇所の切り出しは、ハイライトで行います。 OpenSearch の既定のハイライターは unified で、本文を文に分けて扱います。断片の長さは既定で100文字、断片の数は既定で5つで、語は既定で <em> タグで囲まれます。
03どうやって実装するのか
処理の起点を決める
取り込みと検索で、起点が2つあります。
取り込みは、案件管理システムで書面が「提出済み」、調査メモが「確定」になったことを起点にします。 提出済みの書面だけを取り込むのは、起案の途中で消した主張や、依頼者との打ち合わせで取り下げた主張を、検索結果に出さないためです。 状態の変更を受けたら Lambda が動き、案件番号のフォルダからファイルを取り出します。案件管理システムが通知を出せない場合は、状態が変わった案件の一覧を毎晩取りに行きます。
判決・和解・取下げのときも、もう一度動かします。 案件が終わった時点で、その案件の節に争点ごとの結果を書き足します。結果は担当の弁護士が案件管理システムに入れたものを使い、AIには判断させません。
過去15年分の約4万通は、別に一括で取り込みます。 このときはパラリーガルの確認が取れないので、節に「未確認」の印を付けます。検索結果では未確認の節を区別して表示し、弁護士が使うと決めたときに、その場で節の分け方と争点の名前を確かめてもらいます。
検索は、弁護士が検索画面で「探す」を押したときに動きます。 起案の途中で、争点の書き方を変えて何度でも探せるようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 準備書面 | 本文、見出し、提出日、裁判所と事件番号、当方の立場 | ファイルサーバー(案件番号のフォルダ) |
| 調査メモ | 論点、調べた文献と裁判例、結論、作成者、作成日 | ファイルサーバー |
| 裁判例の整理メモ | 裁判例の表示(裁判所・判決日・事件番号・掲載誌)と、使える論点 | グループごとの Word ファイル |
| 案件の情報 | 案件番号、依頼者、相手方、担当、分野、終わり方と争点ごとの結果 | 案件管理システム |
| 閲覧の制限 | 情報を遮断する案件と、遮断の対象者。閲覧者を限る案件 | 案件管理システムの利益相反の確認記録 |
| 検索の入力 | 争点の説明、相手方の主張の要旨、分野、検索から外す案件 | 検索画面 |
質を決めるのは、いちばん下から2つ目の閲覧の制限です。 これが案件管理システムにまとまっていなければ、誰にどの案件の書面を見せてよいかを検索基盤に教えられません。検索の構成より先に、遮断の記録を案件番号で引ける形にそろえます。
節の項目は、最初に固定します。 案件番号、書面の種類(準備書面・答弁書・意見書・調査メモ・整理メモ)、提出日、審級、当方の立場(原告・被告・申立人・相手方)、見出し、争点の名前、本文、ページの範囲、裁判例の表示の一覧、結果(adopted/rejected/settled/pending/unknown)、確認の状態です。項目が決まらないうちに取り込みを始めると、後から全件を作り直すことになります。
データの取得方法を決める
本文は、Word と文字の入った PDF から取り出します。スキャンした画像だけの古い書面は、この構成の対象外にします。 取り出せなかったファイルは一覧にして、別に読み取りの作業を回します。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 本文(ページ番号付き) | 書面のファイル | 節の分割と、該当箇所のページ |
| 見出し | Word の見出しの書式、または「第1」「1」「(1)」の番号 | 節の区切り |
| 案件の属性と結果 | 案件管理システム | 節に持たせる項目と、絞り込み |
| 遮断と閲覧の制限 | 利益相反の確認記録 | 検索できる人の制限 |
本文はページ番号を付けたまま持ちます。 検索結果で「案件 2019-0412 の被告第2準備書面の8ページ」と示せなければ、弁護士は原文を確かめられません。ページが失われる取り出し方は使いません。
検索は2回に分けて問い合わせます。 1回目はハイブリッドクエリで候補の節を集めます。サブクエリは、争点の名前と検索語の語の一致、争点の説明の埋め込みによる近さの2つにし、filter で分野と、検索から外す案件を絞ります。ハイブリッドクエリのドキュメントにはハイライトについての記載がないため、2回目に、上位の節の ID で絞った語の一致の問い合わせを投げ、そこでハイライトを取ります。
ハイライトの設定は、次のように置きます。
| 設定 | 値 | 理由 |
|---|---|---|
| ハイライター | unified(既定) | 本文を文に分けて扱うので、主張の1文を切り出しやすい |
index_options | offsets | 本文の項目に文字位置を持たせ、ハイライトを速くする |
| 断片の長さ | 既定の100文字から広げる | 主張の1文が100文字に収まらないことが多い |
| 断片の数 | 既定の5つから3つへ | 1つの節で読む箇所を絞る |
| 囲むタグ | 既定の <em> | 画面でそのまま強調に使う |
AIへ渡す前に整形する
- 節への分割 … 見出しの番号で書面を節に分けます。番号の付け方は事務所の書式で決まっているので、規則で分け、規則で分けられないものだけを Claude に任せます
- ページの範囲の付与 … 各節に、始まりと終わりのページを付けます
- 当事者の名前の置き換え … 埋め込みに渡す本文では、依頼者と相手方の名前を「原告」「被告」「A社」のような呼び方に置き換えます。名前が似ているだけの案件が近いと出るのを防ぎます
- 用語の言い換えの表 … 「瑕疵」と「契約不適合」、「解雇権の濫用」と「解雇の有効性」のような組を、分野ごとに表にします。検索語の言い換えに使います
- 長さの確認 … 埋め込みの入力は最大8,192トークンまたは50,000文字です。これを超える節はまずありませんが、超えたものは段落で分けます
- 重複の検知 … 同じ主張が第1準備書面と最終準備書面に繰り返し出る場合は、後の書面を正とし、前の書面の節に印を付けます
3番目を軽く見ないでください。 当事者の名前を残したまま埋め込むと、同じ依頼者の別の案件が、争点が違っても上位に並びます。 名前は索引の項目として持ち、絞り込みにだけ使います。
AIに処理させる
AIの仕事は3か所です。取り込み時の節の整理、検索語の言い換え、検索結果の一言です。
| 場面 | させること |
|---|---|
| 取り込み | 規則で分けられなかった書面を節に分け、節ごとに争点の名前、当方の立場、本文に書かれた裁判例の表示を取り出す |
| 検索 | 争点の説明から、検索に使う語を出し、言い換えの表にある語に限って言い換えを足す |
| 検索 | 上位の節それぞれについて、入力した争点となぜ近いかを1〜2文で書く。近くない点があればそれも書く |
| させないこと | 理由 |
|---|---|
| 主張や反論の文案の作成 | どう主張するかは弁護士が決める。根拠の薄い文案が書面に入る |
| 該当箇所の要約・言い換え | 原文の一字一句が意味を持つ。ハイライトで原文を切り出す |
| 本文に書かれていない裁判例への言及 | 存在しない、または内容の違う裁判例が書面に入るおそれがある |
| 争点の結果の判断 | 採用・不採用は案件管理システムの記録をそのまま使う |
| 閲覧の可否の判断 | アクセス制御と filter で機械的に決める |
3行目がいちばん起きやすく、いちばん重い失敗です。 生成AIは、もっともらしい裁判所名・日付・事件番号を書くことがあります。検索結果の一言に、索引のどこにもない裁判例が混ざると、それが書面に引用されるおそれがあります。 AIが触れてよい裁判例は、節に取り出した裁判例の表示の一覧にあるものだけにし、出力の後に、一覧にない表示が含まれていないかを機械で照合します。
指示内容を固定する
取り込み時(節の整理):
あなたは法律事務所で、提出済みの書面を整理する担当です。
書面の本文だけを根拠にしてください。推測で埋めないでください。
【やること】
書面を見出しで節に分け、それぞれについて次を取り出してください。
- 見出し(本文の見出しをそのまま写す)
- 争点の名前(20字以内。本文の言葉を使う)
- 当方の立場:原告 / 被告 / 申立人 / 相手方 / 不明
- 本文に書かれている裁判例の表示(裁判所、判決日、事件番号、掲載誌)
- ページの範囲
【厳守事項】
- 本文に書かれていない裁判例を足さないでください。
裁判例の表示が一部しか書かれていなければ、書かれている部分だけを写し、
incomplete を true にしてください。補わないでください。
- 争点の名前は本文の言葉で付けてください。
一般的な法律用語に置き換えないでください。
- 見出しが無く節に分けられない部分は、1つの節とし、split_uncertain を true にしてください。
- 主張の当否、勝ち筋、判決の見込みを書かないでください。
検索時(近さの一言):
あなたは弁護士の調査を助ける担当です。
渡された検索結果だけを根拠に、入力された争点と各節を比べてください。
【入力された争点】{issue}
【相手方の主張の要旨】{opponent}
【検索結果の節(上位10件)】{hits}
各節には、案件番号、書面名、ページ、当方の立場、結果、ハイライト、
裁判例の表示の一覧が付いています。
【書くこと】
各節について、
1. 入力された争点と近い点(1文)
2. 入力された争点と違う点があればその点(1文。無ければ「なし」)
【厳守事項】
- 主張や反論の文案を書かないでください。
- 該当箇所を要約・言い換えしないでください。原文はハイライトで示されます。
- 裁判例に触れるときは、その節の裁判例の表示の一覧にあるものだけにしてください。
一覧にない裁判例を書かないでください。
- 結果(採用・不採用など)は渡された値をそのまま書いてください。
- 「未確認」の印のある節は、その旨を書いてください。
- 近い節が1件もなければ「争点の近い書面は見つかりませんでした」と書いてください。
「一覧にない裁判例を書かない」を両方の指示に書かないと、取り込み時に表示を補い、検索時に関連する裁判例を足してきます。 どちらも善意の補完ですが、事務所の書面に書かれていなかった裁判例が、「過去の書面にあったこと」として扱われます。 指示で禁じたうえで、出力を一覧と照合する二重の守りにします。
「違う点」を書かせるのも意図してのことです。 近い点だけを並べると、弁護士は似ている理由ばかりを読みます。当方の立場が逆、審級が違う、事実関係の前提が違う、という点が先に見えると、使えない節を早く外せます。
出力形式を固定する
検索結果は、次の形のJSONで画面に返します。
{
"query_id": "",
"issue": "",
"expanded_terms": [""],
"hits": [
{
"matter_no": "2019-0412",
"document": "被告第2準備書面",
"doc_type": "brief | answer | opinion | research_memo | case_memo",
"filed_on": "",
"position": "plaintiff | defendant | applicant | respondent | unknown",
"heading": "",
"issue_name": "",
"pages": { "from": 0, "to": 0 },
"highlights": [""],
"cases_cited": [
{ "court": "", "date": "", "case_no": "", "reporter": "", "incomplete": false }
],
"outcome": "adopted | rejected | settled | pending | unknown",
"verified": true,
"why_close": "",
"how_different": ""
}
],
"not_found": false
}
1つ目の理由は、AIが書いた部分と原文を分けて持てることです。 highlights は OpenSearch が原文から切り出したもの、why_close と how_different は Claude が書いたものです。画面では両者の見た目を変え、弁護士が原文とAIの一言を取り違えないようにします。
2つ目は、cases_cited を照合に使えることです。 検索時の一言に裁判所名や事件番号が出てきたら、その節の cases_cited と突き合わせます。一覧にない表示があれば、その一言を捨てて「近さの説明なし」として表示します。
3つ目は、outcome と position で並びを変えられることです。 「被告の立場で、判決で採用された主張だけ」に絞れるのは、この2つを決まった値で持つからです。自由文の結果では、この絞り込みができません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 案件管理システム | 状態の変更の通知、または毎晩の一覧の取得 | 提出済みの書面と、案件の属性・結果・遮断の記録 |
| ファイルサーバー | Lambda からの読み取り | 書面のファイル |
| Amazon S3 | Lambda から読み書き | 本文の写し |
| Claude(Amazon Bedrock) | Lambda からの呼び出し | 節の整理、検索語の言い換え、近さの一言 |
| Amazon Titan Text Embeddings V2 | Lambda からの呼び出し | 節の本文の埋め込み |
| Amazon OpenSearch Service | 索引への登録、ハイブリッド検索、ハイライト | 節の検索と該当箇所の切り出し |
| 調査メモ | 検索画面からの書き出し | 選んだ節の案件番号・書面名・ページ・ハイライト |
閲覧の制限は、細かなアクセス制御の文書レベルのセキュリティで掛けます。 Amazon OpenSearch Service のドキュメントでは、文書レベルのセキュリティは、役割に指定したクエリに合う文書だけを、その役割に対応付けた利用者に見せるものとされています。案件ごとの遮断の対象者を役割に写し、検索画面からの問い合わせは、検索した弁護士の権限で投げます。
案件管理システムとファイルサーバーには書き込みません。 調査メモへの書き出しは、弁護士が選んだ節を下書きに写すところまでです。
人が確認する
確認は2か所です。取り込み時のパラリーガルと、検索時の弁護士です。
- パラリーガルが節を確定する … 提出の直後に、節の分け方と争点の名前を確かめます。
split_uncertainとincompleteの付いた箇所を優先して見ます - 弁護士が原文を開く … 使う節は、ハイライトの前後を含めて原文のページを必ず開きます。ハイライトは断片なので、前後の文脈で意味が変わることがあります
- 裁判例は原典で確かめる … 節に書かれていた裁判例を使うときは、判例データベースで原典を確かめます。過去の書面に書かれていたことは、正しいことの保証になりません
- 未確認の節を確かめる … 一括取り込みで作った節を使うときは、その場で節の分け方を確かめ、「確認済み」に変えます
1件の調査あたり30分を目安にします。 検索結果の10件を読み、うち数件の原文を開いて確かめ、調査メモに書き出す時間です。ハイライトとAIの一言だけを読んで調査メモを書く運用にはしません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 本文が取り出せない(画像だけのPDF) | 節を作らず一覧に載せる。読み取りの作業へ回す |
| 見出しが無く節に分けられない | 1つの節として登録し split_uncertain。パラリーガルが分ける |
| 裁判例の表示が一部しか書かれていない | 書かれた部分だけを登録し incomplete。補わない |
| 一言に一覧にない裁判例が出た | その一言を捨て、「近さの説明なし」としてハイライトだけを表示 |
| ハイブリッド検索で候補が0件 | 分野の絞り込みを外して再検索し、それでも0件なら「見つからなかった」と表示 |
| 遮断の記録が案件管理システムに無い案件 | 取り込まない。記録がそろうまで検索の対象に入れない |
| 辞書を更新しても検索が変わらない | 次のブルー/グリーンデプロイを待つか、新しい索引を作って別名で切り替える |
| Bedrock の呼び出しに失敗した | ハイブリッド検索とハイライトの結果だけを表示し、一言は再試行を促す |
| 案件が終わったのに結果が入らない | 結果を unknown のまま表示し、担当の弁護士に入力を促す通知を出す |
上から2行目と6行目が、運用の大半を占めます。 2行目は書面の書式の問題、6行目は利益相反の管理の問題で、どちらもAIの問題ではありません。6行目を「とりあえず全員に見せる」で埋めないでください。
記録を残す
- 取り込んだ書面の案件番号、書面名、提出日、取り込んだ日時
- Claude が返した節のJSONと、パラリーガルが確定した時に直した項目
- 検索のたびの争点の説明、検索語と言い換え、候補の節、ハイライト
- Claude の一言と、一覧との照合で捨てた一言
- 弁護士が調査メモに書き出した節と、書き出さなかった節
- 検索した人と、文書レベルのセキュリティで外れた件数
4つ目で「捨てた一言」を残すのは、指示の効き方を測るためです。 一覧にない裁判例を書いた回数が減らなければ、指示を直すか、一言を書かせる範囲を狭めます。
04実装レベルの3段階
最小構成では、1つの分野しか扱えません。 節を手で切り出すので、確かめるための段階です。 半自動化で、語による検索とハイライトまでは自動になります。 ただし文章の近さが無いので、別の言葉で書かれた同じ争点は拾えません。 本格構成との差はここで、本記事の想定は本格構成です。
05工数削減シミュレーション
導入後 80件 × 30分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 訴訟・紛争案件を継続して扱い、10年以上分の準備書面・調査メモ・裁判例の整理メモがファイルサーバーや案件管理システムに蓄積している法律事務所。新しい案件の争点が出るたびに「前に似た主張をした書面がないか」を探すのに時間がかかり、その分野に長い弁護士に聞くしかない場合。保険会社・金融機関の法務部のように、同じ型の紛争を繰り返し扱う組織。AWS を基盤として使い、検索基盤と生成AIを事務所の閉じた環境で動かせる場合。
- 扱う紛争が年に数件で、担当弁護士の記憶と一覧表で足りる場合。書面の大半が紙のまま保管され、本文が文字として取り出せない場合(先に読み取りの構成が要る)。利益相反による情報の遮断を案件単位で管理する台帳がなく、誰に何を見せてよいかを決められない場合。なお、どの主張を採るか、どの裁判例を引用するかの判断は弁護士に残ります。
07最小構成で試す方法
- 1つの分野(たとえば建築紛争)の案件を30件選び、その準備書面から争点ごとの節を150個、手で切り出す(案件番号、書面名、ページ、争点の名前、結果)
- 最近その分野で調べた争点を20件選び、当時、調査メモに書かれた過去の書面を控える
- 150個の節をスプレッドシートにし、争点の名前と本文に手元のAIサービスで「この争点に近い節を5つ選び、近い点と違う点を書いてください。本文に無い裁判例は書かないでください」と頼む
- AIが選んだ節を、当時の調査メモと突き合わせる
- その分野を長く扱っている弁護士に、選ばれた節が「思い当たる書面」と合っているかを見てもらう
20件は必ず、分野に長い弁護士と一緒に見てください。 争点の名前で選ぶことが、その人の記憶と合っているかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 弁護士が思い当たる書面の節が選ばれる | 取り込みと検索基盤の構築に進む |
| 言葉は似ているのに、弁護士が「事実関係が違う」と言う | 節の項目が足りない。 事実関係の前提を項目に足す |
| 一言に本文に無い裁判例が混ざる | 指示の書き方と照合で直る。構成は有効 |
2行目が出ることは珍しくありません。 失敗ではなく、弁護士が暗黙に見ていた条件が1つ分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 一言に本文に無い裁判例が混ざる | 指示で禁じ、出力を節の一覧と照合する。 一覧にないものは捨てる |
| 書面1通を1つの単位で索引に入れる | 争点の違う節が混ざる。見出しで節に分ける |
| 当事者の名前を残したまま埋め込む | 同じ依頼者の別の争点が上位に並ぶ。名前は置き換え、項目で持つ |
| ハイブリッドクエリでハイライトを取ろうとする | ドキュメントに記載がない。上位の節の ID で絞った2回目の問い合わせで取る |
| 断片が短くて主張の文が切れる | 既定は100文字。主張の1文が入る長さに広げる |
| 辞書を直しても検索が変わらない | すぐには反映されない。 新しい索引を作り、別名で切り替える |
| 法改正の前後の用語で引けない | 言い換えの表を分野ごとに作る。AIが足した言い換えは使わない |
| 遮断の記録が無い案件を取り込む | 取り込まない。 記録がそろってから対象に入れる |
| 細かなアクセス制御を後から有効にしようとする | 有効にすると無効にできない。構築の最初に有効にする |
上の2行が、この構成の失敗のほとんどです。 1行目は書面に誤った引用が入る失敗、2行目は使われない検索になる失敗です。原文とAIの一言を分け、節の単位で引けるかどうかで、弁護士に使われるかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 依頼者と相手方の名前、紛争の事実関係、未公開の和解の条件、依頼者から受け取った資料の内容、弁護士の見立てです。事務所でもっとも秘匿性の高い情報で、守秘義務の対象です。
- 遮断を検索に反映させる … Amazon OpenSearch Service の細かなアクセス制御では、索引・文書・項目の単位で制限できます。文書レベルのセキュリティで、遮断の対象者には該当の案件の節を返しません。 和解の条件のように特に限りたい項目は、項目レベルのセキュリティで外します
- 細かなアクセス制御は、有効にしたあと無効にできない … 有効にするには、ドメインへの通信がすべて HTTPS であること、保存時の暗号化、ノード間の暗号化が必要です。構築の最初に有効にします
- 生成AIに渡す範囲を確かめる … Amazon Bedrock のドキュメントでは、モデルの提供者は Bedrock のログや利用者のプロンプトと出力にアクセスできないとされています。それでも、依頼者との取り決めで外部のサービスに出せない案件があれば、その案件は取り込みの対象から外します
- 主張の判断をAIに寄せない … この構成が出すのは、事務所が過去に書いたことの原文までです。どの主張を採り、どの裁判例を引くかは弁護士が決めます
誤りが起きた場合のリスクは、誤った裁判例が書面に入ることと、見せるべきでない案件が見えることの2つです。 前者は原文とAIの一言の分離と照合で、後者は文書レベルのセキュリティで防ぎます。
10まず何から始めるか
1週目:節の項目と遮断の記録をそろえる
1つの分野を選び、分野に長い弁護士と一緒に、節に持たせる項目と、結果の区分を決めます。あわせて、利益相反の確認記録が案件番号で引けるかを確かめます。
2週目:150個の節と20件の争点で試す
その分野の書面から150個の節を手で切り出し、最近の争点20件で近い節を選ばせます。弁護士の思い当たる書面と合っているか、本文に無い裁判例が混ざらないかを見ます。
3週目:言い換えの表と節の整理の指示を作る
分野の用語の言い換えの表を作り、同じ書面を Claude に読ませて節を整理させ、手で作った150個と比べます。裁判例の表示を補っていないかを最優先で見ます。
4週目:提出のたびの取り込みを始める
新しく提出される書面から、パラリーガルの確認付きで節をためます。この時点では検索は語の一致とハイライトだけにします。
2か月目: OpenSearch Service の索引を作り、細かなアクセス制御と遮断の役割を設定して、埋め込みとハイブリッド検索を足します。3か月目以降: 過去の書面を分野ごとに一括で取り込み、近さの一言と照合を足します。調査メモに過去の書面の案件番号とページが書かれ、分野に長い弁護士への「前に似た案件はなかったか」という質問が減った時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Japanese(kuromoji)Analysis がすべてのドメインに含まれること。Sudachi Analysis が日本語に推奨されるオプションのプラグインであること。Sudachi の辞書を関連付け直してもすぐには反映されず、次のブルー/グリーンデプロイで更新されるか、新しいパッケージで索引を作り直して再索引する方法があること | Amazon OpenSearch Service: Plugins by engine version | 2026-10-06 |
ハイブリッドクエリが複数のクエリの関連度のスコアを1つに組み合わせ、検索パイプラインを使うこと。サブクエリが最大5つで、filter が1つのクエリとして全サブクエリに適用されること。最上位のクエリとして使う設計であること | OpenSearch Documentation: Hybrid query | 2026-10-06 |
既定のハイライターが unified で、本文を文に分けて扱うこと。断片の長さが既定100文字、断片の数が既定5つで、既定のタグが <em> であること。index_options を offsets にできること | OpenSearch Documentation: Highlight query matches | 2026-10-06 |
| 細かなアクセス制御が索引・文書・項目の単位の制限を提供すること。文書レベルのセキュリティが役割のクエリに合う文書だけを見せること。項目レベルのセキュリティがあること。有効化に HTTPS・保存時の暗号化・ノード間の暗号化が必要で、有効にしたあと無効にできないこと | Amazon OpenSearch Service: Fine-grained access control | 2026-10-06 |
| Titan Text Embeddings V2 の入力が最大8,192トークンまたは50,000文字、出力が既定1,024次元であること。英語に最適化され、日本語が多言語対応の一覧に含まれること。検索では段落や節に分けることが推奨されていること | Amazon Bedrock: Amazon Titan Text Embeddings models | 2026-10-06 |
| モデルの提供者が Bedrock のログや利用者のプロンプトと出力にアクセスできないこと | Amazon Bedrock: Data protection | 2026-10-06 |
どの主張を採り、どの裁判例を書面に引用するかは、担当の弁護士が原典を確かめたうえで決めてください。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0438)についてのご相談はこちらから。
