📅 最終更新:2026年5月26日

RAG(Retrieval-Augmented Generation)とは?
仕組み・実装コード・ベクトルDB比較

RAGは、LLMが知らない最新情報や社内ドキュメントをリアルタイムで検索し、その内容を文脈として与えながら回答を生成する技術です。ファインチューニングより低コストで「LLMの幻覚」を減らせる最重要手法です。

ベクトル検索 LLM精度向上 社内知識活用

RAGとは(定義)

RAG(Retrieval-Augmented Generation)は2020年にMeta AIが発表した手法で、「外部ドキュメントを検索(Retrieval)してLLMに渡し、より正確な生成(Generation)を促す」アーキテクチャです。

RAGが解決する問題

  • ❌ LLMは訓練時のデータしか知らない(知識のカットオフ)
  • ❌ 社内ドキュメント・独自データをそのまま使えない
  • ❌ ファインチューニングは高コスト・再学習が必要
  • ✅ RAGはドキュメントを随時追加でき、低コストで知識を拡張できる

RAGの仕組み(3ステップ)

1

インデックス作成(Indexing)

ドキュメントをチャンク(小分け)に分割 → 埋め込みモデルでベクトル化 → ベクトルDBに保存。一度作れば使い回し可能。

2

検索(Retrieval)

ユーザーの質問をベクトル化し、DBで類似度検索(コサイン類似度等)。関連度の高いチャンクをTop-Kで取得。

3

生成(Generation)

取得したチャンクを「文脈(Context)」としてLLMのプロンプトに追加し、根拠ある回答を生成。ソース引用も可能。

Python実装コード例(LangChain + Chroma)

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

# 1. ドキュメントの読み込みとチャンク分割
loader = TextLoader("docs/manual.txt", encoding="utf-8")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)

# 2. ベクトルDBの作成
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")

# 3. RAGチェーンの構築と実行
qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4o-mini"),
    retriever=vectorstore.as_retriever(search_kwargs={{"k": 3}}),
    return_source_documents=True
)
result = qa_chain.invoke({{"query": "返品ポリシーを教えてください"}})
print(result["result"])

主要ベクトルDB比較

DBホスト無料枠向いているケース
Chromaセルフ完全無料ローカル開発・プロトタイプ・小〜中規模
Pineconeクラウド1インデックス本番環境・スケールが必要な場合
pgvectorセルフ完全無料既存PostgreSQL環境・DB統合したい場合
Weaviate両対応14日Trialマルチモーダル・GraphQL検索が必要な場合

よくある質問

「最新情報や社内データを使いたい」「データが頻繁に更新される」「コストを抑えたい」場合はRAGが向いています。「モデル自体の振る舞い・文体・専門的なスタイルを変えたい」場合はファインチューニングが向いています。多くのビジネス用途ではRAGで十分解決できます。

主な改善ポイントは①チャンクサイズの最適化②日本語対応の埋め込みモデル選択(intfloat/multilingual-e5-large等)③Hybrid Search(ベクトル検索+BM25キーワード検索の併用)④Re-ranking(取得結果をさらに関連度でソート)です。

Difyのナレッジ機能を使えばコードなしでRAGシステムが構築できます。PDFやWebページをアップロードするだけでチャンキング・埋め込みが自動処理されます。詳細はDify活用ガイドをご覧ください。

関連用語・ページ

🤖

AIエージェントとは

RAGを内部で使うAIエージェントの仕組み

Difyとは

ノーコードでRAGシステムを構築できるツール

🔗

APIとは

LLM APIを使ったRAG実装の基礎知識

👨‍💻

AIエンジニアのキャリア

RAG実装スキルが活きる職種・年収

RAG・AIスキルで転職・年収アップ

Direct typeでスカウトを受け取る → レバテックキャリアに相談する →