このドキュメントは、AI関数サービスのリファレンスドキュメントであり、OceanBaseデータベースにおけるAI Functionの機能、各関数の構文とパラメータ、および多様な使用例を紹介します。
AI関数はSQL式を通じて、AIモデルの能力をデータベース内のデータ処理に直接統合します。これにより、AI大規模モデルを用いたデータの抽出、分析、要約、保存などの操作が大幅に簡素化され、現在のデータベースおよびデータウェアハウス分野における重要な新機能となっています。MySQLモードでは、OceanBaseデータベースはDBMS_AI_SERVICEパッケージを通じてAIモデルとエンドポイントの管理を提供し、いくつかの組み込みAI関数式を追加しています。また、ビューを通じてAIモデルの呼び出し状況を監視することもサポートしています。
前提条件
- AIモデルに関する権限を既に保有していること。詳細はAI関数サービスの権限を参照してください。
- AIモデルとエンドポイントがまだ登録されていない場合は、AIモデルの登録に従って登録してください。
注意事項
CREATE AI MODELおよびDROP AI MODEL操作はプライマリテナントとスタンバイテナント間で同期されますが、CREATE AI MODEL ENDPOINT、ALTER AI MODEL ENDPOINT、DROP AI MODEL ENDPOINT操作は同期されません。そのため、スタンバイテナントではAI機能サービスを利用するには、AIモデルエンドポイントを手動で設定する必要があります。- ハイブリッド検索(Hybrid Search)は、AI機能サービスのモデル管理および埋め込み(embedding)機能に依存しています。AIモデルを削除する際には、潜在的な問題を回避するため、そのモデルがハイブリッド検索で参照されていないか確認する必要があります。
AI関数式
OceanBaseデータベースは以下のAI関数式をサポートしており、SQLステートメントを通じてOceanBaseデータベース内で直接AIモデルを呼び出すことができます。これにより、呼び出しプロセスが簡素化されます。
名前 |
説明 |
|---|---|
AI_COMPLETE |
指定されたテキストを呼び出して大規模モデルを生成し、プロンプトとデータ情報を処理し、処理結果を解析します。 |
AI_EMBED |
埋め込みモデル(Embedding Model)を呼び出して、テキストデータをベクトルデータに変換します。 |
AI_RERANK |
再ランキングモデル(Rerank Model)を呼び出して、プロンプトに基づいてテキストの類似度をソートします。 |
注意
AI関数式を使用する場合は、データベースにAIモデルおよびエンドポイント情報が登録されていることを確認する必要があります。登録手順については、AIモデルの登録を参照してください。以下の例で使用されているモデルキーは ob_complete、ob_embed、ob_rerank です。
AI_COMPLETE
AI_COMPLETE 関数は、model_key を使用して登録済みのテキスト生成大規模言語モデル(LLM)を指定し、ユーザーが提供するプロンプトとデータを処理して、大規模言語モデルが生成したテキスト情報を返します。ユーザーは prompt パラメータで、組織のプロンプトとデータベース内のデータ形式をカスタマイズできます。この方法は、テキストデータの多様な処理をサポートするだけでなく、データベース内部でのバッチ処理も実現できるため、データベースと大規模言語モデル間でのデータの往復コピーによるオーバーヘッドを効果的に回避できます。
使用方法
構文は以下のとおりです:
AI_COMPLETE(model_key, prompt[, parameters])
パラメータ説明:
パラメータ |
説明 |
型 |
NULL許容 |
|---|---|---|---|
| model_key | データベースに登録されているモデル。 | VARCHAR(128) | No |
| prompt | ユーザーが入力するプロンプト情報。 | VARCHAR/TEXT(LONGTEXT) | No |
| parameters | APIで提供されるオプションの設定をサポートするために使用されます。モデルのオプションフィールドは、生成されるメッセージボディに直接含まれます。ベンダーによって若干の違いがあります。一般的に、よく見られるオプションは以下のとおりです:temperature、top_p、max_tokens。通常はデフォルト設定で十分なので、指定する必要はありません。 |
JSON | Yes |
model_key と prompt のどちらか一方または両方を NULL に設定した場合、関数はエラーを返します。
戻り値:
- text、プロンプトに基づいて大規模言語モデルが生成したテキスト。
例
感情分析の例
SELECT AI_COMPLETE("ob_complete","あなたのタスクは、提供されたテキストに対して感情分析を行い、その感情の傾向が肯定的か否定的かを判断することです。 以下は分析対象のテキストです: <text> 今日は本当にいい天気だね </text> 判断基準は以下のとおりです: テキストが肯定的な感情を表現している場合は1を出力し、否定的な感情を表現している場合は-1を出力します。他の内容は出力しないでください。\n") AS ans;実行結果は次のとおりです:
+-----+ | ans | +-----+ | 1 | +-----+翻訳の例
CREATE TABLE comments ( id INT AUTO_INCREMENT PRIMARY KEY, content TEXT ); INSERT INTO comments (content) VALUES ('hello world!'); -- concat式を使用して処理後のデータをデータベースのテーブルの列名に置き換えることで、データをデータベースから大規模言語モデルにコピーし、その結果を再びデータベースにコピーする必要なく、データベース内のデータをバッチ処理できます。 SELECT AI_COMPLETE("ob_complete", concat("あなたは翻訳の達人です。以下の英語を中国語に翻訳してください。以下は翻訳対象のテキストです:<text>", content, "</text>")) AS ans FROM comments;実行結果は次のとおりです:
+-------------+ | ans | +-------------+ | 你好,世界! | +-------------+分類の例
SELECT AI_COMPLETE("ob_complete","あなたは分類の達人です。一連の質問テキストを受け取り、それらの質問の所属を区別する必要があります。所属リストは[\"ハードウェア部\",\"ソフトウェア部\",\"その他\"]です。以下は分析対象のテキストです: <text> この画面の品質は本当に悪い </text>") AS res;実行結果は次のとおりです:
+--------+ | res | +--------+ | ハードウェア部 | +--------+
AI_EMBED
AI_EMBED 関数は、model_key を使用して登録済みの埋め込みモデル(Embedding Model)を指定し、ユーザーが提供するテキストデータをベクトルデータに変換します。モデルが複数の次元をサポートする場合、dim パラメータを使用して出力するベクトルの次元を指定できます。
使用方法
構文は以下のとおりです:
AI_EMBED(model_key, input, [dim])
パラメータ説明:
パラメータ |
説明 |
型 |
NULL許容 |
|---|---|---|---|
| model_key | データベースに登録されているモデル。 | VARCHAR(128) | No |
| input | 変換したいユーザー入力のテキストデータ。 | VARCHAR | No |
| dim | 出力する関連次元のベクトルを指定します。一部の大規模言語モデルベンダーが提供するAPIでは、複数の次元を設定できます。 | INT64 | Yes |
model_key と input のどちらか一方が NULL の場合、関数はエラーを返します。
戻り値:
- ベクトル形式の文字列。これは、埋め込みモデルがテキストに基づいて変換したベクトルです。
例
単一行データの埋め込み
SELECT AI_EMBED("ob_embed","Hello world") AS embedding;実行結果は次のとおりです:
+----------------+ | embedding | +----------------+ | [0.1, 0.2, 0.3]| +----------------+テーブルの列への埋め込み
CREATE TABLE comments ( id INT AUTO_INCREMENT PRIMARY KEY, content TEXT ); INSERT INTO comments (content) VALUES ('hello world!'); SELECT AI_EMBED("ob_embed",content) AS embedding FROM comments;実行結果は次のとおりです:
+----------------+ | embedding | +----------------+ | [0.1, 0.2, 0.3]| +----------------+
AI_RERANK
AI_RERANK 関数は、model_key で登録済みのリランキングモデル(Rerank Model)を指定し、ユーザーが提供するクエリワードと文書リストをベンダーのルールに従って整理して指定されたモデルに送信します。その後、モデルが返すソート結果を解析して返します。これはRAGのリランキングシナリオに適用されます。
使用方法
構文は以下のとおりです:
AI_RERANK(model_key, query, documents[, document_key])
パラメータ説明:
パラメータ |
説明 |
型 |
NULL許容 |
|---|---|---|---|
| model_key | データベースに登録されているモデル。 | VARCHAR(128) | No |
| query | ユーザーが入力したテキスト。 | VARCHAR(1024) | No |
| documents | ユーザーが入力したドキュメントのリスト。 | JSON ARRAY、例:['["apple", "banana"]'] |
No |
model_key、query、documents のうち、いずれか一つが NULL の場合、この関数はエラーを返します。
戻り値:
- JSON配列。リランキングモデルが返したドキュメントとその関連性スコアを含み、関連性スコアの降順で並べ替えられています。
例
SELECT AI_RERANK("ob_rerank","Apple",'["apple","banana","fruit","vegetable"]');
実行結果は次のとおりです:
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ai_rerank("ob_rerank","Apple",'["apple","banana","fruit","vegetable"]') |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| [{"index": 0, "document": {"text": "apple"}, "relevance_score": 0.9912109375}, {"index": 1, "document": {"text": "banana"}, "relevance_score": 0.0033512115478515625}, {"index": 2, "document": {"text": "fruit"}, "relevance_score": 0.0003669261932373047}, {"index": 3, "document": {"text": "vegetable"}, "relevance_score": 0.00001996755599975586}] |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
AIモデル情報の確認
OceanBaseデータベースでは、ビューを通じて登録済みのAIモデルおよびAIモデルエンドポイント情報を確認できます。詳細については、以下を参照してください:
- CDB/DBA_OB_AI_MODELS:AIモデル情報を確認します。
- CDB/DBA_OB_AI_MODEL_ENDPOINTS:AIモデルエンドポイント情報を確認します。
関連ドキュメント
- AIモデルの登録:モデルとエンドポイントを登録するための完全なコマンド。
- AI関数サービス クイックスタート:初回利用ガイド。登録から最初のサンプルを実行するまでの最小手順。
- ベクトル埋め込み技術
- MySQLモードの権限分類