Vertex AI Vector Search + LangChain + Gemini で本格 RAG (Retrieval-Augmented Generation) を構築するチュートリアルです。 Embedding 生成、Chunking、ANN 検索、Gemini への注入まで実装例で網羅します。
Documents (PDF/MD/HTML)
|
Parse (Document AI / Unstructured)
|
Chunking (512-1024 tok, overlap 100)
|
Embedding (text-embedding-005)
|
v
Vertex AI Vector Search Index
^
| (検索)
User Query → Embedding → Vector Search → Top-K → Gemini Pro → Answer# pip install langchain langchain-google-vertexai google-cloud-aiplatform
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("doc.pdf")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(
chunk_size=1024,
chunk_overlap=100,
separators=["\n\n", "\n", "。", "!", "?", " "],
)
chunks = splitter.split_documents(docs)
print(f"{len(chunks)} chunks")from langchain_google_vertexai import VertexAIEmbeddings
embeddings = VertexAIEmbeddings(model_name="text-embedding-005")
texts = [chunk.page_content for chunk in chunks]
vectors = embeddings.embed_documents(texts)
print(f"Vector dim: {len(vectors[0])}") # 768from google.cloud import aiplatform as ai
ai.init(project="my-project", location="asia-northeast1")
# Embedding を JSONL 形式で GCS にアップロード
# {"id": "doc1-chunk1", "embedding": [0.1, 0.2, ...]}
# Index 作成
index = ai.MatchingEngineIndex.create_tree_ah_index(
display_name="my-rag-index",
contents_delta_uri="gs://my-bucket/embeddings/",
dimensions=768,
approximate_neighbors_count=10,
distance_measure_type="DOT_PRODUCT_DISTANCE",
)
# Endpoint デプロイ
endpoint = ai.MatchingEngineIndexEndpoint.create(
display_name="my-rag-endpoint",
public_endpoint_enabled=True,
)
endpoint.deploy_index(index=index, deployed_index_id="my_rag_v1")from langchain_google_vertexai import ChatVertexAI
from langchain.prompts import ChatPromptTemplate
llm = ChatVertexAI(model_name="gemini-2.0-pro-001", temperature=0.3)
def search_and_answer(query: str) -> str:
# 1. Embedding 化
query_emb = embeddings.embed_query(query)
# 2. Vector Search
response = endpoint.find_neighbors(
deployed_index_id="my_rag_v1",
queries=[query_emb],
num_neighbors=5,
)
top_chunks = [chunks[int(n.id.split("-chunk")[1])] for n in response[0]]
# 3. Gemini で回答生成
context = "\n\n".join([c.page_content for c in top_chunks])
prompt = ChatPromptTemplate.from_template("""
以下のコンテキストに基づいてユーザーの質問に答えてください。
コンテキストにない情報は「分かりません」と回答してください。
# コンテキスト
{context}
# 質問
{query}
# 回答
""")
chain = prompt | llm
result = chain.invoke({"context": context, "query": query})
return result.content
# 利用
print(search_and_answer("休暇申請の方法を教えてください"))from langchain.retrievers import EnsembleRetriever
from langchain_community.retrievers import BM25Retriever
# Keyword 検索
bm25 = BM25Retriever.from_documents(chunks)
# Vector 検索 (Vertex AI Vector Search ラッパー)
from langchain_google_vertexai import VectorSearchVectorStore
vector_retriever = VectorSearchVectorStore.from_components(
project_id="my-project",
region="asia-northeast1",
gcs_bucket_name="my-bucket",
index_id="my-rag-index",
endpoint_id="my-rag-endpoint",
).as_retriever()
# アンサンブル (重み付け)
ensemble = EnsembleRetriever(
retrievers=[vector_retriever, bm25],
weights=[0.7, 0.3],
)
results = ensemble.invoke("休暇申請")| 項目 | 月額 |
|---|---|
| Embedding (初回 + 更新) | ~$5 |
| Vector Search Index ストレージ | ~$20 |
| Vector Search Endpoint | ~$30 |
| Vector Search Query (10K) | ~$1 |
| Gemini Pro 生成 (10K query × 1K tok) | ~$50 |
| Cloud Run API | ~$5 |
| 合計 | ~$110/月 |
RAG とは?
Retrieval-Augmented Generation。社内ドキュメント等を Embedding で検索 → LLM に Context として渡して回答生成する技術。Fine-tuning より柔軟・低コスト。
Vertex AI Vector Search の特徴は?
Google ScaNN ベースの高速 ANN 検索、マネージド、Filter (メタデータ)、Embedding 自動同期 (BigQuery 連携)。アルゴリズム実装不要。
LangChain と LlamaIndex どちらを使う?
両方併用可。LangChain = 汎用フレームワーク (Agent / Tool 強い)、LlamaIndex = RAG 特化 (Index 構造豊富)。チームの好みで選択。
Vertex AI Search との使い分けは?
ノーコード + マネージド完結 → Vertex AI Search、柔軟性 + 細かいカスタマイズ → LangChain + Vector Search。前者はビジネスサイド、後者はエンジニア。
Embedding モデル何を使う?
Google text-embedding-005 (768 次元、多言語)、OpenAI text-embedding-3-small (1536 次元、安価)、Cohere multilingual-v3 (1024 次元)。多言語性能は Google / Cohere 優位。
Chunking 戦略は?
512〜1024 トークン推奨、Overlap 100 トークン。Markdown は見出しで分割、PDF は段落で分割。Document AI で意味的分割も可。
コストはどのくらい?
1000 ドキュメント (各 1 ページ) = Embedding $1〜2、Vector Search ストレージ $20/月、検索 $0.0001/query、Gemini Pro 回答生成 $1.25/M tok 入力。月数千円〜。
ハイブリッド検索は?
Vector (意味) + Keyword (BM25) の組み合わせで精度向上。Vertex AI Search は標準対応、LangChain は EnsembleRetriever。
関連記事・RAG / Gen AI
GCP PMLE 試験対策|Vertex AI + Gemini 生成 AI 実装パターン完全ガイド
Google Cloud Professional ML Engineer (PMLE) の Gen AI 領域を実装視点で解説。Gemini ファミリー選定、RAG パターン、Vertex AI Agent Builder、Fine-tuning、Responsible AI を網羅。
Vertex AI Agent Builder 完全ガイド|Conversational Agents・Vertex AI Search・Tool Use (GCP)
Google Cloud Vertex AI Agent Builder の全機能解説。Conversational Agents (Dialogflow CX 後継)、Vertex AI Search、Tool Use、Grounding、Playbook、料金、ChatGPT GPTs / Copilot Studio 比較を網羅。
Generative AI Leader (GAIL) 完全ガイド|Google Cloud 生成 AI 認定 (2025 年 5 月リリース新試験)
Google Cloud Generative AI Leader (GAIL、2025-05-14 リリース) の完全ガイド。4 ドメイン (生成 AI 基礎 30% / GCP 提供サービス 35% / モデル出力改善 20% / ビジネス戦略 15%)、Gemini ファミリー、Vertex AI Agent Builder、RAG、ビジネス導入観点を日本語で網羅。
Vertex AI 入門|Google Cloud 統合 ML プラットフォームの全機能 (GAIL/PMLE/PCD 必須知識)
Google Cloud Vertex AI の入門解説。Vertex AI Studio / Agent Builder / Model Garden / Search / Pipelines / Training の全機能、Gemini モデルファミリー (Pro/Flash/Ultra)、Azure OpenAI との比較、料金体系、Responsible AI 機能を日本語で整理。
※ Google Cloud、Gemini は Google LLC、LangChain は LangChain, Inc. の所有物です。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Google Cloud (GCP) 認定資格ロードマップ 2026 完全版|全 15 試験を体系化
Google Cloud 認定資格 全 15 試験 (Foundational 2 + Associate 3 + Pr...
Cloud Digital Leader (CDL) 完全ガイド|出題範囲・学習リソース・合格戦略
Google Cloud Cloud Digital Leader (CDL) の完全ガイド。6 ドメイン 92 bul...
Generative AI Leader (GAIL) 完全ガイド|Google Cloud 生成 AI 認定
Google Cloud Generative AI Leader (GAIL、2025-05-14 リリース) の完全...
Vertex AI 入門|Google Cloud 統合 ML プラットフォームの全機能
Google Cloud Vertex AI の入門解説。Vertex AI Studio / Agent Builde...
GCP Associate Cloud Engineer (ACE) 完全ガイド|試験範囲・受験料・学習ロードマップ
Google Cloud Associate Cloud Engineer (ACE) の試験範囲・受験料 125 US...