本記事では、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をインストールしてください。Minicondaを使用して、低いPythonバージョンのマシン上にPython 3.10以降の新しい環境を作成することもできます。
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 Bailian大規模言語モデルサービスを開始するには、第三者プラットフォームに移動して完了する必要があります。この操作は第三者プラットフォームの料金規則に従い、該当する料金が発生する場合があります。続行する前に、その公式ウェブサイトにアクセスするか関連ドキュメントを確認し、料金体系を確認して同意してください。同意しない場合は、操作を続けないでください。
Alibaba Cloud Bailianアカウントに登録し、モデルサービスを開始してAPIキーを取得します。
ステップ2:地理サービスAPIキーを取得する
注意
高徳地図の地理サービスを有効にするには、第三者プラットフォームに移動して手続きを完了する必要があります。この操作は第三者プラットフォームの料金規則に従い、それに伴う費用が発生する場合があります。続行する前に、その公式ウェブサイトを訪問するか関連ドキュメントを参照し、料金体系を確認して同意してください。同意しない場合は、操作を続けないでください。
高徳オープンプラットフォームに登録し、基礎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 Bailianコンソールから取得した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
アプリケーションの表示
オンラインDemo体験
文化観光アシスタントをご自身で構築する以外にも、文化観光アシスタントにアクセスしてログインし、オンラインDemoアプリケーションを体験することもできます。Demo画面への公式サイトからの入口はリソースとサービス-学習-オンライン体験-オンラインDemoです。以下が画面の表示です:
トラブルシューティング
依存パッケージのインストール問題
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ファイルで設定できます。