Oracle APEXとOracle AI Vector Searchによるドキュメント・ナレッジ・ベースの構築 (2026/10/22)

Oracle APEXとOracle AI Vector Searchによるドキュメント・ナレッジ・ベースの構築 (2026/10/22)

Oracle APEX、Oracle AI Database、AI Vector Search、RAGによるドキュメント・ナレッジ・ベース

https://medium.com/oracledevs/building-a-document-knowledge-base-with-oracle-apex-and-oracle-ai-vector-search-394009d991fe

投稿者:Kailasj

Kailas Jawadekar著

Enterキーを押すか、画像をクリックしてフルサイズで表示します。

文書の集合体には貴重な知識が含まれている一方で、その活用が難しい場合もあります。答えを見つけるには、複数のファイルを開き、関連用語を検索し、異なるバージョンを照合する必要があるかもしれません。そこで私たちは、自然言語による質問、生成されたドラフト、文書比較などを通じて、そうしたコンテンツを検索・再利用できるようにする文書知識ベースを構築しました。

ドキュメントナレッジベースは、Oracle APEX、PL/SQL、Oracle AI Databaseのベクトルストレージ、およびAI推論を組み合わせたものです。そのコアとなるワークフローは主題に依存しません。ドキュメントコレクションを整理し、関連する箇所を取得し、それらを使用して質問に答えたり、新しいコンテンツを作成したりできます。サポート記事、開発者ガイド、運用手順書、製品ドキュメントなどは、このパターンに適したコレクションの例です。

主なポイント

  • DOCXドキュメントを保存ファイル、メタデータ、テキストチャンク、埋め込みデータとして取り込みます。
  • Oracle AI Vector SearchとRAGを使用して、各質問に対する証拠を取得します。
  • レビューを支援するために、ファイル名と見出しを含む、出典に基づいた回答を求めてください。
  • 取得した文章とプロンプトテンプレートから編集可能なコンテンツを生成します。
  • 限定された範囲内で選択した文書を比較し、省略箇所を解釈する前に網羅性を確認する。

生成された結果を確認してください。表、長い文章、埋め込みの欠落、または検索範囲の制限により、証拠が漏れている可能性があります。回答、下書き、および比較結果を原文と照合してください。

実装範囲

ドキュメントナレッジベースは、本番環境への導入ではなく、シンプルな社内プロジェクトです。これは、回答の検索、コンテンツの作成、ドキュメントの比較といった、再利用可能なワークフローを示すものです。このコレクションには、サポートガイダンス、開発者向けドキュメント、運用手順、オンボーディング資料、製品知識といった主題となる情報が含まれています。これらのより広範な例は、このパターンをどのように応用できるかを示しています。それぞれに適切なドキュメント、プロンプト、およびカバレッジチェックが必要です。

Enterキーを押すか、画像をクリックしてフルサイズで表示します。
ドキュメントナレッジベースは、ドキュメントのアップロード、検索、コンテンツ生成、比較を1つのアプリケーションに統合します。
ドキュメントナレッジベースは、ドキュメントのアップロード、検索、コンテンツ生成、比較を1つのアプリケーションに統合します。

ユーザーができること

ドキュメント知識ベースは、以下の3つの機能を中心に作業を整理します。

  • 質問をしてください。セマンティック検索が関連する文章を検索し、出典付きの回答を生成します。サポート資料の場合、質問の例としては「接続タイムアウトのトラブルシューティング方法を教えてください」などが挙げられます。
  • 下書きを作成します。取得したコンテンツとテンプレートの指示に基づいて、要約、ナレッジ記事、回答の下書きなどの出力が作成されます。ドキュメントコレクションとプロンプトによって、主題と形式が決まります。
  • 文書を比較する。選択された文書と基準となる文書は、構造化された比較のための根拠となる。文書コレクションにおいては、2つのバージョン間の変更点を要約することが課題となる場合がある。

現在のアップローダーは、DOCXファイルとメタデータを追加します。管理画面では、ドキュメントのカバー範囲、取り込み状況、および不足している埋め込み情報が表示されます。

ドキュメントナレッジベースのユースケース

知識ベースに目的を与えるのは、コレクションとタスクです。これらの例は、同じアーキテクチャの応用例を示しています。それぞれに適切なソースコンテンツとプロンプトが必要です。

Enterキーを押すか、画像をクリックしてフルサイズで表示します。
ドキュメントナレッジベースのユースケース
ドキュメントナレッジベースのユースケース

アーキテクチャの仕組み

Oracle APEXは、ブラウザーインターフェイス、フォーム、およびレポートを提供します。PL/SQLパッケージは、テキストを抽出し、パッセージを取得し、プロンプトを組み立て、AIサービスを呼び出します。Oracle AI Databaseは、リレーショナルデータに加えて、ネイティブベクトルストレージとAIベクトル検索を提供します。この実装では、スキーマは、元のDOCX BLOB、ファイル名、日付、ハッシュ、処理ステータス、抽出されたテキスト、順序付けられたチャンク、および埋め込みを格納します。また、検索質問とクエリベクトル、生成された回答、再利用可能なプロンプトテンプレート、および生成されたレポートと比較のための組み立てられたプロンプトと出力も格納します。回答パッケージは回答テキストを格納しますが、組み立てられたプロンプトは永続化しません。

これらの記録をOracle AI Databaseに保存することで、SQLは証拠とメタデータを直接結合し、カテゴリフィルタを適用し、保存された生成プロンプトと出力を別のベクトルストアと同期することなく取得できます。これにより、ワークフローの検査と保守が容易になりますが、完全な抽出や正確な回答を保証するものではありません。

アプリケーションには主に2つの流れがあります。

ドキュメント → テキストを抽出 →チャンクに分割 →埋め込みを作成
→質問を保存 →埋め込みを作成→ 関連するチャンクを検索 → 回答を生成

これは検索拡張生成(RAG)と呼ばれるものです。モデルはリクエストごとに選択されたソースパッセージを受け取ります。アップロードされたドキュメントで学習させるわけではありません。ベクトルをリレーショナルデータと並べて保持することで、SQLは意味ランキングとメタデータフィルタ、明示的なドキュメント選択を組み合わせることができます。

当社のAIラッパーは、OpenAI互換の埋め込みおよびチャットリクエスト形式を使用するOCI生成AIエンドポイント用に構成されています。エンドポイントURLとモデル識別子は構成値です。APIシークレットはAPEX Web認証情報に含まれ、REST呼び出しで参照されるため、アプリケーションコードには含まれません。チェックイン済みのエンドポイントのデフォルト値とモデルのプレースホルダーは設定値であり、これらの組み合わせが現在サポートされていることの証明ではありません。サービスの最新ドキュメントを使用して、対象環境での埋め込みとチャットアクセス両方を確認してください。

前提条件とセットアップ

  • Oracle APEX とデータベースのサポート。VECTOR、TO_VECTOR、 をサポートする Oracle Database 環境で APEX ワークスペースと解析スキーマを使用してくださいVECTOR_DISTANCE。インストールされている APEX とデータベースのバージョンを確認してください。ソースでは、テスト済みの APEX の最小リリースは指定されていません。カスタム パッケージではAPEX_ZIP、APEX_JSON、 、 を使用しますAPEX_WEB_SERVICE。
  • OCI 生成型 AI アクセス。到達可能な HTTPS 埋め込みエンドポイントとチャットエンドポイント、承認済みモデル ID、リージョン可用性、および必要なサービス権限を設定します。EMBEDDINGS_URL、EMBEDDING_MODEL、CHAT_URL、 を設定しますCHAT_MODEL。両方の呼び出しをテストしてください。OpenAI 互換のチャットエンドポイントは、互換性のある埋め込みサポートを自動的に意味するものではありません。現在のベクトル列と変換では 1,536 次元を想定しているため、取り込み前に埋め込み次元診断を確認してください。
  • APEX Web 認証情報。プロジェクトのベアラートークン設定では、ヘッダーAuthorizationとシークレット値を持つ HTTP ヘッダー認証情報を作成しBearer <API key>、URL の有効範囲を目的のサービスプレフィックスに制限します。WEB_CREDENTIAL_STATIC_IDその認証情報の静的 ID を設定します。後のプロジェクトビルド手順では を使用しますcredentials-for-standards-aiが、元のシードでは を使用しますopenai-api-key。どちらかを盲目的にコピーするのではなく、アクティブなワークスペース認証情報と一致させてください。データベース環境の要件に従って、アウトバウンドネットワークアクセスを構成します。
  • スキーマ、ページ、および小規模な DOCX トライアル。スキーマと取り込み、AI、検索、回答、テンプレート、レポート、比較パッケージをインストールし、コンパイルを確認して、APEX ページ プロセスを接続します。代表的な DOCX ファイルから始め、回答をテストする前に、抽出されたテキスト、チャンク、埋め込みを調べます。提供されているソースは、完全な検証済みのワンクリック APEX デプロイメントではありません。現在のアップローダーは DOCX 専用です。PDF、HTML、Markdown、および画像には、追加のパーサーが必要です。

サポートされている認証およびサービス構成については、OracleのWeb認証情報に関するガイダンス、およびOCI Generative AI APIのキーとエンドポイントに関するドキュメントを参照してください。

文書を検索可能なコンテンツに変換する

ユーザーがDOCXファイルをアップロードすると、アプリケーションは元のファイルを保持し、SHA-256ハッシュを計算して同一のアップロードを検出します。本文段落の抽出、見出しの検出、テキストを約5,000文字のチャンクにグループ化するためにAPEX_ZIP、およびを使用しますXMLTABLE。各チャンクは、見出しと元のドキュメントとの関連付けを保持します。


抽出の制限事項: XPathは本文中の段落のみを読み取り、表セル内の段落は読み取りません。ヘルパーはXMLテキスト1回につき最大200文字までしか処理できず、組み立てられた段落のサイズは3,000バイトに制限されます。そのため、長い文章はチャンク化される前に不完全な状態になる可能性があります。元のDOCXファイルは、カバレッジを確認するための参照として使用されます。チャンクには重複はありません。

アプリケーションは各チャンクの埋め込みを作成し、それをVECTOR(1536, FLOAT32)として保存します。埋め込みとは、類似性比較をサポートする形式でテキストを表す数値のリストです。関連する文章は、異なる単語を使用していても、互いに近い位置にある場合があります。たとえば、「サインインできません」は、「認証失敗」に関する文章と一致する可能性があります。

埋め込み機能は、テキストを構成済みのモデルに送信し、返されたJSON配列をOracleベクトルに変換します。以下は、PL/SQLパッケージ内での変換処理の抜粋です。

l_response := embedding_response (p_text); 
l_embedding_json := json_query (
l_response, '$.data[0].embedding' returning clob);
SELECT to_vector(l_embedding_json, 1536, float32) 
INTO l_vector
FROM dual;

embedding_response設定された埋め込みモデルと入力テキストを使用してJSONリクエストを構築します。ドキュメントのチャンクと質問は同じ埋め込みモデルを使用するため、それらのベクトルを比較できます。

証拠を見つけ、答えを出す

検索ごとに、質問を一度埋め込み、そのベクトルを保存します。SQLは、コサイン類似度に基づいてドキュメントのチャンクをランク付けします。距離が小さいほど、意味的な類似性が高いことを意味します。以下の簡略化されたクエリは、汎用的な知識ベーステーブル名を使用したコア操作を示しています。メタデータフィルタを使用すると、ランキング前に候補ドキュメントを絞り込むことができます。

SELECT c.chunk_id, c.heading, c.chunk_text, 
vector_distance(c.embedding,
q.query_embedding, cosine) distance
FROM kb_doc_chunks c
JOIN kb_search_queries q ON q.search_id = :search_id
WHERE c.embedding IS NOT NULL
ORDER BY distance
Fetch first :top_n rows only ;

選択された文章、ファイル名、見出し、文書の日付を組み合わせてプロンプトを作成します。指示では、モデルに特定の質問に答え、出典を明記し、提供された資料が不十分な場合はその旨を伝えるように求めます。生成は共有関数によって処理されます。

l_output := kb_ai_pkg.generate_text ( p_system_prompt
=>
'すべての主張は提供されたソース資料に基づいて根拠づけてください。' ,
p_prompt => l_prompt
);

このファンクション内では、APEX_JSONがチャット・リクエストを作成し、APEX_WEB_SERVICE.MAKE_REST_REQUESTが構成済のWeb資格証明を使用して送信します。レスポンス・テキストはchoices[0].message.contentから抽出され、APEXに表示されます。

コンテンツや比較のために証拠を再利用する

コンテンツ生成では、取得したコンテキストにトピック、出力タイプ、テンプレート指示を追加します。テンプレートは対象読者、構成、トーンを定義し、ソースとなる文章は根拠を提供します。本実装では、組み立てられたプロンプトと生成されたテキストを保存し、Markdown形式でダウンロードできるようにします。

Enterキーを押すか、画像をクリックしてフルサイズで表示します。
トピック、コンテンツタイプ、カテゴリ、テンプレートに基づいてコンテンツが生成されます。このスクリーンショットは入力フォームを示しています。生成された下書きは、ソースコードの確認が必要です。
トピック、コンテンツタイプ、カテゴリ、テンプレートに基づいてコンテンツが生成されます。このスクリーンショットは入力フォームを示しています。生成された下書きは、ソースコードの確認が必要です。

文書比較は、「この2つの文書間で何が変わったのか?」という別の疑問に答えるものです。ユーザーは現在の文書と基準となる文書を選択し、ソース参照付きの構造化された比較を生成します。スクリーンショットには、現在の文書と基準となる文書のセレクタ、オプションのカテゴリフィルター、および比較アクションが表示されています。

Enterキーを押すか、画像をクリックしてフルサイズで表示します。
比較対象となる文書と基準となる文書を選択してください。この内部プロジェクトに現在読み込まれている文書が、比較例として表示されます。
比較対象となる文書と基準となる文書を選択してください。この内部プロジェクトに現在読み込まれている文書が、比較例として表示されます。

セマンティック検索とは異なり、このワークフローでは、選択された各ドキュメントから、ドキュメント順に限定されたチャンクセットを取得します。プロンプトでは、2つのセットを「現在」と「ベースライン」としてラベル付けし、サポートされている変更を尋ねます。比較はデフォルトでドキュメントごとに最初の10個の埋め込みチャンクに対して行われ、オプションのカテゴリフィルタによって最大15個まで可能です。コンテキストが限定されているため、省略された項目は自動的に解決されたことを示す証拠にはなりません。

再利用可能な要素は、ドキュメントの保存、抽出、チャンキング、埋め込み、取得、および生成です。ドメインによって、メタデータ、フィルタ、およびプロンプトが決まります。サポートリポジトリでは、製品とバージョンでフィルタリングできます。開発者向けドキュメントでは、API、言語、およびリリースが使用される場合があります。アプリケーションを適応させるには、ソース形式用のパーサーと、コレクションに適したアクセス制御も必要です。現在のアップローダーは、DOCXファイルを処理します。

回答の質は、提供される証拠に依存します。現在の抽出ツールは本文段落に重点を置いているため、表の内容や長い文章については、網羅性を評価する際に注意が必要です。類似度スコアは事実の正確性や鮮度を保証するものではなく、生成された回答は依然として出典と照合して確認する必要があります。

ドキュメントナレッジベースは、ドキュメントの追加、質問、ドラフトの作成、ソースの比較といった一連のワークフローを統合します。ドキュメント、メタデータ、ベクター、再利用可能なプロンプト、生成された成果物をOracle Databaseにまとめて保存することで、使い慣れた結合とフィルタによるワークフローが実現します。次のステップは、代表的なドキュメントに対して抽出と取得を検証し、広く利用する前に生成された出力をソースと照合することです。

画像は、実際に動作しているドキュメント知識ベースアプリケーションを示しています。コードスニペットは、一般的なkb_名前を使用した簡略化された例であり、単体でインストールできるスクリプトではありません。

さらに詳しく知りたい場合は、Oracle APEX WebサービスAPIとOracleベクトル距離関数を参照してください。

よくある質問

このアプリは何のためのものですか?

ドキュメントナレッジベースは、質問、生成されたドラフト、選択したドキュメントの比較などを通じて、DOCXコレクションを検索および再利用できるようにします。たとえば、サポートチームはトラブルシューティングのガイダンスを取得したり、開発者チームはAPIの概要を作成したり、オンボーディングチームは従業員が手順を見つけるのを支援したりできます。これらの用途は、提供されるドキュメントとプロンプトによって異なります。

サポートされているファイル形式は何ですか?

現在のアップローダーとエクストラクターはDOCX形式に対応しています。PDF、HTML、Markdown、スキャン画像、およびDOCX形式の表の完全な抽出には対応していません。別の形式を追加するには、パーサーとカバレッジ検証が必要です。

RAGはここで何をするのですか?

検索拡張生成では、質問を埋め込み、保存されたチャンクを意味的類似性に基づいてランク付けし、選択されたパッセージをコンテキストとしてモデルに提供します。指示では、ソースに基づいた回答とソース参照を要求します。一方、比較ワークフローでは、明示的に選択された2つのドキュメントから、範囲が限定され順序付けられたチャンクを取得します。

アップロードされたドキュメントはモデルの学習に使用されますか?

アプリケーションコードは埋め込みと生成の呼び出しを行うだけで、モデルのトレーニングや微調整は行いません。選択されたソーステキストは、設定済みの推論サービスに送信されます。この実装上の事実は、プロバイダーのデータ保持やデータ使用に関する包括的な説明ではありません。機密文書をアップロードする前に、選択したサービス、モデル、および適用される利用規約を確認してください。

何が回答範囲と回答精度を制限するのか?

表のセルはスキップされ、長いXML文字列や段落は切り詰められる可能性があり、チャンクには重複がありません。埋め込み、メタデータフィルタ、範囲指定検索または比較が欠落している場合、関連する証拠が見落とされる可能性があります。類似性や出典引用は、正確性や最新性を証明するものではありません。抽出されたカバレッジを確認し、生成されたすべての回答、ドラフト、比較結果を元の文書と照合してください。

コメント

このブログの人気の投稿

ミリ秒の問題: BCCグループとOCIが市場データ・パフォーマンスを再定義する方法(AWSに対するベンチマークを使用) (2025/11/13)

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle Enterprise Manager 24aiの概要 (2024/12/18)