本記事は、AI関数サービスを初めて利用する方を対象としており、最小限の手順でモデルの登録から最初のサンプルの実行までを完了し、プロセスをスムーズに進めることができます。
前提条件
- OceanBaseクラスタをデプロイし、MySQLテナントを作成してデータベースに接続していること。
- AI関数に関する権限が付与されていること。詳細はAI関数サービスの権限を参照してください。
クイックスタート
ステップ1:モデルとエンドポイントの登録
初めて使用する前に、AI モデルとそのアクセスエンドポイントを登録する必要があります。AI モデル登録 で提供されているテンプレートを参照し、該当する AI モデルベンダーの例をコピーして、API Key を実際の API Key に置き換えれば実行できます。以下は AI_COMPLETE 感情分析モデル(Alibaba Cloud、OpenAI 形式互換)の登録例です:
CALL DBMS.AI_SERVICE.DROP_AI_MODEL ('ob_complete');
CALL DBMS_AI_SERVICE.DROP_AI_MODEL_ENDPOINT ('ob_complete_endpoint');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL(
'ob_complete', '{
"type": "completion",
"model_name": "THUDM/GLM-4-9B-0414"
}');
CALL DBMS_AI_SERVICE.CREATE_AI_MODEL_ENDPOINT (
'ob_complete_endpoint', '{
"ai_model_name": "ob_complete",
"url": "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",
-- 実際の access_key に置き換える必要があります
"access_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"provider": "aliyun-openAI"
}};
ステップ2:サンプルの実行
ここでは、AI_COMPLETE 感情分析モデルを使用して、テキストの感情を判断する例を示します:
SELECT AI_COMPLETE("ob_complete", "あなたのタスクは、提供されたテキストに対して感情分析を行い、その感情の傾向がポジティブかネガティブかを判断することです。
以下が分析対象のテキストです:
<text>
お天気がとても良いですね
</text>
判断基準は以下の通りです:
テキストがポジティブな感情を表現している場合は 1 を出力し、ネガティブな感情を表現している場合は -1 を出力します。他のものは出力しないでください。") AS sentiment;
期待される戻り値では、sentiment が 1 であり、ポジティブな感情を表します。
ステップ3:総合的なアプリケーションの構築(オプション)
3つのAI関数を組み合わせて使用し、3ステップで簡単なインテリジェントQ&Aシステムを構築します。
すべての必要なモデルとエンドポイントを登録する(省略可能)
この例では、埋め込みモデル、テキスト生成モデル、および再ランキングモデルを同時に使用する必要があります。対応するモデルとエンドポイントが既に登録されていることを確認してください。詳細はステップ1を参照してください。
説明
前のステップで対応するモデルを既に登録済みの場合は、該当する登録手順をスキップし、次のステップに進んでください。
データの準備とベクトルの生成
CREATE TABLE knowledge_base ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), content TEXT, embedding TEXT ); INSERT INTO knowledge_base (title, content) VALUES ('OceanBase 简介', 'OceanBaseは強力なデータベースシステムで、ベクトル検索とAI関数をサポートしています。'), ('向量搜索', '向量搜索可用于语义搜索,找到相似的内容。'), ('AI 函数', 'AI函数可以在SQL中直接调用AI模型。'); UPDATE knowledge_base SET embedding = AI_EMBED("ob_embed", content);ベクトル検索と再ランキング
SET @query = "什么是向量搜索?"; SET @query_vector = AI_EMBED("ob_embed", @query); -- 文字列配列形式のドキュメントリストを直接作成 SET @candidate_docs = '["OceanBaseは強力なデータベースシステムで、ベクトル検索とAI関数をサポートしています。", "向量搜索可用于语义搜索,找到相似的内容。"]'; SELECT AI_RERANK("ob_rerank", @query, @candidate_docs) AS ranked_results;実行結果は次のとおりです。
indexはドキュメントのインデックス、relevance_scoreは類似度スコアです:+-------------------------------------------------------------------------------------------------------------+ | ranked_results | +-------------------------------------------------------------------------------------------------------------+ | [{"index": 1, "relevance_score": 0.9904329776763916}, {"index": 0, "relevance_score": 0.16993996500968933}] | +-------------------------------------------------------------------------------------------------------------+ 1 row in set答えの生成
最初のステップでの質問検索と2番目のステップでの再ランキング結果に基づいて、答えを生成します:
SELECT AI_COMPLETE("ob_complete", CONCAT('以下のドキュメント内容に基づき、ユーザーの質問に答えてください。ユーザーの質問:', @query, ' 関連ドキュメント:', CAST(JSON_EXTRACT(@candidate_docs, '$[1]') AS CHAR), ' 上記のドキュメント内容に基づき、簡潔かつ正確にユーザーの質問に答えてください。')) AS answer;実行結果は次のとおりです:
+--------------------------------------------------------------------------------------------------------------------------------------------+ | answer | +--------------------------------------------------------------------------------------------------------------------------------------------+ | 提供されたドキュメント内容によると、ベクトル検索は、ベクトルデータを比較することで類似した内容を見つけるためのセマンティック検索技術です。 | +--------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in setこれら3つのステップにより、OceanBaseデータベース内で、ベクトル化、検索、再ランキング、答えの生成という完全なAIアプリケーションのプロセスを迅速に実行できます。
関連ドキュメント
- AIモデルの登録:モデルとエンドポイントを登録する完全なコマンド。
- AI関数の構文と例:各関数の構文、パラメータ表、その他の例を含むリファレンスドキュメント。
- AI関数サービス権限:権限の付与と回収。