MENU

さくらのAI EngineでRAGを構築する

ネットアシスト開発部のyu-kinjoです。今回は、さくらのクラウドのAI APIマネージドサービス「さくらのAI Engine」が提供する機能を利用して、RAG(Retrieval-Augmented Generation : 検索拡張生成)を構築してみたいと思います。

目次

RAGとは

一般的にチャット形式でやり取りを行うLLM(大規模言語モデル)では、Web上などに存在する既存の情報を使った学習によりモデルが構築されており、その既に学習済みの情報によって回答を行います。

これにより膨大で広範な知識が得られているのですが、例えば社内や組織・個人独自で持つ情報など、Web上には公開されておらずモデルが学習していない情報を返したいケースも出てきます。これに対応するためにはいくつかの方法が有りますが、こちらで用意したドキュメントをベクトルDBに保存、LLMにそのベクトルDBの検索結果を利用して回答してもらう仕組みがRAGになります。これにより、モデルが持たない独自の情報を回答できるほか、情報を持たないにもかかわらずそれらしい情報を返答する「ハルシネーション」の発生を軽減する事が出来ます。

なお、他の手法としてRAGよりも簡単な用途のものとしては問い合わせの際に併せてプロンプトでその情報を提供する、より重厚な方法としてはモデルへ追加学習を行いモデル自体の知識に情報を加えるファインチューニングなどが有ります。

さくらのAI EngineではRAGを簡単に構築するための仕組みが提供されています。

RAGの構築

まずはこちらで用意したドキュメントをアップロードするための、ベクトルDBを用意していきます。

ベクトルDBの作成

ベクトルDBは一般的なRDBMSとは異なり、文字列を文字列そのままではなく、文字列の持つ意味ごとの距離を数値化し記録を行います。さくらのAI EngineではこのベクトルDBの機能が提供されています。

現在、さくらのAI Engineの「ドキュメント(RAG)」の画面にはドキュメントが無い状態です。

ここにドキュメントをアップロードするには、Web APIから、もしくは画面上に見える「ドキュメントを登録」ボタンからのどちらからでも行う事が出来ます。今回はWeb APIから登録してみたいと思います。

ここでは、Web上に存在しない情報として、株式会社ネットアシストなどが販売する架空のお菓子「あま~いチップス」「ポテスティック」「からい棒」についての解説をMarkDown形式で記載した [RAG用のドキュメント_スナック菓子.txt] を用意しました。

* あま~いチップス

** あま~いチップスとは

あま~いチップスとは、株式会社ネットアシストが製造するポテトチップス菓子です。
うすしお味とコンソメ味が有り、いずれも税込み180円前後で購入可能です。
2012年から販売されており、関東地域で展開されています。
一般的なうすしお味、コンソメ味よりも甘みの強い味付けが特徴です。

* ポテスティック

** ポテスティックとは

ポテスティックは、……(以下略)

以下はWindows11 WSL2 上で実行するUbuntu 24.04からcurlコマンドで上記ファイルの登録APIを実行した例です。tagsでは分類のようなものを設定しておくと後で便利になります。

$ curl --request POST \
 --url https://api.ai.sakura.ad.jp/v1/documents/upload/ \
 --header 'Accept: application/json' \
 --header 'Authorization: Bearer <<ここにAPIトークンを設定>>' \
 --header 'Content-Type: multipart/form-data' \
 --form "file=@RAG用のドキュメント_スナック菓子.txt" \
 --form "name=スナック菓子.txt" \
 --form "tags=スナック菓子" \
 --form "model=multilingual-e5-large" \
 --form "chunk_size=512"

実行結果は以下のようになりました。

{"id":"<ここにID>","status":"pending","content":"","name":"スナック菓子.txt","tags":["スナック菓子"],"model":"multilingual-e5-large","chunk_size":512}

Web画面上でもアップしたドキュメントが見える状態になりました。

クエリの実行

では実際にクエリを実行してみます。こちらも curl コマンドからAPIを実行してみます。回答が大きくなるため、パイプで jq コマンドに渡してJSONを整形しています。

質問の内容としては「ポテスティックの現在発売されているバリエーションを教えてください」を指定しました。

実行時にしている tags の部分ですが、ここでドキュメントをアップロードした際に設定したタグを設定する事で、そのタグのついたドキュメントのみを参照する事が出来ます。基本的にはタグを設定していった方がよいでしょう。

$ curl --request POST \
  --url https://api.ai.sakura.ad.jp/v1/documents/chat/ \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <<ここにAPIトークンを設定>>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "multilingual-e5-large",
    "chat_model": "gpt-oss-120b",
    "tags": ["スナック菓子"],
    "query": "ポテスティックの現在発売されているバリエーションを教えてください",
    "distance_type": "cosine"
  }' | jq

回答結果は以下のようになります。

{
  "answer": "ポテスティックの現在発売されているバリエーションは以下の3種類です。\n\n- サラダ味  \n- シチュー味  \n- ステーキ味  \n\n(参考文書に記載されている情報です。)",
  "sources": [
    {
      "document": {
        "id": "<ここにIDが入る>",
        "created_at": "2026-04-14T10:24:22.413739+09:00",
        "status": "available",
        "name": "スナック菓子.txt",
        "model": "multilingual-e5-large",
        "chunk_size": 512,
        "tags": [
          "スナック菓子"
        ],
        "error_message": ""
      },
      "chunk_index": 0,
      "distance": 0.1505628827561415,
      "content": "あま~いチップス\n\nあま~いチップスとは\n\nあま~いチップスとは、株式会社ネットアシストが製造するポテトチップス菓子です。\n\nうすしお味とコンソメ味が有り、いずれも税込み180円前後で購入可能です。\n\n2012年から販売されており、関東地域で展開されています。\n\n一般的なうすしお味、コンソメ味よりも甘みの強い味付けが特徴です。\n\nポテスティック\n\nポテスティックとは\n\nポテスティックは、株式会社サバモニが製造するスティック状のスナック菓子です。\n\n1つのカップの中に複数のスティックが納められる形で販売されており、\n\n価格は160円前後です。2016年から販売されています。\n\nポテスティックのバリエーション\n\nサラダ味\n\nシチュー味\n\nステーキ味\n\nからい棒\n\nからい棒とは\n\nからい棒とは、株式会社ネットアシストが製造する棒状のスナック菓子です。\n\nさまざまなバリエーションが有り、いずれも税込み30円という安価で購入可能です。\n\n2015年から販売されており、関東地域で展開されています。\n\nからい棒のバリエーション\n\nからい棒には2026年3月現在以下のバリエーションが有ります。\n\nからい棒 マーボー味 (発売: 2015年~)\n\nからい棒 ワサビ味 (発売: 2015年~)\n\nからい棒 マヨネーズ味 (発売: 2015年~)\n\nからい棒 ステーキ味 (発売: 2018年~)\n\nからい棒 ペパロニピザ味 (発売: 2020年~)\n\nからい棒の販売終了したバリエーション\n\n以下のバリエーションが過去に存在していました。\n\nからい棒 ヤキソバ味 (発売: 2017年~2021年)",
      "metadata": {
        "file_directory": "/tmp",
        "filename": "tmprqgbn758.txt",
        "filetype": "text/plain",
        "languages": "[\"jpn\"]",
        "last_modified": "2026-04-14T10:24:24"
      }
    }
  ]
}

answer部分が実際の回答内容です。content部分は選択されたチャンクの内容が出ているものと思われます。answer部分の抜粋は以下のようになります。

ポテスティックの現在発売されているバリエーションは以下の3種類です。

- サラダ味
- シチュー味
- ステーキ味

(参考文書に記載されている情報です。)

Web上には情報の無い架空のお菓子「ポテスティック」のバリエーション情報が回答されました。このように、ドキュメントに登録した内容から実際に回答を得られることが確認出来ました。

まとめ

このように、実際に簡単にRAGの構築を行う事が出来ました。RAGの構築はコンセプトまでは簡単だがそこから精度を上げていくのが大変……等とはよく言われますが、まずコンセプト部分までの実装が簡単にできるという点でも、構築に挑戦しやすい良いサービスではないかと思います。実際に精度を上げていく際にはドキュメントをアップロードする際のチャンクサイズ設定なども用途によっては調整が必要になりそうですね。

最後に注意点ですが、アップロードしたドキュメントについてはチャンクごとの料金が発生しますが、こちらはさくらのAI Engine無料利用分が有りません。そのため、アップした分だけ費用が発生し始める事には注意しておきましょう。不要になったドキュメントは画面上からも削除が行えます。

さくらのAI Engine | さくらのAI | さくらインターネット

お問い合わせ

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ネットアシスト開発部の yu-kinjo です。

【取得資格】
・さくらのクラウド検定
・AWS Certified Solutions Architect - Associate
・AWS Certified AI Practitioner
・Oracle 認定Javaプログラマ SE6
・JSTQB テスト技術者資格 ファンデーションレベル
・CIW (Certified Internet Webprofessional) ファンデーション
・XML技術者育成推進委員会 XMLマスター ベーシックV2
・基本情報処理技術者
・初級システムアドミニストレータ

目次