本記事では、OceanBaseのマルチモーダル融合技術を活用して、専用のOceanBase文化観光アシスタントを構築します。
概念の紹介
マルチモーダル統合:マルチモーダル統合は、OceanBaseの統合製品コンセプトの重要な方向性の一つです。本記事でのマルチモーダル統合は、主にマルチモーダルデータのハイブリッド検索技術を指します。OceanBaseはベクトルデータ、空間データ、ドキュメントデータ、スカラーデータなどのタイプの統合クエリをサポートし、ベクトルインデックス、空間インデックス、全文インデックスなど多様なインデックスのサポートに基づき、より高性能なハイブリッド検索機能を提供します。
LLM(Large Language Model):大規模言語モデル。大量のテキストデータを用いて訓練された深層学習モデルであり、自然言語テキストを生成したり、言語テキストの意味を理解したりすることができます。大規模言語モデルは、テキスト分類、Q&A、対話など、多様な自然言語タスクを処理でき、人工知能への重要なアプローチです。
前提条件
OceanBase V4.3.3以降のバージョンのクラスタをデプロイし、MySQLモードのテナントを作成していること。OceanBaseクラスタのデプロイに関する詳細情報については、デプロイの概要を参照してください。
作成したMySQLモードのテナントに挿入およびクエリの権限が付与されていること。権限設定の詳細については、直接権限付与を参照してください。
データベースを作成済みであること。データベースの作成に関する詳細情報については、データベースの作成を参照してください。
データベースでベクトル検索機能が有効になっていること。ベクトル検索機能の詳細については、SQLを使用した迅速なベクトル検索を参照してください。
obclient> ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;(推奨、必須ではない)Python 3.10以降のバージョンと対応するpipをインストールしてください。ご使用のマシンのPythonバージョンが低い場合は、Minicondaを使用して新しいPython 3.10以降の環境を作成できます。具体的な手順については、Minicondaインストールガイドを参照してください。
conda create -n obmms python=3.10 && conda activate obmmsPoetryをインストールしてください。参考コマンド:
python3 -m ensurepip python3 -m pip install poetry対応するPythonパッケージをインストールしてください。参考コマンド:
pip install python-dotenv tqdm streamlit pyobvector==0.2.16
ステップ1:LLM APIキーを取得する
注意
Alibaba Cloud Model Studioサービスの開始には、第三者プラットフォームへの移動と手続きが必要です。この操作は第三者プラットフォームの料金規則に従い、該当する費用が発生する場合があります。続行する前に、その公式ウェブサイトを訪問するか関連ドキュメントを確認し、料金体系を確認して同意してください。同意しない場合は、操作を続けないでください。
Alibaba Cloud Model Studioアカウントに登録し、モデルサービスを開始してAPIキーを取得します。
ステップ2:地理サービスAPIキーを取得する
注意
高徳地図の地理サービスを開始するには、第三者プラットフォームへの移動と手続きが必要です。この操作は第三者プラットフォームの料金規則に従い、該当する費用が発生する場合があります。続行する前に、その公式ウェブサイトを訪問するか関連ドキュメントを確認し、料金体系を確認して同意してください。同意しない場合は、操作を続けないでください。
高徳オープンプラットフォームに登録し、Basic LBSサービス APIキーを取得します。
ステップ3:公開データセットをダウンロードする
Kaggleの中国都市観光スポット詳細データセットのZIP圧縮ファイルをダウンロードします。
ステップ4:文化観光アシスタントを構築する
プロジェクトリポジトリのクローン
最新のプロジェクトリポジトリをクローンします。
git clone https://github.com/oceanbase-devhub/ob-multi-model-search-demo.git cd ob-multi-model-search-demoダウンロードした
archiveデータセットのZIPファイルをob-multi-model-search-demoプロジェクトフォルダに移動し、citydataに名前を変更して解凍します。# archive.zipファイルの実際の保存パスに変更してください mv ./archive.zip ./citydata.zip unzip ./citydata.zip
依存関係のインストール
プロジェクトのルートディレクトリで、以下のコマンドを実行して依存関係をインストールします。
poetry install
環境変数の設定
.env ファイルに環境変数を設定します:
vim .env
OB_ で始まる変数は、ご自身のデータベース接続情報に更新し、以下の変数を手動で追加する必要があります:DASHSCOPE_API_KEY をAlibaba Cloud Model Studioコンソールから取得したAPIキー値に更新し、AMAP_API_KEY を高徳地図APIサービスから取得したAPIキー値に更新して、ファイルを保存します。
# データベース接続文字列のホストアドレス
OB_URL="******"
OB_USER="******"
OB_DB_NAME="******"
# データベース接続文字列のパスワード
OB_PWD="******"
# データベース接続文字列のSSL CAファイルパス(オプション)。SSLリンク暗号化を使用しない場合は、このパラメータを削除する必要があります。
OB_DB_SSL_CA_PATH="******"
# LLM APIキーを手動で追加
DASHSCOPE_API_KEY="******"
# 高徳地図APIキーを手動で追加
AMAP_API_KEY="******"
データのインポート
このステップでは、ダウンロードしたデータセットのデータをOceanBaseにインポートします。
注意
初回構築時は、データセットの一部(例えば、最初の文字がAの観光スポットのみを選択してインポートすることをお勧めします。全量インポートは時間がかかります。
python ./obmms/data/attraction_data_preprocessor.py
以下の実行進捗が表示されれば、データが正常にインポートされています。
...
./citydata/常德.csv:
100%|███████████████████████████████████████████████████████████████████████████| 100/100 [00:04<00:00, 20.77it/s]
./citydata/渭南.csv:
100%|█████████████████████████████████████████████████████████████████████████████| 90/90 [00:13<00:00, 6.54it/s]
...
UIチャットインターフェースの起動
以下のコマンドを実行して、チャットインターフェースを起動します:
poetry run streamlit run ./ui.py
ウェブページが直接ポップアップ表示されない場合は、端末に表示されたURLにアクセスして、文化観光アシスタントアプリケーションの画面を開きます。
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://172.xxx.xxx.xxx:8501
アプリケーションの表示
オンラインデモ体験
ご自身で文化観光アシスタントを構築する以外に、文化観光アシスタントにアクセスしてオンラインデモアプリケーションを体験することもできます。デモの公式サイトからの入口はリソースとサービス-学習-オンライン体験-オンラインデモです。以下が画面表示です:
トラブルシューティング
依存パッケージのインストール問題
Poetryのインストール失敗
poetry install コマンドが失敗した場合、以下の手順を試すことができます:
Poetryを最新バージョンに更新します:
pip install --upgrade poetryPoetryキャッシュをクリアします:
poetry cache clear --all pypi依存関係を再インストールします:
poetry install --no-cache
環境設定問題
Python環境が有効化されていない
重要
依存関係のインストールを行う前に、正しいPython環境(例:obmms conda環境)が有効化されていることを確認してください。
正しいconda環境が有効化されていることを確認してください:
conda activate obmms
Pythonバージョンの互換性
Python 3.10以降のバージョンを使用していることを確認してください:
python --version
バージョンが低すぎる場合は、環境を再作成してください:
conda create -n obmms python=3.10
conda activate obmms
データベース接続問題
データベース接続に問題が発生した場合、以下を確認してください:
.envファイル内のデータベース接続情報が正しいかどうか- OceanBaseクラスタが正常に稼働しているかどうか
- ネットワーク接続が正常かどうか
- データベースユーザーの権限が十分かどうか
その他のよくある質問
ポートが占有されている
Streamlit起動時にポートが占有されているというメッセージが表示された場合、他のポートを指定できます:
poetry run streamlit run ./ui.py --server.port 8502
メモリ不足
データインポート中にメモリ不足の問題が発生した場合、以下の対処法があります:
- バッチインポートのデータ量を減らす
- システムメモリを増やす
- OceanBaseのメモリ設定を調整する
APIキーの問題
以下の設定が正しく行われていることを確認してください:
- 阿里云百炼APIキー(DASHSCOPE_API_KEY)
- 高德地图APIキー(AMAP_API_KEY)
APIキーは .env ファイルで設定できます。