Craft RAG と Craft Vector Search は、どう使い分ければいいのか?
- feature
- 2025年9月26日
こんにちは、Customer Engineerのgamiです!
先日、「Craft Cross CMS」のリリースと同日に、 「Craft AI」 という生成AI関連の機能群もリリースされました。
Craft Cross CMSを含む5つの新機能がKARTE Craftにリリースされました!
その中心的なものが、「Craft RAG」と「Craft Vector Search」という2つの機能です。
Craft RAGもCraft Vector Searchも、独自のデータを格納してRAGシステム構築に利用できるという点では似たところがあります。一方で、それぞれ違った特長をもっており、用途に合わせて適切に使い分ける必要があります。
そこで今回は、これら2つの機能の詳細を説明した上で、使い分けの参考になるような比較表をご紹介します。
目次
- Craft RAGについて
- Craft Vector Searchについて
- Craft RAG と Craft Vector Search の機能比較
1. Craft RAGについて
Craft RAGは、Retrieval-Augmented Generation(検索拡張生成)技術を活用した機能です。ホスティングサービスであるCraft Sitesにアップロードしたファイル群をCraft RAGにインポートすることで、そのファイル群をナレッジベースとして利用し精度の高いAI回答を生成することができます。
1-1. RAGとは何か?
生成AI関連技術に詳しくない方に向けて、RAGとは何かについても簡単に触れておきます。
RAGとはGPTやGeminiなどの生成AIが答える前に、外部の知識データベースや自社の資料から必要な情報を検索して取り込み、それをもとに回答を作る仕組みのことです。
生成AIからRAGを利用することで、テキスト生成の精度を大きく向上することができます。
RAGを使わない場合と使う場合の比較:
- [普通の生成AI] AIの頭の中(学習済みの知識)だけで答えるため、最新情報や会社独自の情報は弱い
- [RAGを使うAI] 答える前に資料室に行って調べてきてくれるため、会社のマニュアル、FAQ、契約書などから情報を探し、それをもとに正確な答えを返せる
AIシステムにおいてRAGを使うメリット:
- 正確性向上
- AIの「思い込み」回答を減らせる
- 最新情報を反映
- 学習後に出てきた新しいデータも検索して使える
- 自社固有ナレッジへの対応
- 自社のFAQやマニュアルを使えば「専用AIアシスタント」化できる
つまり、RAGとは 「AIに特定の領域の知識をつなぎ込んで、より正確で役立つ答えを返すための仕組み」 です。
詳しくは次の紹介記事などをご覧ください。
RAG(検索拡張生成)とは?仕組みや活用例、精度向上のノウハウをわかりやすく解説
1-2. Craft RAGの利用手順
Craft RAGを使うには、ホスティングサービスであるCraft Sitesに対象ファイルをアップロードする必要があります。そのアップロード済みのファイルをCraft RAGに対してインポートすることで、生成AIによるテキスト生成時にそのファイル群の内容を利用できるようになります。
- Craft Sitesに対象ファイルをアップロード
- そのファイルパスを指定してCraft RAGにファイルをインポート
- Craft Functionsなどで構築されたAIシステムからAPI経由でCraft RAG上のデータを利用
2025年9月現在、対応しているファイル形式は次の通りです。
対応ファイル形式:
- PDF ファイル
- Microsoft PowerPoint スライド(PPTX ファイル)
- Microsoft Word ドキュメント(DOCX ファイル)
- HTML ファイル
- JSON ファイル
- Markdown ファイル
- Text ファイル
特にPDFファイルやWordファイルなど普段の業務で利用している形式のファイルをそのままRAGに利用できる点が、Craft RAGの強みの1つです。
1-3. Craft RAGへのファイルインポート方法
Craft RAGへのファイルインポート方法には、管理画面経由とAPI経由の2種類があります。
Craft Sites管理画面からの追加:
Craft Sites管理画面のRAGセクションから、直接ファイルをアップロードしてインポートできます。
KARTE API v2経由での追加:
Craft Functionsや外部サーバーからAPI経由でファイルをインポートすることも可能です。
const craft = api('@dev-karte/v1.0#xxxxxxxxxxxxxxxx');
craft.auth('your-api-token');
const { data: ragResult } = await craft.postV2betaCraftRagImportbyfile({
siteName: 'my-site', // Craft Sitesの対象サイト名
path: '/product-guide.pdf', // Craft Sites上の対象ファイルパス
corpusId: '1234567890123456789', // Craft RAG管理画面で作成したコーパスのID
});
インポート対象ファイルの指定方法については、単一ファイル指定とディレクトリ指定の両方に対応しています。詳しくはAPIリファレンスをご覧ください。
ちなみにCraft SitesへのファイルアップロードについてもAPI経由で自動化できるので、Craft SitesへのアップロードからCraft RAGへのファイルインポートまでを完全に自動化することも可能です。
たとえばCraft Cross CMSで入稿したテキストデータをMarkdown形式に変換し、API経由でCraft Sitesにファイルとしてアップロードすることもできます。
const craft = api('@dev-karte/v1.0#xxxxxxxxxxxxxxxx');
craft.auth('your-api-token');
// CMS入稿コンテンツをMarkdownに変換
const markdownContent = parseCmsContentToMarkdown(content);
// Craft Sitesにアップロード
const base64Content = Buffer.from(markdownContent).toString('base64');
await cms.postV2betaCraftSitesContentUpload({
siteName: 'my-site',
path: `/faq/rag/${contentId}.md`,
content: base64Content,
});
これにより、もともとPDFなどのファイル形式で作成しているわけではないコンテンツについてもCraft RAGにインポートできます。
1-4. Craft RAGのデータを参照する方法
インポートしたRAGファイル群は、Craft Functions経由で利用できます。
利用方法には、次の2種類があります。
- 類似コンテンツの取得
- RAGを使った回答生成
類似コンテンツの取得 (ragモジュールからの利用):
検索クエリに対して類似するRAGファイルの一覧を単に取得したい場合は、ragモジュールを使用します。
const results = await rag.retrieveContexts({
corpusId: '1234567890123456789', // Craft RAG管理画面で作成したコーパスのID
text: '商品の返品方法について教えてください', // 検索クエリ
vectorDistanceThreshold: 0.8, // これ以下のscoreの結果のみ取得する
});
logger.debug('RAG検索結果:', results);
// 結果例: [
// { text: '返品は購入から30日以内であれば...', score: 0.19, filePath: '/faq/a.pdf' },
// { text: '商品の不具合による返品の場合は...', score: 0.26, filePath: '/faq/b.pdf' }
// ]
ragモジュールは、ファイル検索機能として利用する場合や取得結果を自由に生成AIに渡して活用したい場合に利用します。
なお、ragモジュールの詳細仕様については下記をご覧ください。
RAGを使った回答生成 (aiModulesモジュールからの利用):
類似するRAGファイルの内容をもとにテキスト生成までしたい場合は、aiModulesモジュールを使用します。
const response = await aiModules.gcpGeminiGenerateContent({
contents: [{ role: 'user', parts: [{ text: '商品の返品方法について教えてください' }] }], // プロンプト
model: 'gemini-2.5-flash-lite', // 利用するモデル
systemInstruction: 'あなたは親切なカスタマーサポート担当者です。ユーザーの質問に対して親身になって回答してください。', // プロンプトを処理する前に処理する指示プロンプト
craftExtra: {
ragOptions: {
corpusId: '1234567890123456789', // Craft RAG管理画面で作成したコーパスのID
vectorDistanceThreshold: 0.8, // これ以下のscoreの結果のみ利用する
},
},
});
logger.debug('AI回答:', response.candidates[0].content.parts[0].text);
// 結果例: '商品の返品につきましては、購入から30日以内であれば承っております。返品をご希望の場合は...'
RAGを使った回答生成を簡単に実装したい場合に利用します。
なお、aiModulesモジュールの詳細仕様については下記をご覧ください。
2. Craft Vector Searchについて
Craft Vector Searchは、ベクトル検索技術を活用した高度な検索機能です。従来のキーワード検索だけでは発見が困難だった「検索ワードと意味的に関連性の高いコンテンツ」を効率的に見つけることができます。
たとえば商品データなど件数の多いデータに対しても高速に検索ができるため、Webサイト上の検索機能をアップグレードしたり、生成AIを使ったソリューションの裏側でAIによるレコメンドに利用したり、様々なユースケースに対応できます。
Craft Vector SearchにはAI時代の検索システムとして求められる高度な検索機能が備わっています。
Craft Vector Searchの高度な検索機能:
- 意味的類似度による セマンティック検索 が可能
- 検索結果を タグやカテゴリによって絞り込む ことも可能
- さらに、キーワード検索とセマンティック検索を組み合わせた ハイブリッド検索 にも対応
- 画像データも扱えるので、たとえば テキストから類似する画像データを検索 したり、 画像から類似するテキストデータを検索 したりもできる
2-1. Craft Vector Search の利用手順
Craft Vector Searchへのデータ追加やデータ参照のためのアクセスは、Craft Functionsを介して行います。また、Craft AI Modulesにも含まれるembeddings(ベクトル化)の機能を使って、格納するデータや検索に使う文字列を事前にベクトルデータ化する必要があります。
- KARTE DatahubなどからCraft Functionsに対してアイテムデータを連携する
- そのアイテムデータを、Craft AI Modulesを使ってベクトル化する
- そのアイテムのベクトルデータをCraft Vector Searchに追加する
- ユーザーが入力した検索クエリを、Craft AI Modulesを使ってベクトル化する
- その検索クエリのベクトルデータをCraft Vector Searchに渡して類似アイテムを検索する
利用手順を見ると、Craft Vector Searchの方がCraft RAGよりも利用までのハードルが少し高いことがわかります。その分、Craft Vector Searchの方が大量データの扱いが得意だったり、カスタマイズできる余地が大きかったりといったメリットがあります。
2-2. Craft Vector Searchへのデータ追加方法
Craft Vector Searchへのデータ追加は、Craft Functionsの vectorSearch モジュールから行います。
await vectorSearch.upsert({
indexId: '9876543210987654321', // Craft Vector Search管理画面で作成したインデックスのID
datapoints: [{
datapoint_id: 'product-456', // アイテムを特定するID(例: 商品ID)
feature_vector: [0.1, 0.2, 0.3, ...], // アイテムに関するベクトルデータ
restricts: [{ namespace: 'category', allow_list: ['pants'] }], // 絞り込みで使いたいアイテムのカテゴリやタグ等の情報
}]
});
なお、feature_vectorに渡す値には、たとえば商品名や商品説明文のテキストデータや商品画像データなどをCraft AI Modulesのembeddings機能でベクトルデータ化したものを登録します。
const itemText = 'name: ライトウェイトチノパンツ\ndescription: 穿いていることを忘れるほどの、究極の軽やかさ。高密度ながらも極めて薄く織り上げた生地は、...';
const result = await aiModules.gcpEmbeddingsMulti({
dimension: 1408, // ベクトルデータの出力次元数
text: itemText, // アイテムの説明文
});
logger.debug('アイテムに関するベクトルデータ:', result.predictions[0].textEmbedding);
// 結果例: [0.1, 0.2, 0.3, ...]
2−3. Craft Vector Searchのデータを参照する方法
追加したデータは、同じくCraft Functionsの vectorSearch モジュールを使って検索できます。
const searchResults = await vectorSearch.findNeighbors({
indexEndpointId: '9876543210987654321', // Craft Vector Search管理画面で作成したインデックスのID
queries: [{
datapoint: {
feature_vector: [0.4, 0.5, 0.6, ...], // 検索クエリのベクトルデータ
neighborCount: 10, // 最大何件の結果を取得するか?
restricts: [{ namespace: 'category', allow_list: ['pants'] }] // 絞り込みの条件
}
}]
});
logger.debug('Vector search results:', searchResults.nearestNeighbors[0].neighbors);
// 結果例: [
// { distance: 0.15, datapoint: { datapointId: 'product-456' } },
// { distance: 0.23, datapoint: { datapointId: 'product-789' } }
// ]
なお、feature_vectorに渡す値には検索クエリテキスト(例: “フェスに着ていく派手なTシャツ”)をCraft AI Modulesのembeddings機能でベクトルデータ化したものを登録します。
const searchQuery = 'フェスに着ていく派手なTシャツ';
const result = await aiModules.gcpEmbeddingsMulti({
dimension: 1408, // ベクトルデータの出力次元数
text: searchQuery, // 検索クエリテキスト
});
logger.debug('検索クエリのベクトルデータ:', result.predictions[0].textEmbedding);
// 結果例: [0.4, 0.5, 0.6, ...]
これにより、検索クエリテキストと意味的に類似したアイテムのリストを取得できます。
ちなみに、ここで取得できる結果にはアイテムのID(datapointId)しか含まれない点には注意が必要です。そのIDに対応するアイテム情報については、必要ならCraft KVSやアクションテーブルなど別のデータベースから取得してくる必要があります。
なお、Craft Vector Searchの詳細やvectorSearchモジュールのリファレンスについては、下記をご覧ください。
- Craft Vector Search を利用する | KARTE Craft Developer Portal
- Craft Vector Search | KARTE Craft Developer Portal
3. Craft RAG と Craft Vector Search の機能比較
Craft RAGとCraft Vector Searchの違いについて、いくつかの重要なポイントで比較してみました。
| 項目 | Craft RAG | Craft Vector Search |
|---|---|---|
| 対応データ形式 | 文書ファイル(PDF, DOCXなど) | テキストや画像のベクトルデータ |
| 構築の難易度 | 割と簡単 | 少し難しい |
| インフラコスト | 比較的 安い | 比較的 高い |
| テキストによる検索 | ◯ | ◯ |
| 画像による検索 | ✕ | ◯ |
| カテゴリ等により絞り込み | ✕ | ◯ |
| キーワード検索とのハイブリッド検索 | ✕ | ◯ |
| データ規模 | 小〜中規模を想定 | 大規模データにも対応可 |
Craft RAGは、社内の文書ファイル等をアップロードして簡単にRAGシステムを構築できる点に強みがあります。インフラコストも比較的安く、小〜中規模なデータを扱うシンプルなRAGシステムの実現に向いています。
他方のCraft Vector Searchは、商品データなどの大規模なデータに対して複雑な検索を実行できる点に強みがあります。カスタマイズ性がとても高く、テキストデータと画像データの併用、セマンティック検索とキーワード検索の併用、カテゴリやタグによる絞り込みなど、検索ロジックをあれこれ調整しながら検索精度を向上させることができます。
3-1. Craft RAG の想定ユースケース
2つの機能には上記のような違いがあるため、想定されるユースケースも異なってきます。
Craft RAGの想定ユースケースは、たとえば次の通りです。
- コンテンツ検索ボット: CMS経由で入稿した記事コンテンツ等をRAGに登録し、ユーザーの質問に対する自動回答システムをサイト上に構築
- 社内ナレッジベース: 社内の特定知識がまとまったPDFファイルやWordファイルをRAGに登録し、社内チャットツール経由で検索可能に
- カスタマーサポート支援: サポート文書やFAQコンテンツをRAGに登録し、ユーザーの問い合わせに対する回答案をAIが自動生成
数百件規模のファイルやコンテンツを登録し、エンドユーザーや社内メンバーに向けた生成AIソリューションから利用するような使われ方が想定されています。
Craft RAGの方が難易度やコストの観点でハードルが低いので、迷う場合はCraft RAGから利用し始めるのがおすすめです。
3-2. Craft Vector Search の想定ユースケース
Craft Vector Searchの想定ユースケースは、たとえば次の通りです。
- アイテムの検索: 商品データなど大量にあるアイテムのベクトル検索
- AIによるアイテムのレコメンド: AIがユーザーにヒアリングした結果をもとにアイテムをレコメンド
数十万〜数千万件規模のアイテムデータを登録し、曖昧な検索ワードでも適切に結果を返せる高度な検索システムを構築するような使われ方が想定されています。検索システムは、エンドユーザーに対して直接利用させることもできますし、AIエージェントの裏側で利用し「AIによる商品レコメンド機能」として見せることもできます。
まとめ
今回は、新たにリリースされたCraft RAGとCraft Vector Searchの使い方と違いについて紹介しました。
生成AI技術を使った顧客体験の改善や業務の効率化は、かなり一般的に行われるようになっています。Craft RAGやCraft Vector Searchを使うことで、こうした生成AIソリューションを比較的簡単に実現することができます。
生成AIを使って実現したいことがある方は、これらの機能をぜひ活用してみてください!