ブログ
2026.07.25 受託開発

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行で言えば次の通り。

  1. ユーザーの質問文を embedding(ベクトル) に変換する
  2. ベクトル検索基盤で 関連度の高い社内文書を検索 する
  3. 検索結果を LLMのプロンプトに埋め込み、その文脈の範囲内で回答を生成させる

RAGの処理フロー(質問から回答まで)

質問
自然文で入力
→
embedding変換
質問をベクトル化
→
ベクトル検索
類似度の高い社内文書を抽出
→
プロンプト合成
検索結果を文脈として埋込
→
回答生成
LLMが検索結果を参照して回答を生成し、出典を併記できるよう設計

回答根拠を検索結果に寄せ、出典を確認できる形で創作(ハルシネーション)の抑制を図る

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つ(エンジニア向け)

最小構成から本番運用レベルまでの流れを、エンジニアが手を動かす順番で並べます。

STEP 1
ドキュメント収集
社内Wiki・議事録・マニュアルを集める。文書形式ごとに本文を抽出し、ファイル単位に出典・作成日・閲覧範囲などのメタデータを付ける
STEP 2
チャンク分割
短すぎる分割は文脈が欠け、長すぎる分割は検索対象が曖昧になる。見出し・改行・文のまとまりを使う分割と、一定量で区切る分割を用途で使い分ける
STEP 3
embedding生成
対象言語、専門用語への適合、処理量、費用、データの取扱条件を比較する。候補を同じ評価データで試し、検索品質と運用条件の両面で選定する
STEP 4
ベクトルDB格納
既存データベースに統合する方式、専用の管理サービス、セルフホスト方式から選定する。文書量、更新頻度、運用体制、既存基盤との統合性を比較する
STEP 5
類似検索処理
候補件数と関連度の基準は、評価データに基づいて調整する。利用者の閲覧範囲を検索時にも適用し、参照可能な文書だけを回答生成へ渡す
STEP 6
LLM呼び出し
精度、応答時間、費用、契約上のデータ取扱条件を比較してモデルを選定する。検索結果を根拠として回答し、利用者が確認できる形で出典を併せて示す
STEP 7
評価パイプライン
想定質問と参照すべき文書を含む評価データを用意し、検索品質と回答品質を継続的に確認する。変更は一項目ずつ行い、評価結果を比較する
STEP 8
運用監視
品質と稼働状況を継続的に確認する。変化が見つかった場合は、文書の更新状況、検索設定、回答生成の順に原因を切り分ける

ご案内 実装で詰まっている・要件整理から相談したい方へ 無料オンライン技術相談 →

RAG設計で最初に決める4つの判断

RAGの検索品質には コードだけでなく設計判断 が大きく影響します。プロジェクト着手前に決めておく4点を整理しました。

01

チャンク分割戦略

固定長 vs 文書構造に沿った分割の判断。議事録のように短い記述が続く文書と、契約書・仕様書のように章立てがある文書では、適する分割方法が異なります。

前後の文脈を一部重ねる方法も含め、自社文書で検索品質を比較する

02

embedding モデル選定

対象言語、専門用語、処理量、費用、契約条件を比較し、同じ評価データで検索品質を確認します。

モデル変更時の再処理範囲も確認し、移行コストを含めて選定する

03

ベクトルDB選定

下記比較表を参考に、文書量、更新頻度、既存基盤との統合性、運用担当者のスキル、保守範囲で決めます。候補ごとにバックアップ、監視、移行方法まで確認します。

04

検索スコア閾値

候補件数と関連度の基準を評価データから決めます。十分な根拠を取得できない場合の応答方針も、要件として先に定義します。

検索設定は文書追加や利用傾向の変化に合わせて定期的に評価する

ベクトルDB比較表

選択肢形態確認する規模要件特徴
既存DB統合型既存基盤へ追加文書数・更新量・検索負荷運用基盤を共通化しやすい。既存環境との互換性を確認
マネージド型クラウドサービス将来の増加量・同時利用保守範囲をサービス側へ寄せやすい。料金とデータ取扱条件を確認
セルフホスト型自社管理必要な計算資源・保守体制構成の自由度が高い。更新・監視・バックアップの担当を明確化
ハイブリッド型自社管理 / Cloud段階的な拡張・移行要件導入形態を選べる。機能差と移行方法を事前に確認

ポイント:製品名だけで決めず、検索方式・メタデータ絞り込み・運用条件を候補ごとに確認します。運用コスト、既存基盤との統合性、データの取扱地域、バックアップと移行方法、チームのスキルセットまで比較してください。

実装に使う技術スタックの選び方

RAG実装の技術スタックを、LLM・embedding・実装方式の3軸で整理します。製品やモデルの名称は更新が速いため、利用時点の公式ドキュメントで提供状況、料金、対応地域、データ取扱条件を確認してください。

LLMの選び方(用途別の3軸)

回答生成に使うLLMは 品質・応答時間・費用・契約条件を同じ評価データで比較 して選びます。費用相場や総合比較は AI受託開発の費用相場2026年版 を参照してください。

品質重視モデル
複雑推論・高コスト
  • 回答の根拠性
  • 長文処理の品質
  • 複雑な指示への追従

契約書の論点抽出・多段推論・長文要約を評価対象にする

バランス型
速度・精度・価格の折衷
  • 検索後の回答品質
  • 応答時間と費用
  • 安定した提供条件

想定する利用量で品質・速度・費用を比較する

高速・低コスト
リアルタイム・大量処理
  • 応答時間
  • 処理単価
  • 大量処理への適合

クエリ書換え・軽量ルーティング・ラベリング向き

embeddingモデル

検索品質の土台になるembeddingモデルは、次の比較軸で候補を絞ります。

選択肢主な確認項目特徴
汎用API型日本語評価・費用導入しやすく、複数候補を同じ評価データで比較しやすい
高精度重視型専門文書・処理量複雑な文書で候補になる。検索品質と運用費用を併せて評価
調整可能型保存量・検索品質データ量や応答要件に合わせて構成を調整しやすい
ローカル実行型計算資源・保守データ取扱要件に合わせやすい。更新と運用の体制が必要

日本語向けのローカルembeddingという選択肢:外部APIへの送信を避ける要件では、ローカル実行できるモデルも候補です。公開ベンチマークは候補選定の参考になりますが、対象文書・質問・正解文書をそろえた自社評価を優先します。必要な計算資源、ライセンス、更新方法、モデル変更時の再処理まで確認してください。

実装方式の選び方(汎用 / RAG特化 / シンプル構成)

実装方式は大きく3択です。機能の広がりとチームの保守体制を比較表にまとめました。

選択肢特徴学習コスト向くケース
汎用フレームワーク連携機能を広げやすい中〜高検索、会話履歴、外部処理などを段階的に追加するプロジェクト
RAG特化フレームワーク文書検索の部品がまとまっている低〜中社内ナレッジ検索を中心に短期間で検証するプロジェクト
シンプル構成必要な処理だけを組み合わせる実装範囲による依存範囲、変更の自由度、保守責任を明確にしたいプロジェクト

選定時は 初期開発の速さだけでなく保守性 を確認します。依存ライブラリの更新方針、機能追加の見通し、障害時の切り分けやすさ、担当チームの経験を合わせて判断してください。

コードを書かない選択肢との比較:ノーコード製品もRAGを検証する候補です。対象文書、利用者の閲覧範囲、評価方法、既存システム連携などの要件を整理し、各製品の公式仕様を確認します。個別実装は、必要な要件と運用体制を明確にしたうえで比較してください。

ご案内 RAG導入支援の進め方や費用の目安を確認したい方へ RAG導入支援の詳細を見る →

RAG導入の進め方|PoCから継続改善までの段階的な拡張

RAGは、要件と評価データを整えたうえで、小さな検証から利用範囲を広げると改善点を切り分けやすくなります。ここではPoC、利用範囲の拡張、継続改善の3段階に分け、各段階で確認する項目を整理します。社内文書検索の製品機能を比較する際は、対応ファイル形式、検索・要約の範囲、権限制御、出典表示を各製品の公式機能ページで確認してください。

段階的な導入と改善の流れ

Phase 1|PoC
評価設計
対象文書と想定質問を絞り、検索品質と回答品質の判定方法を定める
Phase 2|利用範囲の拡張
運用確認
文書種別と利用者を段階的に広げ、権限・出典表示・更新手順を確認する
Phase 3|継続改善
品質改善
評価データを使い、検索・回答・運用の変更を一項目ずつ検証する

Phase 1 — PoC段階(評価方法を決める)

  • 対象文書: 用途と閲覧範囲が明確な文書から選ぶ
  • 検索単位: 文書構造に沿った分割と一定量の分割を比較する
  • 検索基盤: 検証環境で候補を比較し、運用条件を確認する
  • 回答生成: 出典を示し、根拠の範囲で回答する要件を定める
  • 評価: 想定質問と参照すべき文書を用意し、判定基準をそろえる

PoCでは、検索単位と回答方針を分けて評価します。文書構造に沿った分割と一定量の分割を比較し、必要な文脈を取得できる方法を選びます。十分な根拠を取得できない場合の応答方針も先に決め、回答の一貫性と利用者の確認しやすさを評価対象にします。

Phase 2 — 利用範囲の拡張(運用条件を確認する)

  • 文書種別: 種別ごとに適した分割方法を評価する
  • 文脈の連続性: 前後関係を保つ方法を比較する
  • 回答方針: 根拠が不足する場合の表示と案内を統一する
  • 評価パイプライン: 評価データを拡充し、検索品質と回答品質を定期的に確認する

利用範囲を広げる段階では、検索品質だけでなく、出典表示、閲覧範囲、文書更新の反映、問い合わせ時の案内まで確認します。評価結果は変更前後で比較し、改善効果と副作用を切り分けられるよう、一度に変更する項目を絞ります。

Phase 3 — 継続改善(評価結果から優先順位を決める)

  • モデル選定: 同じ評価データで品質、応答時間、費用、契約条件を比較する
  • 検索改善: 文書分割、検索方式、並べ替えの候補を一項目ずつ評価する
  • 閲覧範囲: 利用者が参照できる文書だけを検索対象にする
  • 運用確認: 品質と稼働状況を継続的に確認し、変化の原因を切り分ける

継続改善では、利用者の目的に直結する評価指標を定め、品質、応答時間、費用のバランスを確認します。複数モデルや追加処理の比較は、評価データと判定基準を整えてから行うと、採用理由と見送り理由を説明しやすくなります。

2026年10月時点の補足:モデルやサービスの提供状況は短期間で変わります。一方、同じ評価データで変更前後を比較し、検索品質と回答品質を確認してから切り替える手順は共通です。構成を必要以上に複雑化せず、変更理由と評価結果を追える状態にします。

裏を返すと、この規模の改善サイクルを回し続けるには評価データの整備とチューニングに継続的なリソースが要ります。社内に割ける人員がいない場合は、生成AIの受託開発のように外部の運用ノウハウごと借りる進め方も現実的です。

ご案内 この評価パイプラインと運用体制ごと使いたい方へ 無料オンライン技術相談 →

RAGの精度を上げる実践テクニック5選

最小構成で動いたあと、精度を継続的に上げる打ち手を5つ紹介します。どれも 評価パイプラインの数値で効果を測れる範囲 で導入します。

  1. ハイブリッド検索 — ベクトル検索とキーワード検索を組み合わせる。固有名詞・型番・コード片のように「文字列そのもの」を検索したい場面で候補になり、評価データで単独検索との差を確認する
  2. リランキング — 取得した候補を質問との関連度で並べ替える。embeddingだけの検索と比較し、対象文書で検索品質と応答時間を評価する
  3. クエリ書き換え(HyDE) — 質問文から 仮想的な回答 をLLMに先に作らせて、その仮想回答でベクトル検索する手法。短い質問への候補手法として、対象文書で比較評価する
  4. メタデータフィルタリング — 部署・閲覧範囲・作成日で検索対象を絞る。利用者が参照できる範囲と検索対象を一致させる
  5. フィードバックループ — 回答採用率(回答が実際に業務で使われたか)・クリック率・low quality報告を蓄積し、ダメな回答パターンからプロンプト・チャンク・embeddingの見直しにつなげる

発展形として、検索を1回で終える固定パイプラインに加え、LLMが必要に応じて検索を繰り返す Agentic RAG 構成もあります。導入時は同じ評価データで固定パイプラインと比較し、必要性と運用範囲を確認してください。

ご案内 自社要件に合うRAG構成の見積もりを聞きたい方へ オンライン相談(無料) →

よくある質問(FAQ)

Q.RAGとファインチューニングの違いは? +
A.RAGは 知識を外部DBに持つ 仕組み、ファインチューニングは モデル自体に追加学習 する仕組みです。文書の更新頻度が高い・根拠を提示したい場合はRAGを候補とし、文体や特定タスクの振る舞いを調整したい場合はファインチューニングを候補にします。要件に応じて併用も比較します。
Q.RAGのベクトルDBは何を使うべき? +
A.文書量、更新頻度、既存基盤、運用体制で決まります。既存DB統合型、マネージド型、セルフホスト型を候補にし、検索方式、メタデータ絞り込み、料金、データ取扱条件、バックアップ、移行方法を比較してください。小さな評価データで検索品質を確認してから選ぶと判断しやすくなります。
Q.日本語対応のRAGで精度を上げるコツは? +
A.3点あります。(1) 見出し・句点・改行など文書構造を使った分割と、一定量で区切る分割を比較します。(2) embeddingは同じ日本語の評価データで候補を比較し、専門用語を含む質問でも参照文書を取得できるか確認します。(3) 候補の並べ替えを追加し、検索品質と応答時間の変化を測ります。変更は一項目ずつ試すと効果を判断しやすくなります。
Q.社内文書をRAGに入れる時のセキュリティは? +
A.観点は3つです。(1) 利用するサービスの規約・契約で、入力データの保存、学習利用、処理地域、再委託先を確認します。(2) 文書の保存先と通信経路を把握し、組織のセキュリティ基準に沿ってアクセスを制御します。(3) 利用者の閲覧範囲を検索時にも適用し、参照可能な文書だけを回答生成に使います。導入前に責任分界と削除手順も確認してください。
Q.RAG構築の期間はどれくらい? +
A.期間は、対象文書の量と形式、閲覧範囲、外部システム連携、評価データの準備状況によって異なります。PoCでは対象と判定基準を絞り、社内展開では文書更新、権限、監視、問い合わせ対応まで含めて計画します。見積もり時は データ準備と運用設計 の作業も確認してください。費用感は AI受託開発の費用相場 を参照してください。
Q.RAG実装にPythonは必須? +
A.RAGはPythonを含む複数の言語で実装できます。Pythonは検索・機械学習関連のライブラリや学習資料が多く、検証を始めやすい選択肢です。既存システムで採用している言語に対応する公式SDKがあれば、その言語で認証、監視、デプロイの仕組みを共通化する方法もあります。

まとめ|RAG構築は最小構成から始めて段階的に拡張する

RAGは小さな概念実証から始め、共通の評価データを使いながら文書分割・embedding・検索・回答生成を一項目ずつ調整する流れが現実的です。変更単位を絞ることで、検索品質や運用への影響を判断しやすくなります。

本記事で扱った設計判断4つ(チャンク分割戦略・embeddingモデル・ベクトル検索基盤・検索基準)を整理し、LLMは評価データで品質、応答時間、費用、契約条件を比較して選びます。この順序で、PoCから継続改善までの道筋を明確にできます。

次に読む

監修:株式会社ロフタル
PigeonCloud 開発・運営

株式会社ロフタルは、ノーコードデータベースサービスPigeonCloudを開発・運営しています。製品機能の詳細は公式機能ページで確認でき、生成AIを活用するシステムの受託開発もご相談いただけます。

最終更新: 2026年10月18日

社内ナレッジ検索をRAGで構築しませんか?

要件整理・評価設計から、段階的なRAG導入をご支援します

無料技術相談 段階的なPoC 複数候補を比較
RAG受託開発サービスを見る

データ管理、もっと簡単に。

Excel・Access・スプレッドシートの課題を、ノーコードのWebデータベース「PigeonCloud」が解決します。
月額5,500円〜(5ユーザー)、30日間無料でお試しいただけます。