※ 本記事は、Mark Hornickによる”Announcing Select AI with Retrieval Augmented Generation (RAG) on Autonomous Database“を翻訳したものです。

2024年10月10日


検索拡張生成(RAG)をサポートするSelect AIの提供を開始できることを嬉しく思います。自然言語プロンプトを使用して、プライベート・データに基づいてインサイトを得たり、革新的なコンテンツを生成したりするために、LLMを簡単に使用できます。Select AI RAGを使用することで、自然言語によるプロンプトやクエリに対して、より適切な応答や最新の情報を用いた応答を得ることができ、ハルシネーション(幻覚)のリスクを軽減することができます。Select AIを活用してエンタープライズ・データでプロンプトを強化することで、大規模言語モデル(LLM)が知っていることとエンタープライズ・データベースの知識との間のナレッジ・ギャップを埋めることができます。

Select AIは、自然言語プロンプトからSQLを生成、実行、説明するか、LLMとチャットするかに関係なく、生成AIを組み合せて使用し、すでに簡素化および自動化しています。RAGを使用すると、生成AIをSQLから次のレベルに便利に使用できます: 

  • 組込みの自動AIパイプラインを介して、プライベート・データを使用してベクトル・ストアを作成および移入
  • セマンティックな類似性検索を通じて取得されたベクトル・ストア・コンテンツでプロンプトまたは問合せを自動的に補強
  • 指定したAIプロバイダおよびLLMにこの拡張プロンプトを送信し、生成された結果を返します

このリリースでは、Oracle Database 23aiの新機能であるOracle AI Vector Searchを使用したRAGがSelect AIでサポートされています。

Select AI RAG

LLMは、様々なインターネット・ソースからのスナップショットからのデータを使用して構築されます。ただし、企業に関する知識はほとんど、または、まったくありません。特に、その知識がプライベートまたはプロプライエタリとみなされる場合です。RAGは、モデル・ファインチューニングを必要とせずに、この情報をLLMで使用できるようにします。このため、コストと時間がかかります。

Select AI RAGベクトル・データベース・コンテンツを統合し、大規模言語モデル(LLM)からより正確な結果を提供できるようにします。ベクトル・データベースは、トランスフォーマとも呼ばれる埋込みモデルを使用して生成されるベクトルのセマンティック・シミュレーション検索を通じて、テキストなどの非構造化データの高速な取得をサポートします。

Select AI RAGは、プロンプトを1つ以上のベクトルに変換し、ベクトル・データベース内のコンテンツに対してセマンティック類似性検索を実行するオーケストレーション・ステップを自動化します。さらに、Select AI RAGを使用して、生データを使用してベクトル・データベースの作成と移入を自動化し、この強力な機能の使用を開始するのに役立ちます。

Select AIとLangChainのような個別のオーケストレーション・フレームワークとは対照的です。このようなフレームワークにより、アプリケーションでのRAGのような手作りの技術が可能になります。Select AIは、RAG技術を明示的にコーディングするのではなく、最小限の追加仕様でアプリケーションでのRAGの有効化を簡素化および自動化します。

たとえば、Select AIを使用すると、従業員は自然言語での会話を通じて、質問をしたり、社内の複数のソースからインサイトを取得したりできます。Select AI RAGは、ユーザーのリクエストとエンタープライズ・データのドキュメントに対応するベクトルの間でセマンティック類似性検索を実行します。これには、製品ドキュメント、競合分析レポート、年次レポート、顧客コールの転写、顧客担当者インタラクション・ノート、企業ポリシー・ドキュメントなどが含まれます。

Select AIにより、各RAGステップが簡略化されます:

  • 既存のベクトル・ストアへの接続または新規ベクトル・ストアの作成
  • 繰返しスケジュールまたはトリガー・イベントでのオブジェクト・ストレージのオブジェクトへのベクトル索引の移入および更新
  • そのベクトル・ストアを使用して、関連するコンテンツでプロンプトを自動的に補強し、指定されたAIプロバイダに送信
  • LLMからユーザーに結果を返す

次に、Select AI RAGについて詳しく説明します。

ベクトル・ストアを構築

Select AIは、ベクトル・ストアにコンテンツを自動的に移入します。ドキュメントを適切なサイズにチャンク化し、指定されたトランスフォーマ・モデルを適用してベクトル埋込みを生成します。ドキュメントは、Object Storageなどのデータ・ソースから取得できます。

Vector store creation

 

Select AI RAGの重要な機能は、Object Storageからベクトル・ストアへの新しいデータの統合自動更新です。新しいデータがObject Storageに到着すると、対応するベクトル・ストアに自動的に追加され、ベクトル索引が更新されます。

検索拡張生成

Select AIは、AIプロファイルの新しいベクトル索引仕様と組み合せて’narrate’アクションを使用してRAGを有効にします。SQL生成の場合、’narrate’はLLM生成のSQL問合せを使用して構造化データベース情報を取得し、LLMにその結果の自然言語記述(それ自体は「検索拡張生成」の形式)を生成するように依頼します。ベクトルインデックスでRAGが有効になっている場合、代わりに’narrate’は、ユーザープロンプトに基づいてベクトル検索結果でプロンプトを自動的に拡張します。次に、拡張プロンプトをLLMに送信し、セマンティック検索によって取得されたコンテンツを使用してレスポンスを生成します。

LLMが’narrate’からのレスポンスに基づくベクトル・ストアから取得されたコンテンツを表示するには、同じプロンプトで’narrate’ではなく、AIの’runsql’アクションを選択します。’runsql’と’narrate’の間には、SQL生成に対する自然言語とRAGの使用の対称性があります。どちらの場合も、runsqlはプロンプトに基づいて、データベース表とベクトル・ストアのどちらからでもデータを取得します。その後、’narrate’はその結果を受け取り、生成された自然言語応答のためにLLMに送信します。

プロンプトが表示されたら、Select AIは埋込みモデルとAIプロファイルで指定されたベクトル・データベースを使用して、上位kの類似ベクトルのセマンティック類似性検索を実行します。次に、対応するドキュメント・チャンクと元のプロンプトが、LLMに送信される拡張プロンプトに組み合されます。Select AIは、RAG技術の完全なオーケストレーションを処理します。

RAG process

さらに、Select AIは、ベクトル検索コンテンツの一部であった可能性があるLLMレスポンスに含まれるSQL問合せを実行します。Select AI RAGを使用して、システム統計を取得するためのデータベースの問合せ方法を学習する例を考えてみます。ベクトル検索では、それだけを行うための問合せを含むドキュメントが返される可能性があります。そのようなSQL問合せを実行した結果は、ユーザーにレスポンスを返す前にLLMレスポンスに追加されます。この例では、前述の図で取得されていない追加のステップを使用して、結果内のSQL問合せを識別し、それらの問合せを実行し、それらの結果を直接LLMレスポンスとともに返します。

Select AI RAGの使用

パッケージDBMS_CLOUD_AIには、索引名と属性のセットを取得する新しいプロシージャCREATE_VECTOR_INDEXがあります。これらの属性には、ベクトル・データベース・プロバイダ、コンテンツが格納されているオブジェクト・ストレージ内の場所、オブジェクト・ストレージ資格証明名、埋込みモデルを指定するAIプロファイルの名前、ベクトル・サイズ、距離メトリック、および目的のチャンクの重複とサイズが含まれます。

AIプロファイルにデフォルトのLLMがあるのと同様に、ベクトル索引にはデフォルトのトランスフォーマ・モデルがあります。ベスト・プラクティスとして、使用するトランスフォーマ・モデルに固有のAIプロファイルを作成できます。ただし、LLMとトランスフォーマの両方が同じAIプロバイダからのものである場合、両方に単一のAIプロファイルを使用して、同じAIプロファイル・オブジェクトに両方を含めることができます。

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name => 'OPENAI_TEXT_TRANSFORMER',
    attributes   => '{"provider": "openai",
                      "credential_name": "OPENAI_CRED",
                      "embedding_model": "text-embedding-ada-002" }');
END;

BEGIN
  DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
    index_name  => 'MY_VECTOR_INDEX',
    attributes  => '{"vector_db_provider": "oracle",
                     "location": "https:.../my_namespace/my_bucket/my_data_folder",
                     "object_storage_credential_name": "OCI_CRED",
                     "profile_name": "OPENAI_TEXT_TRANSFORMER",
                     "vector_dimension": 1536,
                     "vector_distance_metric": "cosine",
                     "chunk_overlap":128,
                     "chunk_size":1024}');
END;

CREATE_VECTOR_INDEXプロシージャは、DBMS_CLOUD_PIPELINEを使用してパイプラインを作成します。これにより、ベクトル索引とともにユーザー・スキーマの表へのベクトル埋込みの作成がトリガーされます。パイプラインは、USER_CLOUD_PIPELINESビューで <vector_index_name>$PIPELINE という名前で表示および監視できます。
ベクトルインデックスが使用可能になったら、AIプロファイルにベクトル・インデックス名を指定します。この例では、埋込みモデルは属性JSON文字列で明示的に指定されています。Select AIでは、ベクトル・ストアから取得したソースをリストすることもできます。これはデフォルトで有効になっていますが、次に強調表示します。

ベクトル・インデックスを使用してAIプロファイルを作成します。

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name => 'OPENAI_GPT',
    attributes   => '{"provider": "openai",
                      "credential_name": "OPENAI_CRED",
                      "vector_index_name": "MY_VECTOR_INDEX",
                      "temperature": 0.2,
                      "max_tokens": 4096,
                      "model": "gpt-3.5-turbo",
                      "embedding_model": "text-embedding-ada-002",
                      "enable_sources": true }');
END;

これで、‘narrate’アクションを使用できます。天気情報を含むベクトル・データベースがある場合、2023年に最高温度について尋ねると、次のように結果が表示されることがあります:

EXEC DBMS_CLOUD_AI.SET_PROFILE('OPENAI_GPT');
SELECT AI NARRATE what was the maximum temperature in 2023;

RESPONSE
--------------------------------------------------------------------------------
The maximum temperature in 2023 was 82.1 in August.

Sources:
  - SOP_Weather_Current.csv (<bucket>/SOP_Weather_Current.csv)

Select AIには、ベクトル・データベースから取得され、LLMがレスポンスを生成するために使用するソース・ドキュメントも用意されています。

対応する’runsql’呼出しは、次の出力を提供します:

SELECT AI RUNSQL what was the maximum temperature in 2023;

DATA                SOURCE                  URL                              SCORE
------------------- ----------------        -------------------------------- -----
SOP – This file     SOP_Weather_Current.csv <bucket>/SOP_Weather_Current.csv 0.67
contains weather
data for 2021-2024
...

RAGの使用時に’runsql’から返される列は、常に同じであることに注意してください。

主な利点

Select AI RAGには、次の利点があります:

  • データ・アクセスの民主化: エンタープライズ・データの使用に対する障壁を取り除きます。SQLのエキスパートに頼って企業のデータストアにアクセスしてクエリするのではなく、自然言語で質問を行い、強力なベクトル検索を活用するだけです。
  • より関連性の高い結果: LLMは、エンタープライズ・データから十分なコンテキストが提供されると、より正確で関連性の高い応答を生成できます。これはLLMのハルシネーション(幻覚)を減らすのに役立ちます。
  • 現在の結果: ベクトル・ストアの更新の容易さは、LLMに提供されるデータを必要に応じて最新にできることを意味します。トレーニング・データ・セットの締め切り日や、コストや時間のかかるモデルのファイン・チューニングはありません。
  • シンプルさ: Select AIは、プロセスの主要なステップを自動化します。開発者は、ベクトル索引の生成、データのエンコーディング、ベクトル・ストアの移入、RAGパイプラインの開発の専門家である必要はありません。プライベート・データの格納場所(オブジェクト・ストレージ内のhtmlファイルなど)と、ベクトル埋込みの生成時に使用するトランスフォーマ・モデルを指定するだけです。
  • 状況に即したわかりやすい結果: ベクトル・ストアから取得され、LLMに提供されたソースのリストを取得します。これにより、応答の基になったソース材料を把握することで、LLM結果に対する信頼性が高まります。結果を自然言語テキストまたはJSON形式で表示し、ソースなどのレスポンス・コンポーネントを簡単に抽出してアプリケーションを開発できるようにします。

より多くのユース・ケースを実現

RAGは、業界や組織を超えた新しいユース・ケースを可能にします。

  • IT: 技術者は、サポートWebサイトやマニュアルで作業するのではなく、ナレッジ・ベースを会話形式で問い合せることで、「データベース・エラーORA-xxxxxの原因となる可能性が高いものは?」などのシステム・トラブルシューティングの問題に対する回答を迅速に得ることができます。
  • カスタマー・サービス: 顧客の履歴と製品情報を使用して、「新しく購入したアイテムの壊れた機能を修正するにはどうすればよいですか?」などの質問に、カスタマー・エクスペリエンスを向上させることができるパーソナライズされた関連性のある回答を使用して質問に答えます。
  • 財務: 市場の動き、アナリスト・レポート、その他の経済指標に基づいて、顧客関係を管理する財務顧問に、主要な動向のカスタマイズされたスナップショットを提供します。

まとめ

Select AI RAGは、ビジネス上の疑問に対する答えを得る方法を変革します。データドリブンの意思決定がかつてないほど重要である場合、Select AI RAGは、生成AIで価値のある最新のエンタープライズ・データを利用可能にし、生産性を向上させ、AIを活用したアプリケーションの開発をサポートするのに役立ちます。

リソース

詳細は、以下を参照して、今すぐLiveLabsでSelect AI RAGを試してみてください。

ブログ

ドキュメント

LiveLabs