RAGの作り方|Python実装サンプル付き・社内ナレッジ検索の構築手順【2026年版】
目次 [非表示]
この記事でわかること
- Pythonで流れを確認できる最小構成RAGの概念サンプル
- RAGを構成する技術要素の選定軸(embedding / ベクトル検索基盤 / LLM)
- PoCから運用までの段階的な導入手順と設計判断4つ
2026年10月18日更新: 公開情報との整合性を確認し、特定の内部構成に依存しない設計・評価・導入手順へ更新しました。
社内の議事録・マニュアル・仕様書が増え、必要な情報を探しにくくなることがあります。Q&Aチャットボットでは、根拠となる文書を適切に参照させる設計が回答品質を左右します。こうした課題に使われるのが RAG(Retrieval-Augmented Generation、検索拡張生成) です。本記事ではPythonの概念サンプルを出発点に、チャンク分割・embedding・ベクトル検索・LLM呼び出しまでの実装手順と、PoCから運用までの段階的な進め方を解説します。
費用相場やベンダー選定基準は AI受託開発の費用相場2026年版 で詳説しています。外注のメリット・進行フローは AI開発外注ガイド をあわせてご覧ください。本記事はエンジニア向けの技術how-toに振り切って解説します。
RAG(検索拡張生成)とは?社内ナレッジ検索の仕組み
RAGは 「検索」と「生成」を組み合わせた仕組み です。3行で言えば次の通り。
- ユーザーの質問文を embedding(ベクトル) に変換する
- ベクトル検索基盤で 関連度の高い社内文書を検索 する
- 検索結果を LLMのプロンプトに埋め込み、その文脈の範囲内で回答を生成させる
RAGの処理フロー(質問から回答まで)
回答根拠を検索結果に寄せ、出典を確認できる形で創作(ハルシネーション)の抑制を図る
LLM単体との違い3点
- ハルシネーション抑制 — 検索結果を主な回答根拠として利用し、根拠外の生成を抑制する
- 最新情報への追従 — 検索対象を更新して反映でき、通常はLLM自体の再学習を必要としない
- ドメイン特化 — 契約条件・アクセス制御・データの取扱範囲を確認したうえで、社内文書を回答根拠に利用できる
最小構成でRAGを理解する|Python概念サンプル
まずは 処理の流れを確認する最小RAG を載せます。ドキュメント読み込み→チャンク分割→embedding生成→ベクトル検索→LLM呼び出しの責務を分けた概念サンプルです。利用する検索基盤や生成AIの公式仕様に合わせて、接続処理・認証・例外処理を実装してください。
必要ライブラリ
# 利用する検索基盤・生成AIの公式SDKを選び、
# 各サービスの手順に沿って開発環境へ追加します。
事前準備:利用するサービスの公式ドキュメントを確認し、検証専用の文書・認証情報・検索インデックスを用意します。
# 概念上の保存項目
document_id: 文書を識別する値
content: 検索対象の本文
embedding: 検索用のベクトル表現
metadata: 出典・更新日・閲覧範囲など
実装コード(概念サンプル)
from typing import Protocol
class SearchBackend(Protocol):
def add(self, text: str, metadata: dict) -> None: ...
def search(self, query: str) -> list[dict]: ...
class GenerationClient(Protocol):
def generate(self, question: str, sources: list[dict]) -> str: ...
def split_document(text: str) -> list[str]:
"""見出しや段落を尊重して検索単位に分割する。"""
return [part.strip() for part in text.split("\n\n") if part.strip()]
def ingest(text: str, source: str, search: SearchBackend) -> None:
"""出典情報とともに検索基盤へ登録する。"""
for part in split_document(text):
search.add(part, {"source": source})
def answer(
question: str,
search: SearchBackend,
generator: GenerationClient,
) -> str:
"""関連文書を取得し、その範囲で回答を生成する。"""
sources = search.search(question)
return generator.generate(question, sources)
# SearchBackend と GenerationClient の実装は、
# 利用するサービスの公式SDKに合わせて用意します。
# 本番化では認可、監査ログ、例外処理、評価を追加します。
コードの要点
- embedding モデル: 対象言語、検索精度、処理量、データの取扱条件を基準に選定し、自社の評価データで比較する
- 検索処理: 質問と文書の関連度を使って候補を取得し、出典情報を回答生成へ引き渡す
- 検索インデックス: 文書量、更新頻度、応答要件に合う方式を選び、負荷試験で確認する
- LLMは文脈内限定回答: プロンプトで「社内文書のみを根拠に」と明示し、LLMの外部知識による創作を抑制する
このサンプルはあくまで出発点です。実運用では次章の「8ステップ」で評価パイプラインと運用監視を足していきます。
RAG実装の技術ステップ8つ(エンジニア向け)
最小構成から本番運用レベルまでの流れを、エンジニアが手を動かす順番で並べます。
ドキュメント収集
チャンク分割
embedding生成
ベクトルDB格納
類似検索処理
LLM呼び出し
評価パイプライン
運用監視
RAG設計で最初に決める4つの判断
RAGの検索品質には コードだけでなく設計判断 が大きく影響します。プロジェクト着手前に決めておく4点を整理しました。
チャンク分割戦略
固定長 vs 文書構造に沿った分割の判断。議事録のように短い記述が続く文書と、契約書・仕様書のように章立てがある文書では、適する分割方法が異なります。
前後の文脈を一部重ねる方法も含め、自社文書で検索品質を比較する
embedding モデル選定
対象言語、専門用語、処理量、費用、契約条件を比較し、同じ評価データで検索品質を確認します。
モデル変更時の再処理範囲も確認し、移行コストを含めて選定する
ベクトルDB選定
下記比較表を参考に、文書量、更新頻度、既存基盤との統合性、運用担当者のスキル、保守範囲で決めます。候補ごとにバックアップ、監視、移行方法まで確認します。
検索スコア閾値
候補件数と関連度の基準を評価データから決めます。十分な根拠を取得できない場合の応答方針も、要件として先に定義します。
検索設定は文書追加や利用傾向の変化に合わせて定期的に評価する
ベクトルDB比較表
| 選択肢 | 形態 | 確認する規模要件 | 特徴 |
|---|---|---|---|
| 既存DB統合型 | 既存基盤へ追加 | 文書数・更新量・検索負荷 | 運用基盤を共通化しやすい。既存環境との互換性を確認 |
| マネージド型 | クラウドサービス | 将来の増加量・同時利用 | 保守範囲をサービス側へ寄せやすい。料金とデータ取扱条件を確認 |
| セルフホスト型 | 自社管理 | 必要な計算資源・保守体制 | 構成の自由度が高い。更新・監視・バックアップの担当を明確化 |
| ハイブリッド型 | 自社管理 / Cloud | 段階的な拡張・移行要件 | 導入形態を選べる。機能差と移行方法を事前に確認 |
ポイント:製品名だけで決めず、検索方式・メタデータ絞り込み・運用条件を候補ごとに確認します。運用コスト、既存基盤との統合性、データの取扱地域、バックアップと移行方法、チームのスキルセットまで比較してください。
実装に使う技術スタックの選び方
RAG実装の技術スタックを、LLM・embedding・実装方式の3軸で整理します。製品やモデルの名称は更新が速いため、利用時点の公式ドキュメントで提供状況、料金、対応地域、データ取扱条件を確認してください。
LLMの選び方(用途別の3軸)
回答生成に使うLLMは 品質・応答時間・費用・契約条件を同じ評価データで比較 して選びます。費用相場や総合比較は AI受託開発の費用相場2026年版 を参照してください。
- 回答の根拠性
- 長文処理の品質
- 複雑な指示への追従
契約書の論点抽出・多段推論・長文要約を評価対象にする
- 検索後の回答品質
- 応答時間と費用
- 安定した提供条件
想定する利用量で品質・速度・費用を比較する
- 応答時間
- 処理単価
- 大量処理への適合
クエリ書換え・軽量ルーティング・ラベリング向き
embeddingモデル
検索品質の土台になるembeddingモデルは、次の比較軸で候補を絞ります。
| 選択肢 | 主な確認項目 | 特徴 |
|---|---|---|
| 汎用API型 | 日本語評価・費用 | 導入しやすく、複数候補を同じ評価データで比較しやすい |
| 高精度重視型 | 専門文書・処理量 | 複雑な文書で候補になる。検索品質と運用費用を併せて評価 |
| 調整可能型 | 保存量・検索品質 | データ量や応答要件に合わせて構成を調整しやすい |
| ローカル実行型 | 計算資源・保守 | データ取扱要件に合わせやすい。更新と運用の体制が必要 |
日本語向けのローカルembeddingという選択肢:外部APIへの送信を避ける要件では、ローカル実行できるモデルも候補です。公開ベンチマークは候補選定の参考になりますが、対象文書・質問・正解文書をそろえた自社評価を優先します。必要な計算資源、ライセンス、更新方法、モデル変更時の再処理まで確認してください。
実装方式の選び方(汎用 / RAG特化 / シンプル構成)
実装方式は大きく3択です。機能の広がりとチームの保守体制を比較表にまとめました。
| 選択肢 | 特徴 | 学習コスト | 向くケース |
|---|---|---|---|
| 汎用フレームワーク | 連携機能を広げやすい | 中〜高 | 検索、会話履歴、外部処理などを段階的に追加するプロジェクト |
| RAG特化フレームワーク | 文書検索の部品がまとまっている | 低〜中 | 社内ナレッジ検索を中心に短期間で検証するプロジェクト |
| シンプル構成 | 必要な処理だけを組み合わせる | 実装範囲による | 依存範囲、変更の自由度、保守責任を明確にしたいプロジェクト |
選定時は 初期開発の速さだけでなく保守性 を確認します。依存ライブラリの更新方針、機能追加の見通し、障害時の切り分けやすさ、担当チームの経験を合わせて判断してください。
コードを書かない選択肢との比較:ノーコード製品もRAGを検証する候補です。対象文書、利用者の閲覧範囲、評価方法、既存システム連携などの要件を整理し、各製品の公式仕様を確認します。個別実装は、必要な要件と運用体制を明確にしたうえで比較してください。
RAG導入の進め方|PoCから継続改善までの段階的な拡張
RAGは、要件と評価データを整えたうえで、小さな検証から利用範囲を広げると改善点を切り分けやすくなります。ここではPoC、利用範囲の拡張、継続改善の3段階に分け、各段階で確認する項目を整理します。社内文書検索の製品機能を比較する際は、対応ファイル形式、検索・要約の範囲、権限制御、出典表示を各製品の公式機能ページで確認してください。
段階的な導入と改善の流れ
Phase 1 — PoC段階(評価方法を決める)
- 対象文書: 用途と閲覧範囲が明確な文書から選ぶ
- 検索単位: 文書構造に沿った分割と一定量の分割を比較する
- 検索基盤: 検証環境で候補を比較し、運用条件を確認する
- 回答生成: 出典を示し、根拠の範囲で回答する要件を定める
- 評価: 想定質問と参照すべき文書を用意し、判定基準をそろえる
PoCでは、検索単位と回答方針を分けて評価します。文書構造に沿った分割と一定量の分割を比較し、必要な文脈を取得できる方法を選びます。十分な根拠を取得できない場合の応答方針も先に決め、回答の一貫性と利用者の確認しやすさを評価対象にします。
Phase 2 — 利用範囲の拡張(運用条件を確認する)
- 文書種別: 種別ごとに適した分割方法を評価する
- 文脈の連続性: 前後関係を保つ方法を比較する
- 回答方針: 根拠が不足する場合の表示と案内を統一する
- 評価パイプライン: 評価データを拡充し、検索品質と回答品質を定期的に確認する
利用範囲を広げる段階では、検索品質だけでなく、出典表示、閲覧範囲、文書更新の反映、問い合わせ時の案内まで確認します。評価結果は変更前後で比較し、改善効果と副作用を切り分けられるよう、一度に変更する項目を絞ります。
Phase 3 — 継続改善(評価結果から優先順位を決める)
- モデル選定: 同じ評価データで品質、応答時間、費用、契約条件を比較する
- 検索改善: 文書分割、検索方式、並べ替えの候補を一項目ずつ評価する
- 閲覧範囲: 利用者が参照できる文書だけを検索対象にする
- 運用確認: 品質と稼働状況を継続的に確認し、変化の原因を切り分ける
継続改善では、利用者の目的に直結する評価指標を定め、品質、応答時間、費用のバランスを確認します。複数モデルや追加処理の比較は、評価データと判定基準を整えてから行うと、採用理由と見送り理由を説明しやすくなります。
2026年10月時点の補足:モデルやサービスの提供状況は短期間で変わります。一方、同じ評価データで変更前後を比較し、検索品質と回答品質を確認してから切り替える手順は共通です。構成を必要以上に複雑化せず、変更理由と評価結果を追える状態にします。
裏を返すと、この規模の改善サイクルを回し続けるには評価データの整備とチューニングに継続的なリソースが要ります。社内に割ける人員がいない場合は、生成AIの受託開発のように外部の運用ノウハウごと借りる進め方も現実的です。
RAGの精度を上げる実践テクニック5選
最小構成で動いたあと、精度を継続的に上げる打ち手を5つ紹介します。どれも 評価パイプラインの数値で効果を測れる範囲 で導入します。
- ハイブリッド検索 — ベクトル検索とキーワード検索を組み合わせる。固有名詞・型番・コード片のように「文字列そのもの」を検索したい場面で候補になり、評価データで単独検索との差を確認する
- リランキング — 取得した候補を質問との関連度で並べ替える。embeddingだけの検索と比較し、対象文書で検索品質と応答時間を評価する
- クエリ書き換え(HyDE) — 質問文から 仮想的な回答 をLLMに先に作らせて、その仮想回答でベクトル検索する手法。短い質問への候補手法として、対象文書で比較評価する
- メタデータフィルタリング — 部署・閲覧範囲・作成日で検索対象を絞る。利用者が参照できる範囲と検索対象を一致させる
- フィードバックループ — 回答採用率(回答が実際に業務で使われたか)・クリック率・low quality報告を蓄積し、ダメな回答パターンからプロンプト・チャンク・embeddingの見直しにつなげる
発展形として、検索を1回で終える固定パイプラインに加え、LLMが必要に応じて検索を繰り返す Agentic RAG 構成もあります。導入時は同じ評価データで固定パイプラインと比較し、必要性と運用範囲を確認してください。
よくある質問(FAQ)
まとめ|RAG構築は最小構成から始めて段階的に拡張する
RAGは小さな概念実証から始め、共通の評価データを使いながら文書分割・embedding・検索・回答生成を一項目ずつ調整する流れが現実的です。変更単位を絞ることで、検索品質や運用への影響を判断しやすくなります。
本記事で扱った設計判断4つ(チャンク分割戦略・embeddingモデル・ベクトル検索基盤・検索基準)を整理し、LLMは評価データで品質、応答時間、費用、契約条件を比較して選びます。この順序で、PoCから継続改善までの道筋を明確にできます。
次に読む
株式会社ロフタルは、ノーコードデータベースサービスPigeonCloudを開発・運営しています。製品機能の詳細は公式機能ページで確認でき、生成AIを活用するシステムの受託開発もご相談いただけます。
最終更新: 2026年10月18日
データ管理、もっと簡単に。
Excel・Access・スプレッドシートの課題を、ノーコードのWebデータベース「PigeonCloud」が解決します。
月額5,500円〜(5ユーザー)、30日間無料でお試しいただけます。