n8nで自前ナレッジ検索を作る:PineconeとOpenAI Vector Storeの使い分け
はじめに
最近、AI界隈でよく耳にする「RAG(Retrieval-Augmented Generation)」という言葉。
簡単に言うと、AIに独自の知識(社内ドキュメントや特定のPDFなど)を与えて、その内容に基づいて回答させる仕組みのことです。
今回は、ワークフロー自動化ツールの n8n を使って、このRAGシステムを構築する方法についてリサーチしてみました。
調べてみた所感としては、n8nでのRAG構築には「Pinecone」を使った例が多く見つかりますが、決してそれが唯一の正解というわけではなさそうです。
OpenAIのVector Storeや、Vertex AI Searchなど、様々な選択肢をAPIで繋いでいくパターンもよく見られます。
この記事では、n8nが提供しているRAG構築の手段のうち、
「Pineconeを使った構成」と「OpenAI Vector Storeを使った構成」の2パターンを、それぞれ分けて整理していきます。
パターン1:n8n+PineconeでRAGを構築する
事前準備:Pineconeの設定
n8nでRAGを構築する際、ベクトルデータベースとしてよく使われるのが Pinecone です。
利用するには以下の準備が必要です。
- アカウント作成: Pineconeの公式サイトでアカウントを作成します(無料プランあり)。
- API Keyの取得: 管理画面からAPI Keyを発行します。これをn8nのCredentialに設定します。
- Indexの作成:
- Dimensions: 使用するEmbeddingモデルに合わせます(例:OpenAI text-embedding-3-small なら 1536)。
- Metric: cosine が一般的です。
- Cloud/Region: n8nからのアクセスが良い場所(または無料枠の場所)を選びます。
このIndex情報(Index Name)が後のワークフロー設定で必要になります。
構築手順の概要(Pineconeパターン)
RAGシステムは大きく分けて2つのワークフローで構成されます。
- データ取り込み(Ingestion): ドキュメントを読み込んで、ベクトルデータベースに保存する
- チャット/検索(Retrieval): ユーザーの質問を受け取り、データベースを検索して回答する
1. データ取り込みフロー
AIに読ませたいデータを準備するフローです。
- Document Loader: データを読み込む(Google Drive, Notion, テキストファイルなど)
- Text Splitter: 長い文章を適切なサイズに分割する(Chunk Size 500〜1000程度が一般的)
- Embeddings: テキストを数値(ベクトル)に変換する(OpenAI Embeddingsなど)
- Vector Store: データを保存する(Pineconeなど)
このフローを実行すると、指定したドキュメントがベクトル化されてPineconeに保存されます。
2. チャットボットフロー
実際に会話するフローです。
- Chat Trigger: チャットインターフェース用
- AI Agent: AIの本体
- Vector Store Tool: 知識ベースを検索するためのツール
ポイントは Vector Store Tool を AI Agent に接続することです。
これにより、AIは質問された内容について「自分の知識だけではわからない」と判断したときに、自動的にVector Storeを検索して情報を探しに行きます。
パターン2:OpenAI Vector StoreでRAGを構築する
もう一つのパターンとして、OpenAIのAssistants APIが提供する Vector Store機能 を使う方法があります。
OpenAI Vector Store (Assistants API) をn8nで使う流れ
現在のn8nの標準OpenAIノードでは、Assistants API(Vector Store)は直接サポートされていないとされています。
そのため、OpenAIのVector Store機能を使いたい場合は、HTTP Requestノードを使ってOpenAIのAPIを直接叩く形になります。
ざっくり言うと、以下のようなステップです。
- HTTP Request ノードでファイルをアップロード (POST https://api.openai.com/v1/files)
- HTTP Request ノードでVector Storeを作成 (POST https://api.openai.com/v1/vector_stores)
- HTTP Request ノードでAssistantを作成し、Vector Store IDを紐付ける
ここまでが、OpenAIのVector Storeをそのまま使うパターンです。
一方で、パターン1で触れたように、n8nのVector Storeノード(Pineconeなど)を使えば、似たような構成を自前で組み立てることもできます。
どちらが絶対に正しい、というよりも「既存ノード中心でシンプルに作るか」「HTTP Requestで細かく制御するか」の違いと捉えるのが近そうです。
まとめ
n8nを使うと、複雑なRAGシステムもパズルのようにノードを組み合わせるだけで作れてしまいます。
今回のリサーチを通じて、n8nでのRAG構築は「どのベクトル検索エンジン(Pinecone, OpenAI, Vertex AI Searchなど)を選び、どうAPIで繋ぎこむか」が設計の肝になると感じました。
Pineconeのようなn8n対応のVector Storeを使えば、ノードをつなぐだけで完結しやすく、ワークフロー全体の見通しも良くなります。
一方で、OpenAI Vector Storeのような外部サービスをAPI経由で使うパターンに寄せれば、ローカルでベクトルDBを用意したり、インフラを自前で管理したりせずにRAGを組める、という気楽さもあります。
どこまで自分でコントロールしたいか、どこまで外部サービスに任せたいかに応じて、この2パターンを使い分けていくイメージです。