【ITニュース解説】Building a RAG System with Vertex AI, Pinecone, and LangChain (Step-by-Step Guide)
2025年09月13日に「Dev.to」が公開したITニュース「Building a RAG System with Vertex AI, Pinecone, and LangChain (Step-by-Step Guide)」について初心者にもわかりやすく解説しています。
ITニュース概要
RAGシステムは、AIが外部情報を参照して賢く回答する技術だ。この記事では、Google Vertex AI、Pinecone、LangChainを使い、PDF文書から質問に答えるRAGシステムの構築方法を解説。PDFを分割・埋め込みしPineconeに保存、Vertex AIのLLMで回答を生成する手順を紹介する。
ITニュース解説
RAG(Retrieval-Augmented Generation)は、大規模言語モデル(LLM)の能力を拡張し、特定の外部知識に基づいてより正確で信頼性の高い回答を生成させるための技術だ。通常のLLMは、訓練時に学習した膨大なデータから知識を得ているが、その知識は常に最新とは限らず、また特定の企業が持つ内部情報や独自のドキュメントにはアクセスできない。RAGは、この課題を解決するために考案された。
RAGの仕組みは、学生が教科書を使って問題に答える様子に似ている。LLMは学生で、ベクトルデータベースは教科書のようなものだ。まず、LLMに回答させたい情報源(例えば会社の規定集や製品マニュアルなど)を用意する。これらのドキュメントは、そのままではLLMが直接理解できないため、「埋め込み(Embedding)」というプロセスで、内容を数値の並び(ベクトル)に変換し、「ベクトルデータベース」と呼ばれる特殊なデータベースに保存する。このベクトルは、テキストの意味的な特徴を捉えたものだ。
ユーザーが質問すると、システムはその質問もベクトルに変換し、ベクトルデータベースに保存された数多くのドキュメントのベクトルの中から、質問のベクトルと最も似ているものを探し出す。これを「類似性検索」と呼ぶ。最も関連性の高いドキュメントの断片が見つかると、それらの情報をLLMに質問と一緒に提示する。LLMは、この提示された情報を「コンテキスト(文脈)」として利用し、その内容に基づいて回答を生成する。これにより、LLMは自身の学習データにはない新しい情報や特定の情報源に関する質問にも、正確に答えることが可能になる。
このニュース記事では、企業ポリシーに関する質問に答えるRAGシステムを構築する具体的な手順が解説されている。構築するシステムは、ポリシーが書かれたPDFドキュメントを読み込み、それをベクトルデータベースに保存し、ユーザーからの質問に対して関連部分を検索してLLMが回答するという流れだ。
まず、Google Cloudのアカウントを作成し、「Vertex AI API」を有効にする必要がある。Vertex AIは、Googleが提供する機械学習プラットフォームで、RAGシステムで利用するLLMや埋め込みモデルを使うために欠かせない。次に、プログラムがGoogle Cloudのサービスに安全にアクセスできるよう、「サービスアカウント」を作成し、Vertex AIへのアクセス権限を与え、認証用のJSONキーファイルをダウンロードしておく。このキーファイルは、後でプログラムからVertex AIを呼び出す際に利用する。
開発環境の準備として、Node.jsプロジェクトを初期化し、RAGシステムに必要な複数のライブラリをインストールする。例えば、LangChainというLLMアプリケーション開発フレームワークをPineconeやGoogle Vertex AIと連携させるためのライブラリ、PDFファイルを読み込むためのライブラリ、長いテキストを小さな「チャンク(断片)」に分割するためのライブラリなどだ。これらのライブラリは、ドキュメントの読み込み、テキストの分割、埋め込みの生成、ベクトルデータベースへの保存、そしてLLMとの連携といった、RAGシステムの中核機能を担う。
次に、ベクトルデータベースのPineconeを設定する。Pineconeでアカウントを作成し、「インデックス」と呼ばれるデータベースを構築する。このインデックスには、使用する埋め込みモデル(Vertex AIのtext-embedding-004)に合わせて、埋め込みの「次元数」(768次元)や、ベクトル間の類似度を測る「距離計算方法」(コサイン類似度)を設定する。PineconeのAPIキーも取得し、環境変数ファイル(.env)に安全に保存する。
ドキュメントの準備では、PDFファイルをLangChainのPDFローダーで読み込み、内容を適切なサイズのチャンクに分割する。これは、埋め込みモデルが長いテキスト全体を処理するよりも、意味のある小さな単位で処理する方が、埋め込みの質と検索の精度が向上するためだ。これらのテキストチャンクは、Vertex AIの埋め込みモデルによってベクトルに変換され、Pineconeのインデックスに保存される。この一連の処理が完了すると、PDFドキュメントの情報がベクトル形式でPineconeに格納され、検索可能な状態となる。
最後に、質問応答機能を実装する。ユーザーからの質問を受け取ると、システムはまずその質問文をベクトルに変換し、Pineconeに保存されたドキュメントのベクトルの中から、質問と最も関連性の高いテキストチャンクを複数(例: 3つ)検索して取り出す。この検索結果を結合し、「コンテキスト」として、元の質問と一緒にVertex AIのLLM(今回はGeminiモデル)に渡す。このとき、LLMに対して「システムプロンプト」という明確な指示を与える。例えば、「提供されたコンテキストのみに基づいて回答し、コンテキストにない情報は絶対に回答しない」といったルールを厳格に設定することで、LLMが事実に基づかない情報を生成する「ハルシネーション」を防ぎ、回答の信頼性を高めることができる。LLMは、与えられたコンテキストと質問、そしてシステムプロンプトの指示に従って回答を生成し、その結果がユーザーに表示される。
この一連のステップを通じて、LLMが特定の外部知識を参照して質問に答えるRAGシステムが構築できる。これは、AIモデルの能力を大きく広げ、より実用的なアプリケーションを作るための強力な手法だと言える。