業務マニュアルをAIに読ませる仕組み(RAG)の作り方 ── 中小企業向けの最小構成


業務マニュアルをAIに読ませる仕組み(RAG)の作り方 ── 中小企業向けの最小構成

「マニュアルをAIに読ませたい」という相談が増えている

ここ半年、中小企業の経営者・情シス担当者からいただく相談で急増しているのが、こんな声です。

「分厚い業務マニュアルをAIに読ませて、社員の質問に答えさせたい」 「規程集・就業規則・FAQをChatGPTみたいに対話で引けるようにしたい」 「過去の見積書・提案書をAIに学習させて、若手の提案書作成を支援したい」

これらはすべて、技術的にはRAG(Retrieval-Augmented Generation:検索拡張生成)というアプローチで実現できます。そしていまや、月額5,000円程度の運用コストで構築可能な水準まで降りてきました。

本記事では、中小企業の現実的な予算で動くRAGの最小構成を、実装ステップ・コスト試算・運用の落とし穴まで含めて解説します。


RAGとは何か ── ChatGPTとの決定的な違い

ChatGPTやClaudeに「うちの就業規則について教えて」と聞いても、当然ながらまともな答えは返ってきません。AIは社内文書を知らないからです。

RAGは、この問題を以下の流れで解決します。

[ユーザーの質問]

[1. 質問をベクトル化]

[2. 社内文書DBから関連箇所を検索]

[3. 検索結果+質問をAIに渡す]

[4. AIが「文書を根拠に」回答を生成]

ポイントは、AIに文書を「学習」させているわけではないことです。質問のたびに関連箇所をデータベースから引っ張り出し、AIに「これを根拠に答えて」と渡しているだけ。だから文書を更新すればすぐ反映され、ファインチューニングのような大がかりな作業は不要です。


最小構成 ── 月額5,000円から動くスタック

中小企業向けに私たちが推奨している構成は次の3点セットです。

レイヤー採用技術役割
ベクトルDBSupabase pgvector文書チャンクとベクトルの保存・検索
埋め込み生成OpenAI text-embedding-3-small文章をベクトル(数値配列)に変換
回答生成Claude Haiku または GPT-4o-mini検索結果をもとに自然な回答を生成

PineconeやWeaviateなど専用ベクトルDBもありますが、Supabaseならpgvector拡張を有効化するだけでベクトル検索ができ、無料枠も大きい。中小企業の最初の一歩としては最適です。


実装ステップ ── 3つのフェーズ

ステップ1: 文書チャンク化(500〜1000トークン目安)

PDFやWordから抽出した本文を、検索しやすい単位に分割します。

// 例: マークダウン本文を800トークン程度のチャンクに分割
function chunkText(text: string, maxTokens = 800, overlap = 100) {
  const sentences = text.split(/(?<=[。\n])/);
  const chunks: string[] = [];
  let current = '';
  for (const s of sentences) {
    if (estimateTokens(current + s) > maxTokens) {
      chunks.push(current);
      // オーバーラップを持たせて文脈を切らない
      current = current.slice(-overlap) + s;
    } else {
      current += s;
    }
  }
  if (current) chunks.push(current);
  return chunks;
}

コツは「意味の塊」で切ること。章や節の見出しを基準に分割し、表は1表で1チャンクにまとめると検索精度が上がります。逆に文の途中でぶつ切りにすると、検索しても文脈が切れて回答品質が落ちます。

ステップ2: ベクトル化と保存

各チャンクをOpenAI Embeddings APIに通し、1536次元のベクトルに変換してSupabaseに保存します。

-- pgvector拡張を有効化(一度だけ)
create extension if not exists vector;

create table documents (
  id bigserial primary key,
  source text not null,            -- ファイル名
  chunk_index int not null,
  content text not null,
  embedding vector(1536),
  updated_at timestamptz default now()
);

-- 高速検索のためのインデックス
create index on documents
  using ivfflat (embedding vector_cosine_ops)
  with (lists = 100);

埋め込みのコストは100万トークンあたり約$0.02(text-embedding-3-small)。社内マニュアル100ページ程度なら初回投入で数十円、更新分の差分だけ流せば月数十円のオーダーです。

ステップ3: 質問→検索→回答生成

ユーザーの質問もベクトル化し、コサイン類似度で上位k件(通常5〜10件)を取り出します。

// 1. 質問をベクトル化
const qVec = await openai.embeddings.create({
  model: 'text-embedding-3-small',
  input: question,
});

// 2. Supabaseから近いチャンクを取得
const { data: chunks } = await supabase.rpc('match_documents', {
  query_embedding: qVec.data[0].embedding,
  match_count: 8,
});

// 3. Claude/GPT-4o-miniに渡して回答生成
const answer = await anthropic.messages.create({
  model: 'claude-haiku-4-5',
  max_tokens: 1024,
  messages: [{
    role: 'user',
    content: `以下の社内文書のみを根拠に質問に答えてください。
文書に書かれていないことは「不明」と答えてください。

# 文書
${chunks.map(c => `[${c.source} #${c.chunk_index}]\n${c.content}`).join('\n\n')}

# 質問
${question}

回答の最後に【参照: ファイル名】を必ず付けてください。`
  }],
});

回答モデルはClaude Haikuでも GPT-4o-miniでも構いません。1クエリあたり0.3〜1円程度で動きます。


PDF・Word・Notionの取り込みのコツ

実装で最も泥臭いのが、文書の前処理です。

  • PDF: テキスト主体ならpdf-parse、図表混在ならunpdfpdfminer.six。スキャンPDFはOCR(Google Cloud Vision、Azure Document Intelligence)が必要
  • Word(.docx): mammothでMarkdown化すると見出し構造が残り、チャンク分割しやすい
  • Excel: シート単位・表単位でチャンク化。セル結合は事前に解除しておく
  • Notion: 公式APIでブロック単位に取得し、ページ階層をメタデータに含めると検索精度が上がる

「とりあえず全部突っ込む」と精度が崩れます。書式・見出し構造を残したまま取り込むのが品質の分水嶺です。


月額コスト試算 ── 100クエリ/日で約5,000円

社員30名の中小企業で、1日100クエリ・平均応答1500トークンを想定した試算です(2026年5月時点の公開価格、為替150円換算)。

項目月間使用量月額(試算)
Supabase Pro(1プロジェクト)-約3,750円
OpenAI Embeddings(更新分)50万トークン約2円
Claude Haiku 4.5(回答生成)入力 450 万・出力 150 万トークン約 1,800 円(プロンプトキャッシュ活用時はさらに低減)
合計-約 5,500 円

Supabase無料枠で始めれば、検証フェーズは月額1,000円台に収まります。利用が増えても、リクエスト数に対してほぼ線形にしか増えません。「最初の1台」を入れる障壁は、もはや費用ではありません

※ 上記は試算値です。実際のクエリ数・文書量・モデル選択により変動します。


運用の注意 ── 「動く」と「使える」の間にある3つの壁

1. 古い情報のメンテナンス設計

最大の落とし穴がこれです。マニュアル改訂時にDBを更新する仕組みがないと、AIは平然と古い規程を回答し続けます。

対策は、ファイル名+更新日時をメタデータに持たせ、定期再投入バッチを回すこと。Supabaseのcron拡張で週次実行に設定しておけば、運用負荷はほぼゼロです。

2. 「分からない」と答えさせる設計

LLMは知らないことを聞かれても、もっともらしい嘘(ハルシネーション)を返す癖があります。プロンプトで明示的に「文書に書かれていないことは『不明』と答えてください」と指示し、検索ヒットがゼロのときは生成自体をスキップする実装にしておきます。

3. 参照元を必ず表示

回答に「【参照: 就業規則.pdf 第3章】」のような出典を必ず付けます。利用者が原文に戻れる動線を残すことで、AIの誤回答リスクを大幅に下げられます。


中小企業がよくハマる3つの罠

罠1: チャンクサイズを小さくしすぎる 「精度を上げたい」と100トークン程度に細切れにすると、文脈が失われて逆に回答品質が落ちます。500〜1000トークン+オーバーラップが鉄板です。

罠2: 更新フローを設計せずに本番投入 「とりあえず動いた」で運用に乗せると、半年後には誰もメンテしなくなり、誤回答製造機になります。誰が・いつ・どの文書を更新するかを最初に決めてください。

罠3: 権限管理を後回しにする 人事評価・給与・取引条件など、全社員に見せたくない文書まで一緒に投入してしまう事故が頻発しています。Supabaseの行レベルセキュリティ(RLS)でロール別に検索範囲を制限する設計を、初期から入れておくべきです。


まとめ ── RAGは「最初の社内AI」として最適

RAGは、

  • 既存文書資産をそのまま活用できる
  • 月額5,000円程度から始められる
  • 学習不要なので更新が即反映される
  • 「参照元付き回答」で誤回答リスクを下げられる

という性質から、中小企業がAIを社内に入れる最初の一歩として極めて相性が良い仕組みです。

一方で、文書前処理・チャンク設計・更新フロー・権限管理といった「動かしてから効かせる」部分にこそ、ノウハウの差が出ます。ここを軽視して内製した結果、半年で誰も使わなくなった事例は枚挙にいとまがありません。


Optiensの導入支援について

OptiensではSupabase + pgvectorをベースに、中小企業向けRAGの設計・構築・運用支援を行っています。

  • 無料AI活用診断: フォーム入力をもとに、RAG 適用の方向性とコスト感の目安レンジをレポート化します → /free-diagnosis。文書資産の詳細分析と個別 RAG 設計案は 詳細レポート(¥5,500税込) でお届けします
  • 導入支援: チャンク設計・取り込みパイプライン・社内UIまで一括構築。保守プランで継続運用もサポートします → /implementation

「マニュアルをAIに読ませたい」と一言いただければ、最小構成での見積もりをお出しします。お気軽にご相談ください。