重要事項説明書の特記事項・容認事項を書くときに、物件の条件が近い過去の文例を根拠の資料とあわせて検索し、下書きの材料にする
重要事項説明書の特記事項・容認事項を書くときに、今回の物件の条件(越境・私道・告知事項・用途地域など)ごとに、過去の説明書から条件の近い文例を検索します。文例と当時の根拠の資料、今回との違いを並べ、宅地建物取引士が書く下書きの材料にします。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 不動産/建設
- 対象部門
- 営業
- 対象業務
- 情報検索/書類作成
- 主な課題
- 属人化している/情報が見つからない/書類作成に時間がかかる
- AIで行う処理
- 検索(RAG)
- 主な効果
- 品質標準化/属人化解消/検索時間短縮
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 物件調査の結果(役所の調査、測量図、道路の調査、売主の告知書)から、特記事項・容認事項にすべき条件を洗い出す
- 「越境がある」「私道の通行・掘削の承諾が要る」など、条件ごとに過去の説明書を探す。自分の過去の分か、同じ店舗の分を開く
- 見つからなければ、同僚や店長に「似た物件を書いたことがあるか」と聞く
- 見つかった文例を読み、今回の物件に合わせて書き換える
- 判断に迷う条件は、店長や法務にメールで相談する
- 店長の確認を受け、作成ソフトの特記事項の欄に入れる
- 人宅地建物取引士が、物件調査の結果から特記事項にすべき条件を検索画面で選び、調査のメモを貼る
- 自動Claude API が調査のメモを条件ごとの検索文に分け、物件種別・条件の分類を付ける
- 自動Amazon OpenSearch Service が、確認済みの文例に絞ってハイブリッド検索を行う
- 自動条件ごとに上位の文例と、その文例が基づいた根拠の資料の名前を取り出す
- 自動Claude API が、文例ごとに今回の物件との違いと、今回確かめるべき資料を並べる
- 人宅地建物取引士が文例と根拠を読み、今回の物件に合わせて特記事項を書く
- 人店長が確認する。法務の確認で直した文は、直した版として索引に戻す
各工程の詳しい説明を読む
- 物件調査の結果(役所の調査、測量図、道路の調査、売主の告知書)から、特記事項・容認事項にすべき条件を洗い出す
- 「越境がある」「私道の通行・掘削の承諾が要る」など、条件ごとに過去の説明書を探す。自分の過去の分か、同じ店舗の分を開く
- 見つからなければ、同僚や店長に「似た物件を書いたことがあるか」と聞く
- 見つかった文例を読み、今回の物件に合わせて書き換える
- 判断に迷う条件は、店長や法務にメールで相談する
- 店長の確認を受け、作成ソフトの特記事項の欄に入れる
(a)探す範囲が自分の周りに限られる。 他の店舗で同じ条件を丁寧に書いた説明書があっても、探す手段がありません。 結局、記憶にある自分の文例を使うので、書き方が担当者ごとに固まります。
(b)言い回しだけを写してしまう。 文例の「越境物については、売主の責任と負担において…」という一文は、当時の売主と隣地との取り決めに基づいています。今回の物件で取り決めが無ければ、同じ文は書けません。 文例を開いても、どの資料に基づいた文なのかはすぐには分かりません。
(c)直された書き方が残らない。 法務の確認で直した文は、その説明書にだけ反映されます。直される前の文例が別のフォルダに残り、次の担当者がそれを写します。
(d)相談が店長と法務に集中する。 文例が見つからない条件は、店長か法務に聞くしかありません。同じ条件の相談が、別々の店舗から何度も届きます。 法務は過去の回答をメールから探して答え、その答えはまた相談した店舗にだけ残ります。
(e)告知事項の書き方に迷う。 人の死に関する事案は、国土交通省のガイドラインで告げなくてもよい場合と告げる必要がある場合が整理されています。どの程度まで書くかは慎重に扱う項目で、過去の書き方を探す時間が特に長くなります。
- 【人】 宅地建物取引士が、物件調査の結果から特記事項にすべき条件を検索画面で選び、調査のメモを貼る
- 【自動】 Claude API が調査のメモを条件ごとの検索文に分け、物件種別・条件の分類を付ける
- 【自動】 Amazon OpenSearch Service が、確認済みの文例に絞ってハイブリッド検索を行う
- 【自動】 条件ごとに上位の文例と、その文例が基づいた根拠の資料の名前を取り出す
- 【自動】 Claude API が、文例ごとに今回の物件との違いと、今回確かめるべき資料を並べる
- 【人】 宅地建物取引士が文例と根拠を読み、今回の物件に合わせて特記事項を書く
- 【人】 店長が確認する。法務の確認で直した文は、直した版として索引に戻す
5番目が、この設計の分かれ目です。 文例を並べるだけでなく、「この文例は越境の覚書があった物件のもので、今回は覚書が無い」という違いを並べさせます。 言い回しだけを写す失敗(第3章の(b))を止めるのはここです。
7番目の「直した版を索引に戻す」を作らないと、索引はすぐ古くなります。 法務の確認を経た文例が増えるほど、検索の質が上がる仕組みにします。
02今回想定するシステム構成
物件調査のメモ・選んだ条件(検索画面) ▼ AWS Lambda ▼ Claude API ── 条件ごとの検索文と分類(構造化出力) ▼ Amazon Bedrock(Titan Text Embeddings V2)── 検索文の埋め込み ▼ Amazon OpenSearch Service │ ハイブリッド検索(Sudachi の日本語解析 + k-NN) │ 絞り込み:確認済み/物件種別/条件の分類 ▼ 条件ごとの文例と根拠の資料の名前 ▼ Claude API ── 文例ごとに今回との違いと確かめる資料を並べる ▼ 検索画面に表示 ──【人】宅地建物取引士が書く ──【人】店長の確認 └──▶ 確認済みの文を索引へ戻す
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(ハイブリッドクエリと k-NN、Sudachi の日本語解析) | Azure AI Search、Vertex AI Search(Agent Search) |
| 埋め込み | Amazon Titan Text Embeddings V2(Amazon Bedrock) | Cohere Embed、OpenAI の埋め込みモデル |
| 生成AI | Claude API(検索文への分解と、文例と今回との違いの整理) | Azure OpenAI(Microsoft Foundry)、Gemini API |
| 連携 | AWS Lambda(検索画面と検索・生成のつなぎ、索引への追加) | AWS Step Functions |
| 保管 | Amazon S3(過去の説明書、根拠の資料の写し) | 営業部のファイルサーバー |
作成ソフトには、この構成から書き込みません。 特記事項の欄に入れるのは宅地建物取引士です。AIの整理を確認なしに説明書へ流す経路を作らないためです。
土台になるのは、OpenSearch のハイブリッドクエリです。 複数の検索の点数を1つにまとめる仕組みで、入れられる検索は最大5つ、全体にかける filter を1つ持てます。 単語の一致で強い検索(「越境」「私道」「セットバック」のような決まった語)と、意味の近さで強い k-NN の検索を組み合わせます。点数のまとめ方は検索パイプラインの正規化の処理器で決め、既定は min-max の正規化です。
日本語の解析には Sudachi を使います。 Amazon OpenSearch Service の対応プラグインの一覧で、Sudachi は日本語に推奨されています。辞書を差し替えても、すぐにはドメインに反映されません。 反映はブルー/グリーンのデプロイのときで、急ぐ場合は新しい索引を作って入れ直します。
埋め込みは Titan Text Embeddings V2 です。 入力は8,192トークンまたは50,000文字まで、出力は1,024・512・256次元から選べます。英語に最適化されており、日本語は多言語の対応の一覧に含まれますが、言語をまたぐ検索は精度が下がるとされています。過去の説明書も検索文も日本語なので、言語はそろいます。
03どうやって実装するのか
処理の起点を決める
宅地建物取引士が検索画面で「文例を探す」を押したときに動かします。 特記事項を書く段は、物件調査が終わって説明書をまとめる時点です。調査のメモと条件を選んで押すと、1〜2分で条件ごとの文例が出ます。
もう1つの起点は、店長の確認が終わったときです。 作成ソフトから確定版の説明書をPDFで書き出し、確定版のフォルダに保存したときに、特記事項を取り出して索引に足します。この起点が無いと、索引は導入時のまま古くなります。
法務の確認で文が直されたときは、直した版を確認済みとして入れ、元の版の状態を「差し替え済み」に変えます。 消さずに残すのは、いつ何が直されたかを後から引けるようにするためです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 今回の調査のメモ | 選んだ条件、物件種別、用途地域、接道の状況、調査で分かったこと | 検索画面 |
| 過去の特記事項 | 1条件ごとの文。物件種別、条件の分類、店舗、作成日、確認の状態 | 文例の索引(OpenSearch) |
| 根拠の資料の名前 | 文例が基づいた資料(測量図、越境の覚書、道路の調査、私道の承諾書、告知書) | 文例の索引に持たせる |
| 条件の分類の一覧 | 越境、私道、セットバック、再建築、擁壁、地中埋設物、土壌、浸水の想定、告知事項 など | 営業部と法務が決める一覧 |
質を決めるのは、2行目の「確認の状態」です。 店長と法務の確認を経た文だけを confirmed にし、検索は confirmed に絞ります。 確認前の文を入れると、直される前の書き方が何度も出てきます。
3行目の根拠の資料の名前は、最初の作業でいちばん手間がかかります。 過去の説明書の添付資料の一覧から、その特記事項がどの資料に基づくかを付けます。付けられなかった文は「根拠不明」として入れ、検索結果にもそう表示します。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 条件の近い文例 | 文例の索引 | ハイブリッドクエリ(match + knn)、条件ごとに上位5件 |
| 同じ条件の分類の文例 | 文例の索引 | 分類の term を filter に入れる |
| 文例の根拠の資料 | 文例の索引の evidence 項目 | 文例と一緒に返す |
| 同じ物件の過去の取引 | 文例の索引 | 物件の識別子で term 検索 |
ハイブリッドクエリの filter には、確認の状態・物件種別・条件の分類を入れます。 filter は1つの検索の形で書く必要があるので、複数の条件は bool にまとめます。 ハイブリッドクエリは最上位のクエリとして書く必要があり、function_score などの中に入れると正規化を通らずに動くことがあります。
条件1つ分の検索は、次のような形になります。検索パイプライン clause-hybrid には正規化の処理器を置き、単語の一致0.4・埋め込み0.6の重みから始めます。
POST /special-clauses/_search?search_pipeline=clause-hybrid
{
"size": 5,
"_source": ["clause_id", "clause_text", "category", "evidence", "created_on"],
"query": {
"hybrid": {
"queries": [
{ "match": { "clause_text": "隣地 ブロック塀 越境 覚書なし" } },
{ "knn": { "clause_vector": { "vector": [0.0], "k": 20 } } }
],
"filter": {
"bool": {
"filter": [
{ "term": { "status": "confirmed" } },
{ "term": { "category": "encroachment" } },
{ "terms": { "property_type": ["detached_house", "land"] } }
]
}
}
}
}
}
物件種別は1つに絞りすぎないようにします。 戸建と土地の越境は書き方がほぼ同じで、片方に絞ると文例の少ない店舗では候補が出なくなります。 絞るかどうかは、分類ごとの文例の数を見て決めます。
同じ物件の過去の取引は、別に引きます。 同じ土地を数年前に仲介していれば、そのときの特記事項がいちばん近い文例です。点数で並べる必要は無いので、識別子で直接引きます。
文例の索引の1件は、次のような形にします。
{
"clause_id": "SC-2025-0917-03",
"clause_text": "本物件の北側隣地より、ブロック塀の一部が本物件内に越境しています。…",
"clause_vector": [0.0],
"category": "encroachment",
"property_type": "detached_house",
"zoning": "第一種低層住居専用地域",
"evidence": ["越境に関する覚書(隣地所有者との間)", "確定測量図"],
"status": "confirmed",
"revised_from": "",
"branch": "東店",
"created_on": "2025-09-17",
"access_group": "sales_all"
}
clause_text は Sudachi の解析、clause_vector は1,024次元の k-NN の項目として定義します。access_group は、第13章の文書の単位の権限に使います。
AIへ渡す前に整形する
- 特記事項の切り出し … 確定版のPDFから特記事項・容認事項の欄を取り出し、番号や「・」で1条件ずつに分けます
- 物件を特定する情報の置き換え … 地番、住所の番地、売主・隣地所有者の氏名を
[地番][隣地所有者]のような記号に置き換えます - 条件の分類 … 決まった語(越境、私道、セットバックなど)でまず分類し、付かなかったものだけを人が付けます
- 根拠の資料の付与 … 説明書の添付資料の一覧から、その条件に関係する資料の名前を付けます
- 埋め込み … 置き換え後の文で、1条件ごとに Titan Text Embeddings V2 の埋め込みを作ります
- 確認の状態の付与 … 確定版から取り出した文は
confirmed、法務の確認で直す前の文はsupersededにします
2番目を軽く見ないでください。 文例は別の物件の説明書に使うものです。過去の物件の地番や当事者の氏名が検索結果に出る必要はありません。 置き換えておけば、文例をそのまま写したときに別の物件の情報が混ざる事故も防げます。
告知事項の文は、さらに慎重に扱います。 国土交通省のガイドラインは、告げる際に亡くなった方や遺族の名誉と生活の平穏に配慮し、氏名、年齢、住所、家族構成、具体的な死の態様や発見状況などを告げる必要はないとしています。文例にそうした記載が残っていれば、索引に入れる前に除きます。
AIに処理させる
させるのは2つです。調査のメモを条件ごとの検索文に分けることと、文例ごとに今回との違いを並べることです。
| させること | 中身 |
|---|---|
| 検索文への分解 | 調査のメモを、選ばれた条件ごとの短い検索文にする。条件の分類を付ける |
| 文例との違いの整理 | 文例の前提(根拠の資料、当事者の取り決め、物件種別)と今回のメモを比べ、違う点を書く |
| 確かめる資料の列挙 | 文例と同じ書き方をするなら、今回どの資料が要るかを書く |
| 該当なしの表示 | 近い文例が無い条件は、無いと書く |
| させないこと | 理由 |
|---|---|
| 特記事項の完成文の作成 | 何を説明すべきかは宅地建物取引士が決める |
| 説明の要否の判断 | 告げる必要があるかは、ガイドラインと事実関係に基づき人が判断する |
| 文例に無い事実の補足 | 「覚書があるはず」と推測で書かない |
| 根拠の無い文例の引用 | 検索結果に無い文例を示さない |
| 法令の解釈 | 法務と専門家の判断 |
1行目を「させない」に置くのは、意図してのことです。 完成文を出すと、取引士は読み比べるより写すほうに傾きます。違いの一覧を見て自分で書く形にすることで、第3章の(b)の失敗を止めます。
指示内容を固定する
あなたは不動産の売買仲介会社で、宅地建物取引士が重要事項説明書の
特記事項・容認事項を書くための材料を整理する担当です。
特記事項の完成文は書かないでください。
【やること】
1. 今回の調査のメモと、条件ごとに検索された過去の文例を読んでください。
2. 文例ごとに、その文例が前提にしている事実(根拠の資料、
当事者の取り決め、物件種別、用途地域など)を書き出してください。
3. その前提が今回のメモで確かめられているかを、
confirmed / not_in_memo / differs のどれかで示してください。
4. 文例と同じ趣旨で書く場合に、今回確かめる必要がある資料を挙げてください。
【厳守事項】
- 今回のメモに書かれていない事実を、あるものとして扱わないでください。
メモに無ければ not_in_memo にしてください。
- 文例の根拠が「根拠不明」の場合は、そのことをそのまま書いてください。
- 検索結果に無い文例を示さないでください。clause_id は検索結果のものだけを使ってください。
- 説明が必要かどうか、どう書けば足りるかの判断は書かないでください。
- 告知事項について、亡くなった方の氏名・年齢・死の態様などの詳細を書かないでください。
- 近い文例が無い条件は matches を空にし、note に「近い文例なし」と書いてください。
- quote には、文例の該当箇所を一字一句そのまま写してください。
【今回の調査のメモ】{survey_memo}
【条件ごとの検索結果(clause_id、文、分類、根拠の資料、確認日)】{search_results}
「メモに無ければ not_in_memo」を明記しないと、文例の前提を今回にも当てはめます。 文例に「越境に関する覚書を締結済み」とあると、今回も覚書があるかのように整理しがちです。確かめていないことを確かめたように見せないのが、この指示の目的です。
quote を一字一句で写させるのは、後で照らすためです。 プログラムで文例の原文と照らし、一致しないものは表示しません。
出力形式を固定する
Claude API の構造化出力で、次の形のJSONを受け取ります。
{
"request_id": "",
"conditions": [
{
"category": "encroachment | private_road | setback | rebuild | retaining_wall | buried_object | soil | flood | death_disclosure | other",
"query": "",
"matches": [
{
"clause_id": "",
"quote": "",
"premises": [
{ "fact": "", "check": "confirmed | not_in_memo | differs" }
],
"documents_to_check": [],
"evidence_status": "listed | unknown"
}
],
"note": ""
}
]
}
1つ目の理由は、条件ごとに分けて表示できることです。 条件が4つある物件でも、取引士は1条件ずつ文例と違いを見られます。category は条件の分類の一覧と同じ値に限ります。
2つ目は、premises の check で確認の要るところが一目で分かることです。 not_in_memo と differs が付いた前提は、今回の物件で確かめるか、文例と違う書き方にするかのどちらかです。 検索画面では、この2つを色を変えて出します。
3つ目は、quote と clause_id をプログラムで照らせることです。 構造化出力はスキーマに合う形を返しますが、中身が文例と一致するかまでは保証しません。一致しない quote は表示から外し、ログに残します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 検索画面 | 社内のWeb画面 | 条件とメモの入力、結果の表示 |
| Claude API | Messages API の構造化出力 | 検索文への分解、違いの整理 |
| Amazon Bedrock | Titan Text Embeddings V2 の呼び出し | 検索文と文例の埋め込み |
| Amazon OpenSearch Service | 検索パイプラインを指定した _search | ハイブリッド検索 |
| 確定版のフォルダ(S3) | 保存の通知で Lambda を起動 | 特記事項の取り出しと索引への追加 |
| 作成ソフト | 取引士が手で入力 | この構成からは書き込まない |
検索画面には、条件ごとに3つの欄を並べます。 左に文例の quote、中央に文例の前提と check、右に今回確かめる資料です。not_in_memo と differs の行は色を変え、取引士がそこから読むようにします。 同じ物件の過去の取引が見つかった場合は、条件の欄の上に別枠で出します。
検索から表示までの処理は1つの Lambda でつなぎます。検索文の埋め込みは条件ごとに作り、条件の数だけ検索を並べて投げます。 条件が5つある物件でも、待ち時間が条件の数に比例して延びないようにするためです。
人が確認する
not_in_memoとdiffersを必ず見る … 文例の前提のうち、今回確かめていないものです。資料を取り寄せるか、文例と違う書き方にします- 根拠不明の文例を写さない …
evidence_statusがunknownの文例は、言い回しの参考にとどめます - 告知事項は店長と一緒に決める … 告げる必要があるか、どこまで書くかはガイドラインと事実関係で判断します
- 店長が確認する … 新しく書いた文と、文例と大きく変えた文を中心に見ます
- 法務に相談した結果を索引に戻す … 直した版を
confirmedとして入れます
1番目を省かないでください。 この構成の価値は、文例と今回の違いを見せることにあります。違いを見ずに写せば、探す時間が減っただけで、第3章の(b)の失敗は残ります。
目標は、120件をならして1件10分です。 検索結果を読んで違いを確かめるのに6分、書いて店長に回すのに4分という見込みです。
例外に対処する
| 起きること | 対応 |
|---|---|
| 近い文例が無い | 「近い文例なし」と出す。店長か法務に相談する条件として表示する |
| 文例の根拠が不明 | 言い回しの参考として出し、根拠不明と明示する |
quote が文例の原文と一致しない | 表示から外してログに残す |
| 検索で確認前の文が出る | filter の漏れ。索引の設定を直し、出た文例を一覧にする |
| 同じ物件の過去の取引が見つかる | 最上位に別枠で出す。当時から事情が変わっていないかを確かめる |
| 告知事項の文例に詳細が残っている | 索引から外して置き換え直す |
構造化出力が refusal や max_tokens で終わる | 受け付けず、条件を分けて再実行 |
| 辞書を更新したのに検索が変わらない | 反映はブルー/グリーンのデプロイ時。急ぐなら新しい索引を作って入れ直す |
上の2行が、運用の中で最も多い例外です。 珍しい条件の物件ほど文例が無く、そうした物件こそ店長や法務に相談すべき物件です。 文例が無いことを伝えるのも、この構成の出力です。
記録を残す
- 検索の依頼(条件、調査のメモ、依頼者、日時)
- 検索文、検索結果の
clause_idと点数、そのときの重みと正規化の設定 - Claude API の出力と、そのとき使った指示の版
- 表示から外した
quoteと、その理由 - 取引士が実際に使った文例の
clause_id - 確定版から索引に入れた文と、法務の確認で差し替えた記録
5つ目の「実際に使った文例」は、検索の改善に使います。 上位に出たのに使われない文例が多い条件は、重みか分類を見直します。
04実装レベルの3段階
半自動化で、1件25分が15分程度になります。 全店の文例から探せるようになりますが、違いの整理と索引の更新が手作業で残ります。本格構成で10分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化で1か月使うと、文例の無い条件と分類の粗い条件が分かります。そこを直してから違いの整理を足すほうが、取引士に使われる仕組みになります。
05工数削減シミュレーション
導入後 120件 × 10分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 中古の戸建・土地・マンションの売買仲介を複数の店舗で行い、月に百件前後の重要事項説明書を作る不動産会社。特記事項・容認事項の書き方が担当者と店舗ごとに違い、過去の説明書がファイルサーバーに散らばっていて、似た物件の文例を探すのに時間がかかっている場合。過去の説明書のうち、法務や上長の確認を経たものを見分けられる場合。AWS を社内で使っている場合。
- 新築の分譲だけを扱い、特記事項がほぼ定型で済む場合。取引の件数が月に数件で、過去の説明書を担当者が覚えていられる場合。過去の説明書が紙だけで残っていて、電子化されていない場合(先に文字の取れる形にする作業が要ります)。なお、何を説明すべきか、どう書けば足りるかの判断と、説明そのものは宅地建物取引士が行うもので、この構成では代替できません。
07最小構成で試す方法
- 過去1年の確定版の説明書から、条件の分類ごとに文例を30件ずつ選ぶ(法務の確認で直された文を必ず含める)
- 地番と氏名を記号に置き換え、条件の分類と根拠の資料の名前を付けて1つの表にまとめる
- 先月作った説明書のうち10件について、そのときの調査のメモを用意する
- 手元のAIサービスに表とメモを渡し、「この物件の条件ごとに、表から近い文例を3つずつ選び、文例の前提のうち今回のメモで確かめられていないものを挙げてください。完成文は書かないでください」と指示する
- 選ばれた文例を、当時の取引士が実際に参考にした文例と比べる
| 出てきた内容 | 判断 |
|---|---|
| 当時の取引士と同じか、より近い文例が出た | 索引と検索の仕組みづくりに進む |
| 文例の前提を今回にも当てはめた | 指示の書き方で直る。構成は有効 |
| 分類が粗くて違う条件の文例が出る | 条件の分類の一覧を先に細かくする |
最小構成では、表に入れられる文例の数に限りがあります。 確かめたいのは、「文例と違いを並べる」形が取引士にとって使えるかです。
試すときは、ベテランと新しく入った取引士の両方に結果を見てもらってください。 ベテランが「自分ならこの文例を選ぶ」と言うものが上位に出ているか、新しく入った取引士が違いの一覧だけで確かめる資料に気づけるか。この2つがそろえば、索引づくりに時間をかける価値があります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 文例の言い回しだけを写す | 文例の前提と今回の違いを並べ、not_in_memo を色で示す |
| 直される前の文が出る | filter で confirmed に絞る。法務の確認で直した版を戻す仕組みを作る |
| 過去の物件の地番や氏名が出る | 索引に入れる前に記号に置き換える |
| 告知事項の文例に詳細が残る | ガイドラインの留意事項に沿って除いてから入れる |
ハイブリッドクエリを function_score に入れる | 最上位のクエリとして書く。入れ子にすると正規化を通らないことがある |
| 辞書を更新しても検索が変わらない | 反映はブルー/グリーンのデプロイ時。新しい索引に入れ直す |
| AIが完成文を書いてしまう | 指示で禁じ、出力の形に完成文の項目を持たせない |
| 分類が粗く違う条件の文例が出る | 分類の一覧を細かくし、filter に入れる |
| 物件種別で絞りすぎて候補が出ない | 似た種別をまとめて terms で絞る。分類ごとの件数を見て決める |
| 古い文例ばかりが上位に出る | 作成日を表示し、法令や様式が変わった時期より前の文例に印を付ける |
| 確定版の取り込みが止まって気づかない | 月ごとの取り込み件数を店舗別に数え、説明書の作成件数と比べる |
上の2行が、この構成の失敗のほとんどです。 どちらも「出てきた文例を正しいものとして扱う」ことから起きます。文例には前提と確認の状態が付いている、という形を守ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 過去の重要事項説明書の特記事項(物件の所在、売主・隣地所有者に関する事情、告知事項)、物件調査のメモです。個人の情報と、取引の当事者にとって知られたくない事情を含みます。
- 文書の単位の権限を付ける … OpenSearch のきめ細かなアクセス制御では、役割ごとに見られる文書を問い合わせで絞る文書の単位の権限と、項目を隠す項目の単位の権限を使えます。告知事項の分類の文例は、宅地建物取引士と店長だけが見られるようにします
- 索引に入れる前に、物件を特定する情報を置き換える … 地番・氏名を記号にし、元の説明書は S3 に別の権限で置きます
- 告知事項は名誉と生活の平穏に配慮する … ガイドラインの留意事項に沿い、詳細を文例にも出力にも残しません
- 説明の要否と内容は宅地建物取引士が決める … この構成は材料を並べるだけで、何を説明すべきかの判断を代替しません
- 外部の生成AIに渡す範囲を絞る … 渡すのは置き換え後の文例と調査のメモだけです。元の説明書そのものは渡しません
誤りが起きた場合のリスクは、今回の物件に当てはまらない文を書くことと、他の物件の情報を漏らすことの2つです。 前者は違いを見ずに写すと起き、後者は置き換えを省くと起きます。どちらも索引の作り方と表示の形で防ぎます。
10まず何から始めるか
1週目:条件の分類の一覧を作る
営業部と法務で、特記事項・容認事項によく出る条件を10〜15に分けます。分類の名前と、それぞれに要る根拠の資料を並べます。
2週目:文例を集めて試す
条件の分類ごとに確定版から30件ずつ集め、置き換えと分類を付けます。手元のAIサービスで、先月の10件について文例と違いを挙げさせ、当時の取引士が参考にした文例と比べます。
3週目:索引を作る
OpenSearch に Sudachi の解析と k-NN の項目を持つ索引を作り、集めた文例を入れます。検索パイプラインに正規化の処理器を置き、単語の一致と埋め込みの重みを決めます。
4週目:検索画面から検索までをつなぐ
条件とメモから検索文を作り、ハイブリッド検索で条件ごとの文例を出すところまで作ります。この時点では違いの整理を出さず、文例と根拠の資料だけを見ます。
2か月目: 違いの整理と quote の照合を足します。3か月目以降: 確定版からの自動の追加と法務の差し替えを足し、1件25分が何分になったかを実測します。全店の確定版が索引に入り、法務の確認で直した文が他の店舗の検索に出るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
ハイブリッドクエリが複数の検索の点数を検索パイプラインでまとめること、検索は最大5つ、全体の filter は1つの検索の形で書き複数条件は bool にすること、最上位のクエリとして使い function_score などに入れられないこと | OpenSearch: Hybrid query | 2026-10-13 |
| 正規化の処理器が検索ごとに点数を正規化してまとめること、min-max(既定)・L2・z-score の違い | OpenSearch: Normalization processor | 2026-10-13 |
| Amazon OpenSearch Service で Sudachi が日本語に推奨されていること、Neural Search と k-NN の対応、Sudachi の辞書の更新がブルー/グリーンのデプロイまで反映されないこと | AWS: Plugins by engine version | 2026-10-13 |
| きめ細かなアクセス制御で、索引・文書・項目の単位の権限と項目のマスキングが使えること | AWS: Fine-grained access control | 2026-10-13 |
| Titan Text Embeddings V2 の入力上限(8,192トークン・50,000文字)、出力の次元(1,024・512・256)、多言語の対応に日本語が含まれ、言語をまたぐ検索は精度が下がること | AWS: Amazon Titan Text Embeddings models | 2026-10-13 |
構造化出力を output_config.format で指定すること、refusal・max_tokens で終わるとスキーマに合わないことがあること | Claude: Structured outputs | 2026-10-13 |
| 媒介業者は売主・貸主に告知書等への記載を求めることで通常の調査義務を果たしたものとすること、自然死・日常生活の中での不慮の死は原則として告げなくてもよいこと、告げる際に氏名・年齢・住所・家族構成・具体的な死の態様・発見状況等を告げる必要はないこと | 国土交通省: 宅地建物取引業者による人の死の告知に関するガイドライン | 2026-10-13 |
何を説明すべきか、どう書けば足りるかは、宅地建物取引士と必要に応じて法務・専門家が判断してください。 本記事は上の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1419)についてのご相談はこちらから。
