🏠 ホーム ニュース 📖 解説記事 📚 トピック解説 🏷️ タグ一覧 ℹ️ About
ツール
💰 API料金計算機 NEW
🔍 記事を検索
カテゴリ
📡 RSSフィード
Follow
X (Twitter) 🧵 Threads
🔧 ツール
💰API料金計算機
トピック
🧠 Claude Code 🤖 AIエージェント 🎵 AIコーディング / Vibe Coding 🔌 MCP(Model Context Protocol) 🔍 RAG & ナレッジシステム 💬 LLM / ローカルAI 🔒 セキュリティ ⚙️ DevOps & 自動化 💰 Claude API & 料金 🎨 UI生成 & デザインシステム
ニュース一覧 🏷️タグから探す
Subscribe
📡 RSSフィード
ホーム explain 2026.04.21

RAGとは?仕組み・構築・ベクトルDB選定まで【2026年完全ガイド】

langchain-ai/langchain
🔍
RAGとは?仕組み・構築・ベクトルDB選定まで【2026年完全ガイド】 - AIツール日本語解説 | AI Heartland
// なぜ使えるか
SV14,800の「RAGとは」に対し、ベクトルDB比較・LangChain実装コード・RAGAS評価まで網羅した日本語唯一の実践ガイド。

LLMに社内文書について質問すると、的外れな回答や「ハルシネーション(幻覚)」が返ってくる——。この問題を解決するのがRAG(Retrieval-Augmented Generation=検索拡張生成)だ。

2026年現在、RAGはエンタープライズAI導入の最も一般的なアーキテクチャパターンとなった。しかし「RAGとは」で検索しても、概念の説明で終わる記事がほとんどだ。本記事はRAGの仕組みを図解するだけでなく、LangChainで実際にRAGパイプラインを構築し、ベクトルDBを選定し、RAGASで品質を評価するところまでカバーする。コピペで動くコード付きの実践ガイドだ。

RAGとは——LLMのハルシネーションを解決する検索拡張生成

RAGとは「Retrieval-Augmented Generation(検索拡張生成)」の略で、2020年にMeta AI(旧Facebook AI Research)の Patrick Lewis らが提唱した手法だ。LLMが回答を生成する前に、外部のデータベースやドキュメントから関連情報を検索(Retrieve)し、その情報を文脈としてプロンプトに含めてから生成(Generate)する。

なぜRAGが必要なのか

LLMには3つの根本的な限界がある。RAGはこれらすべてに対処する。

LLMの限界 具体的な問題 RAGによる解決
知識の鮮度 学習データのカットオフ以降の情報を知らない 最新ドキュメントを検索して補完
ハルシネーション もっともらしいが事実と異なる回答を生成 参照元ドキュメントに基づいて回答
社内知識の欠如 非公開の社内文書・マニュアルを知らない 社内DBを検索ソースに追加

RAGとファインチューニングの違い

LLMに新しい知識を与える手法として、RAGとファインチューニングがよく比較される。

観点 RAG ファインチューニング
知識の更新 即時(ドキュメント追加のみ) 再学習が必要(数時間〜数日)
コスト 低い(検索インフラのみ) 高い(GPUコンピュート)
出典の提示 可能(参照チャンクを表示) 不可能
応答スタイル変更 苦手 得意
推奨シーン 社内FAQ、ドキュメント検索、最新情報 文体変更、専門用語対応

2026年の実務では、まずRAGを導入し、それでも不十分な場合にのみファインチューニングを検討するのが標準的なアプローチだ。

RAGパイプラインの仕組みを図解——チャンキングからレトリーバルまで

RAGパイプラインは大きく「インデックス構築(オフライン)」と「検索+生成(オンライン)」の2フェーズで構成される。

flowchart TD subgraph offline["インデックス構築(オフライン)"] A["ドキュメント
(PDF・HTML・MD)"] --> B["チャンキング
(テキスト分割)"] B --> C["埋め込みモデル
(Embedding)"] C --> D["ベクトルDB
に格納"] end subgraph online["検索+生成(オンライン)"] E["ユーザーの質問"] --> F["質問を
ベクトル化"] F --> G["類似度検索
(top-k取得)"] D --> G G --> H["検索結果を
プロンプトに挿入"] H --> I["LLMが
回答生成"] end style offline fill:#1e293b,color:#fff style online fill:#1e293b,color:#fff

Step 1: チャンキング(テキスト分割)

ドキュメントをそのまま埋め込むと、1つのベクトルに大量の情報が詰め込まれ、検索精度が下がる。そこでドキュメントを適切なサイズの「チャンク」に分割する。MinerUのようなPDF変換ツールで前処理すると精度が向上する。

分割戦略 特徴 推奨チャンクサイズ
固定サイズ 文字数で機械的に分割 500〜1000文字
再帰的分割 段落→文→文字の順で分割を試行 500〜1000文字
セマンティック分割 意味の区切りで分割(埋め込みの類似度変化点) 可変
親子分割 大きなチャンク内の小さなチャンクで検索 親: 2000、子: 500
from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=800,
    chunk_overlap=200,       # チャンク間の重複(文脈の断絶を防ぐ)
    separators=["\n\n", "\n", "", "", " "],  # 日本語対応
)
chunks = splitter.split_documents(documents)

Step 2: 埋め込み(Embedding)

チャンクを数値ベクトルに変換する。2026年時点の主要モデル比較は以下の通りだ。

モデル 次元数 日本語対応 価格($/1Mトークン) 特徴
OpenAI text-embedding-3-large 3072 $0.13 最も普及。次元削減可能
Cohere embed-v4 1024 $0.10 多言語、圧縮表現
BGE-M3 1024 無料(OSS) 多言語に強い。ローカル実行可
multilingual-e5-large 1024 無料(OSS) Microsoft製。MTEB上位

日本語ドキュメント中心のRAGなら、BGE-M3(ローカル)またはtext-embedding-3-large(API)が実績豊富だ。

Step 3: ベクトル検索

質問文を同じ埋め込みモデルでベクトル化し、ベクトルDB内のチャンクとのコサイン類似度を計算して上位k件を取得する。

Step 4: LLM生成

検索されたチャンクをプロンプトの「コンテキスト」として挿入し、LLMに回答を生成させる。

prompt_template = """以下のコンテキストに基づいて質問に回答してください。
コンテキストに記載がない場合は「情報がありません」と回答してください。

コンテキスト:
{context}

質問: {question}
回答:"""

ベクトルデータベース比較2026——Pinecone・Qdrant・Chroma・pgvector

ベクトルDBはRAGのパフォーマンスと運用コストを左右する重要な選択だ。2026年時点の主要ベクトルDBを比較する。

DB 言語 ホスティング 無料枠 最大ベクトル数 特徴
Pinecone フルマネージド 5GBまで無料 無制限(課金) サーバーレス。セットアップ最速
Qdrant Rust セルフホスト/Cloud OSS無料 無制限 高性能フィルタリング、gRPC対応
Chroma Python インメモリ/永続 OSS無料 メモリ依存 軽量。プロトタイプに最適
pgvector C PostgreSQL拡張 OSS無料 テーブルサイズ依存 既存DBインフラを活用可能
Weaviate Go セルフホスト/Cloud OSS無料 無制限 GraphQL API、モジュール型
Milvus Go/C++ セルフホスト/Zilliz OSS無料 10億ベクトル超 大規模特化。GPU対応
**ベクトルDB選定の判断基準** - **プロトタイプ・PoC** → **Chroma**(pip installだけで動く、サーバー不要) - **本番・中規模** → **Qdrant**(Rust製で高性能、Docker一発で起動) - **既存PostgreSQL活用** → **pgvector**(追加インフラ不要、SQL慣れたチームに最適) - **大規模エンタープライズ** → **Pinecone**(フルマネージド、運用ゼロ)or **Milvus**(10億ベクトル超)
# Qdrantをローカルで起動(Docker)
docker run -p 6333:6333 qdrant/qdrant:latest

# pgvectorを既存PostgreSQLに追加
CREATE EXTENSION vector;
CREATE TABLE documents (
  id SERIAL PRIMARY KEY,
  content TEXT,
  embedding vector(1536)  -- OpenAI embedding次元数
);

RAG構築の実践——LangChainでゼロから作る

ここからが実装パートだ。LangChainの基本的な使い方を前提に、RAGパイプラインをゼロから構築する。RAG From Scratchシリーズも参考になる。

最小構成のRAG(30行)

from langchain_community.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA

# 1. ドキュメント読み込み
loader = DirectoryLoader("./docs", glob="**/*.md")
documents = loader.load()

# 2. チャンキング
splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=200)
chunks = splitter.split_documents(documents)

# 3. ベクトルDB構築
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")

# 4. RAGチェーン構築
llm = ChatOpenAI(model="gpt-4o", temperature=0)
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(search_kwargs={"k": 4}),
    return_source_documents=True,
)

# 5. 質問
result = qa_chain.invoke({"query": "RAGの精度を向上させる方法は?"})
print(result["result"])
for doc in result["source_documents"]:
    print(f"  出典: {doc.metadata['source']}")

このコードだけで、ローカルのMarkdownファイルに対するRAGチャットボットが動作する。Chromaはインメモリ動作するため、外部サービスの設定は不要だ。

LlamaIndex版(より簡潔)

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

# 3行でRAG完成
documents = SimpleDirectoryReader("./docs").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()

response = query_engine.query("RAGの精度を向上させる方法は?")
print(response)

LlamaIndexは「データフレームワーク」としての設計思想で、LangChainより少ないコードでRAGを構築できる。一方、カスタマイズ性はLangChainが優る。

LangChain vs LlamaIndex——どちらを選ぶか

観点 LangChain LlamaIndex
GitHub Stars 105k 40.8k
設計思想 汎用LLMアプリフレームワーク データインデックス特化
コード量 やや多い(柔軟性のため) 少ない(規約ベース)
カスタマイズ性 高い(各コンポーネント差替可能) 中程度
エージェント統合 LangGraph(推奨) LlamaIndex Agents
推奨シーン 複雑なRAG、マルチソース、エージェント シンプルなRAG、高速プロトタイプ

実務ではLlamaIndexでプロトタイプを素早く作り、要件が複雑化したらLangChainに移行するパターンが多い。

Advanced RAG——HyDE・Multi-Queryで検索精度を上げる

基本的なRAGパイプラインでは、ユーザーの質問文と関連ドキュメントの「言い回しの違い」によって検索精度が下がることがある。Advanced RAGはこの問題に対処する技術群だ。

HyDE(Hypothetical Document Embeddings)

ユーザーの質問に対して、LLMが「仮想的な回答ドキュメント」を生成し、そのドキュメントの埋め込みベクトルで検索する手法だ。質問文より回答文のほうがドキュメントとの類似度が高くなるという洞察に基づく。

flowchart LR A["ユーザーの質問"] --> B["LLMが仮想回答を生成"] B --> C["仮想回答を
ベクトル化"] C --> D["ベクトルDBで
類似度検索"] D --> E["取得した実文書で
LLMが最終回答"] style B fill:#f59e0b,color:#fff

Multi-Query Retriever

1つの質問を複数の異なる表現に言い換え、それぞれで検索して結果を統合する。「異なる視点からの検索」で網羅性を高める。

from langchain.retrievers.multi_query import MultiQueryRetriever

retriever = MultiQueryRetriever.from_llm(
    retriever=vectorstore.as_retriever(),
    llm=ChatOpenAI(model="gpt-4o-mini"),
)
# 1つの質問から3つのバリエーションを自動生成して検索
docs = retriever.invoke("RAGの精度向上方法")

Agentic RAG

LLMがエージェントとして動作し、「どのデータソースから検索すべきか」を自律的に判断する。単一のベクトルDBだけでなく、SQL DB、Web検索、API呼び出しを組み合わせる高度なアプローチだ。2026年はMCP(Model Context Protocol)との統合により、エージェントが外部ツールにアクセスするパターンが急速に普及している。

手法 改善対象 実装難易度 効果
HyDE 検索の質問-文書ギャップ 高(+15-20%向上)
Multi-Query 検索の網羅性 中(+10-15%向上)
Parent Document チャンク断片化 高(文脈保持)
Contextual Compression ノイズ除去 中(回答精度)
Agentic RAG マルチソース対応 高(柔軟性)

RAGの品質評価——RAGASフレームワークで定量化する

RAGパイプラインを構築したら、品質を定量的に評価する必要がある。RAGAS(Retrieval Augmented Generation Assessment)は、RAGパイプライン評価の業界標準フレームワークだ。

3つの評価指標

指標 測定対象 計算方法 目標値
Faithfulness 回答が検索結果に忠実か 回答内の主張のうち、コンテキストで裏付けられる割合 0.8以上
Answer Relevancy 回答が質問に関連しているか 回答から逆生成した質問と元の質問の類似度 0.8以上
Context Recall 必要な情報を検索できているか Ground Truthに含まれる事実のうち、検索コンテキストでカバーされる割合 0.7以上
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_recall
from datasets import Dataset

# 評価データセット
eval_data = Dataset.from_dict({
    "question": ["RAGとは何ですか?"],
    "answer": ["RAGは検索拡張生成の手法で..."],
    "contexts": [["RAGはRetrieval-Augmented Generationの略で..."]],
    "ground_truth": ["RAGはLLMの回答精度を向上させる技術で..."],
})

result = evaluate(eval_data, metrics=[faithfulness, answer_relevancy, context_recall])
print(result)
# {'faithfulness': 0.92, 'answer_relevancy': 0.88, 'context_recall': 0.85}
**RAGASを使う際の注意点**:評価にはLLM呼び出しが必要なため、大量の評価データセットではAPIコストがかかる。まずは20〜50件のQAペアから始め、パイプラインの改善サイクルを回すのが実践的だ。Ground Truthの作成は手動で行う必要がある(これが最も手間のかかる部分)。

RAG vs ロングコンテキスト——1Mトークン時代にRAGは不要か?

2026年、Claude Opus 4.6やGPT-5.4は100万トークン(約75万文字)のコンテキストウィンドウを持つ。「ドキュメントを全部コンテキストに入れれば、RAGは不要では?」という疑問が自然に浮かぶ。

観点 RAG ロングコンテキスト
ドキュメント量 数万件でもスケール 数十ファイルが現実的上限
レイテンシ 検索 + 生成(1-3秒) 全文読み込み(10-30秒)
コスト 検索は安い(ベクトルDB) 入力トークン全額課金(高額)
精度(針を探す) チャンク単位で高精度 長文だと「迷子」になりやすい
更新の即時性 ドキュメント追加のみ 毎回全文を入力する必要あり
出典の提示 チャンク単位で出典表示可能 「どこに書いてあったか」の特定が曖昧

結論:RAGとロングコンテキストは「競合」ではなく「補完」の関係だ。数十ファイルの小規模プロジェクトならロングコンテキストで十分だが、数千〜数万件のドキュメントを扱うエンタープライズ用途ではRAGが不可欠だ。実際、2026年の多くのエンタープライズRAGシステムは「RAGで関連ドキュメントを絞り込み → ロングコンテキストで深く理解する」というハイブリッドアプローチを採用している。

コスト試算:1,000件のドキュメントを扱う場合

大量ドキュメントを扱う場合、RAGのコスト優位は200倍になる。

エンタープライズRAG——Dify・RAGFlow・Onyxの使い分け

コードを書かずにRAGを構築できるエンタープライズ向けツールも充実している。とくにDify、RAGFlow、Onyxが2026年の三大選択肢だ。

ツール 特徴 対応LLM ドキュメント処理 価格
Dify ノーコードAIアプリビルダー Claude, GPT, Gemini等 標準的なRAG OSS無料 + Cloud有料
RAGFlow 深いドキュメント理解(DeepDoc) 主要LLM全対応 表・図・レイアウト対応 OSS無料
Onyx 社内ドキュメント検索特化 主要LLM全対応 Slack/Confluence/Google Drive連携 OSS無料

選定の指針

**RAG構築のロードマップ** 1. **PoC(1-2日)**:Chroma + LangChain or Difyで最小構成を構築 2. **精度改善(1-2週間)**:チャンキング戦略の調整、Advanced RAG手法の適用、RAGASで評価 3. **本番化(1-2ヶ月)**:Qdrant/pgvectorへ移行、認証・権限管理、監視・ログ 4. **運用最適化**:ドキュメント更新の自動パイプライン、コスト監視、A/Bテスト

参照ソース

B!
B! この記事をはてブに追加
よくある質問
RAGとは何ですか?
RAG(Retrieval-Augmented Generation)は検索拡張生成の略で、LLMが回答を生成する前に外部データベースから関連情報を検索・取得して文脈に含める技術です。ハルシネーション(幻覚)を抑制します。
RAGとファインチューニングの違いは?
ファインチューニングはモデル自体を再学習させる手法で、RAGは推論時に外部知識を参照する手法です。RAGはデータ更新が即時反映でき、コストも低いため、企業での採用が先行しています。
RAGの構築に必要なものは?
最低限必要なのは(1)ドキュメント、(2)埋め込みモデル、(3)ベクトルDB、(4)LLMの4つです。LangChainやLlamaIndexを使えば、Pythonで50行程度のコードから構築できます。
おすすめのベクトルDBは?
プロトタイプならChroma(インメモリ、セットアップ不要)、本番運用ならQdrant(Rust製、高性能)またはpgvector(既存PostgreSQL活用)が実績豊富です。
RAGの精度を評価する方法は?
RAGASフレームワークが標準的です。Faithfulness(忠実度)、Answer Relevancy(回答関連性)、Context Recall(文脈再現率)の3指標でパイプライン全体を定量評価できます。
ノーコードでRAGを構築できますか?
はい。Dify、RAGFlow、Onyxなどのツールを使えば、GUIからドキュメントをアップロードするだけでRAGチャットボットを構築できます。
🔍
RAG & ナレッジシステム
RAGの仕組み、構築方法、ベクトルデータベース比較 →
広告
GitHub で見る
役に立ったらシェアをお願いします
🔔 AI速報、毎日Xで配信中
Claude Code・MCP・AIエージェントの最新ニュースをいち早くお届け
@peaks2314 をフォロー
記事の信頼性について
AI Heartland エディトリアルポリシーに基づき作成
複数ソース照合
公式情報・報道等を突き合わせて確認
ファクトチェック済
ソースURLの内容を検証
参照ソース明記
記事末尾に引用元を掲載
Next Read →
🔒 サプライチェーンセキュリティ完全ガイド2026|攻撃手法・防御ツール・実践チェックリスト
関連記事
🧠 cognee完全ガイド:ナレッジグラフ型AIメモリの仕組みとClaude APIローカル連携・MCP設定手順
GitHubスター15,000超のcogneeを徹底解説。ECLパイプライン・ナレッジグラフ型RAGの仕組みから、Anthropic Claude APIとの設定・MCP連携・ローカルセットアップまで実装コード付きで解説。mem0・MemGPTとの比較表あり。
2026.04.16
⚙️ AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較
AI自動化ツールをノーコード(n8n・Make・Zapier)からコード(Airflow・Prefect)、AIブラウザ自動化(Browser Use)、MCP連携まで徹底比較。料金表・コード例・選定フロー付きで開発者の自動化戦略を支援。
2026.04.21
🧠 LLMとは?仕組みからローカル実行まで徹底解説【2026年完全ガイド】
LLM(大規模言語モデル)の仕組みをTransformer・MoEから図解。2026年最新モデル比較、日本語LLM特集、Ollama・vLLM・llama.cppローカル実行手順、量子化の選び方まで。概念で終わらない実践ガイド。
2026.04.21
🎨 Claude Design活用術:Figma・Canva AI・v0と徹底比較+実用プロンプト集
claude design 使い方をFigma・Canva AI・v0・Lovableとの詳細比較で解説。ユースケース別の選択ガイドとコピペ実用プロンプト20選も収録。2026年最新版。
2026.04.19
Popular
#1 POPULAR
🔓 【速報】Vercel不正アクセス・情報漏洩:GitHub/NPMトークン流出とNext.js CVE緊急対処法
Vercelでセキュリティ侵害・情報漏洩リスクが発覚。Google OAuth不正アクセス経由でGitHub/NPMトークンが流出の可能性。環境変数の緊急ローテーション手順とNext.js CVE-2026-23869/23864パッチ適用方法を解説。
#2 POPULAR
🎨 awesome-design-md:DESIGN.mdでAIにUI生成させる方法【58ブランド対応】
DESIGN.mdをプロジェクトに置くだけでAIエージェントが一貫したUI生成を実現。Vercel・Stripe・Claudeなど58ブランドのデザイン仕様をnpx 1コマンドで導入する方法と、実際の出力差を検証した結果を解説。
#3 POPULAR
📊 TradingView MCP:Claude CodeからTradingViewを完全操作する78ツールのMCPサーバー
TradingView MCPはClaude CodeからTradingView Desktopを直接操作できる78ツール搭載のMCPサーバー。チャート分析、Pine Script開発、マルチペイン、アラート管理、リプレイ練習まで自然言語で実行。導入手順を解説
#4 POPULAR
🔍 last30days-skill完全ガイド|Reddit・X・YouTube横断AIリサーチスキルの使い方2026年版
last30days-skillはReddit・X・YouTube・TikTokなど10+ソースを横断して最新30日のトレンドをAIで分析するClaude Codeスキル。使い方・設定・活用例を解説。
#5 POPULAR
📓 notebooklm-py:PythonでGoogle NotebookLMを完全自動化するOSSライブラリ徹底解説
DeNA南場会長がPerplexityで集めた記事をNotebookLMに投入し人物理解に活用する手法が話題。そのNotebookLMをPythonで完全自動化するOSSがnotebooklm-py。ポッドキャスト生成・ノートブック管理をAPI化。
← LLMとは?仕組みからローカル実行まで徹底解説【2026年完全ガイド】 サプライチェーンセキュリティ完全ガイド2026|攻撃手法・防御ツール・実践チェックリスト →