自社データを使ったAIチャット(RAG)がここまで身近に!Oracle APEXで作る手軽なアプリ開発

2026年3月31日掲載

キービジュアル

RAGは実装だけでなく、データの取り込みや更新等の運用がハードルになりがちです。データの置き場所がオンプレミス、ファイル、別データベース等環境が違うほど、移行や同期の手間が増えます。

Oracle APEX + Oracle Databaseなら、RAGに必要な処理を画面操作中心に実装できるため、何百行ものコードを書く必要がないのが強みです。

そこで本記事では、Oracle APEX 24.2で追加された機能を活用し、RAGアプリの主要部分を「画面設定+最小限のSQL」で組み立てる方法を紹介します。実際にCSVファイルからFAQデータを取り込み、APEX上でAIチャット画面を作成するまでの流れをハンズオン形式でまとめます。

「RAGを使ったアプリって、ローコードツールを使うとこんなに手軽に作れるんだ!」という感動を、ぜひ皆さまも体験してみてください。

目次

  • この記事でわかること
    • APEX 24.3の機能を活用した、RAG検索の効率的な実装方法
    • 複雑なAI構築をAPEXの標準機能にお任せする手軽さ
    • CSVアップロードを起点にデータをベクトル化する実践的なアプローチ
  • 開発の前提条件
    • Oracle APEX 24.2(2025年1月リリース)
    • Oracle Database 23ai以降
    • 生成AIの接続先と認証情報

※社内データの取り扱いは各社ポリシーに従ってください。

「Oracle APEX」とは?

Oracle APEXは、ウェブブラウザー上の直感的な操作だけで、本格的な業務アプリを作成できるローコード開発プラットフォームです。Oracle Databaseと密接に連携しているため、データベースを中心に「画面」「処理」「データ」をまとめて構築しやすいのが特徴的です。

データ入力画面から一覧表、そして今回構築する「AIチャット画面」まで、すべて1つのプラットフォーム上で完結できるのが大きな魅力です。

 

今回作成するRAGアプリの全体像

社内FAQを基に、ユーザーの質問に回答してくれるチャットボットを作成していきます。

図の通り、仕組みは大きく2つのフェーズに分かれます。

  1. 事前準備(データ登録):社内FAQ(CSV形式)をアップロードすると、AIが文章を「ベクトルデータ(意味の数値)」に自動変換し、データベースに保存します。
  2. チャット実行(検索・生成):ユーザーの質問文をベクトル化し、保存済みベクトルと比較して近いFAQを検索します。検索結果をコンテキストとしてAIに渡し、回答を生成します。

通常、上記RAGアプリの仕組みを構築するためには、複雑なコード実装が必要となります。しかし、今回はOracle APEX 24.2の標準機能を使って、簡単にRAGアプリを構築していく手順をご紹介します。

完成イメージ

完成イメージを紹介します。

下の例のように、ユーザーが入力した質問内容について、生成AIが関連する内容をFAQデータから検索し回答を生成します。

以降の章では、この画面ができるまでの手順を順番に解説します。

※画面はサンプルです、回答内容はモデルや設定により変動します。

【第1章】準備編:データを格納するテーブルとAI連携の準備

1.ベクトル検索対応のテーブル作成

まずは、FAQの「質問」と「回答」を保存するテーブルを作成します。

ここでのポイントは、通常の文字列に加えてOracle Databaseの「VECTOR(ベクトル)型」の列を1つ追加するという点です。

実行しているコード(本ブログ例)

CREATE TABLE faq_docs(
  id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  question VARCHAR2(4000),
  answer VARCHAR2(4000),
  content_vector VECTOR
);

2.AIサービスの登録

次に、テキストのベクトル化やチャット回答を行ってくれる生成AIモデルをAPEXに連携させます。

  • ベクトル化用:[Workspace Utilities]>[Vector Providers]画面から、埋め込み関連のモデルを設定します。
  • チャット生成用:[Workspace Utilities]>[Generative AI]画面から、自然な回答を組み立てるOCIのモデル(Cohere Commandなど)を設定します。

【第2章】データ投入編:CSVのアップロードと自動ベクトル化

テーブルとAIの準備ができたら、社内FAQデータ(CSV形式)をデータベースに取り込みます。

1.CSVを取り込む画面の作成

APEX標準の[Shared Components]>[Data Load Definitions]機能を使うと、画面の案内に従うだけで、CSVの読み込みからテーブル保存までを行う画面が自動生成されます。これで、担当者自身がFAQデータをアップロードできる「管理画面」が完成します。

2.取り込み後に「自動ベクトル化」する仕組みの設定

AIの検索(RAG)を機能させるには、取り込んだテキストをベクトル化して、ベクトル列に格納する必要があります。そこで、CSVを取り込んだ後に、自動的にベクトル化を行う処理が走るように設定します。

実行しているコード(本ブログ例)

DECLARE
  v_vector VECTOR;
  v_text CLOB;
BEGIN
  FOR rec IN (
    SELECT id, question, answer
    FROM faq_docs
    WHERE content_vector IS NULL
    ) LOOP
    v_text := TO_CLOB(rec.question) || CHR(10) || TO_CLOB(rec.answer);
    v_vector := APEX_AI.GET_VECTOR_EMBEDDINGS(
    p_value => v_text,
    p_service_static_id => 'oci_genai_embed' -- 第1章で作成したベクトル化用AIのStaticIDを記入
    );

    UPDATE faq_docs SET content_vector = v_vector WHERE id = rec.id;
    END LOOP;
    COMMIT; 
END;

ここで活躍するのが、APEX 24.2で追加された関数「APEX_AI.GET_VECTOR_EMBEDDINGS」です。

以前はAIを呼び出す複雑なプログラムが必要でしたが、APEX 24.2ではこの関数を1行記述するだけでベクトル化を実行できます。データが追加されると第1章で登録した「Vector Provider」を使って、空っぽだったベクトル列を次々と埋めます。

※データ件数が多い場合は、バックグランド処理も検討してください。

「CSVをドラッグ&ドロップするだけで、RAGデータとして蓄積される」という処理を簡単に実装することができます。

【第3章】AI構成の作成:画面からの設定でRAGの頭脳を構築

RAGの頭脳となる生成AIの設定は、「AI構成(AI Configurations)」を使って、画面上から直感的に設定していきます。

1.AI構成のベースを作成

[Shared Components]>[AI Configurations]から新規作成します。

  • Name:OCI_GENAI_RAG
  • Service:OCI_GENAI_CHAT(第1章で作成したチャット生成用モデル)
  • System Prompt(例):「あなたは優秀な社内ヘルプデスクです。以下のコンテキスト(検索結果)として提供された社内FAQデータを【必ず】読んで、ユーザーの質問に対して、それに基づいて回答を生成してください。」

システムプロンプトを設定したら、一度「Create(作成)」を押します。

2.RAGソース(SQL Query)の追加

下部の「RAG Sources」から検索処理を追加します。Source Typeに「SQL Query」を選択し、以下のSQLを貼り付けます。

入力するコード(本ブログ例)

WITH q_vector AS (
  SELECT APEX_AI.GET_VECTOR_EMBEDDINGS(
    p_value => :APEX$AI_LAST_USER_PROMPT,
    p_service_static_id => 'oci_genai_embed’
  ) AS vec
  FROM dual
  WHERE :APEX$AI_LAST_USER_PROMPT IS NOT NULL
)
SELECT
  'Q: ' || d.question || chr(10) ||
  'A: ' || d.answer AS context
FROM faq_docs d
CROSS JOIN q_vector q
WHERE d.content_vector IS NOT NULL
ORDER BY VECTOR_DISTANCE(d.content_vector, q.vec) ASC
FETCH FIRST 3 ROWS ONLY

APEXは「:APEX$AI_LAST_USER_PROMPT」という変数で、ユーザーの質問を自動で受け取ってくれます。これを使うことでユーザーの質問に応じて検索対象を動的に絞るSQLを書くことができます。

※SQL Queryの結果は必要な列だけ抽出し、件数を絞ることをおすすめします。

【第4章】チャットUIの構築:フロントエンドはノーコード!

裏側のAI設定が完了したので、最後にユーザーが操作するチャット画面を作ります。

1.画面アイテムの配置

新規ページを作成し、ページ・デザイナーで以下3つのアイテムを配置します。

  • 検索窓:P1_SEARCH(Type:Text Field)
  • 送信ボタン:BTN_OPEN_AI(Action:Defined by Dynamic Action)
  • 回答枠:P1_ANSWER(Type:Display Only)

2.AIを呼び出す動的アクションを設定

送信ボタン(BTN_OPEN_AI)に「動的アクション」を設定します。

  • Action:Generate Text with AI
  • AI Configuration:OCI_GENAI_RAG
  • Input Value(Item):P1_SEARCH
  • Output Value(Item):P1_ANSWER

この設定だけでボタン押下時に次の処理が一連で実行されます。

  1. ユーザーの質問が第3章で作った「OCI_GENAI_RAG」に渡されます。
  2. テーブル内のFAQデータのベクトル値と、ユーザーの質問を比較・計算し、意味が近い質問を探し出します(これがRAGにおける「検索」のプロセスです)。
  3. 検索結果をAIに渡し、生成後に回答を表示します。

まとめ:RAGアプリ開発は「設定」ベースで完結する時代へ

本記事では、Oracle APEX 24.2で追加された機能を活用して、RAGアプリを短期間で構築する方法を紹介しました。

  • Oracle Database:データを一元管理しながら、同じデータベース内でそのままベクトル検索を実行できます。
  • Vector Provides/AI Configurations:画面上からの設定だけで、外部のAIサービスとの連携をスムーズに定義できます。
  • 標準機能の活用:Data Load機能や動的アクションを組み合わせることで、開発者がUI(画面)の構築に手間をかけることなく、素早く形にできます。

今回紹介した内容はAPEX 24.2の機能のほんの一部です。他にもまだ紹介しきれていない便利な機能がたくさんありますので、ぜひ皆さんも実際に触って、新しい活用方法を探してみてください!

この記事が、皆さんの開発現場におけるAI活用のヒントになれば幸いです。

おすすめの記事

条件に該当するページがございません