概要
DB-GPTは、オープンソースのAIデータベースアシスタントであり、OceanBaseをベクトルデータベースとして利用したナレッジベースQ&Aをサポートします。 本記事では、DB-GPTがOceanBaseのベクトル検索機能を用いてドキュメントのベクトルを格納・検索し、通義千問などの大規模言語モデルと組み合わせることで、ユーザーに高精度なQ&Aサービスを提供する仕組みについて紹介します。
バージョン互換性
- OceanBaseデータベース:V4.3.3以降
- DB-GPT:v0.7.x以降のバージョン
前提条件
DB-GPTをOceanBaseと統合する前に、以下の点を確認してください:
- OceanBaseデータベースのデプロイが完了し、MySQLモードのユーザーテナントが作成されていること。テナント作成の詳細については、テナントの作成を参照してください。
- ベクトル検索機能を有効にするため、テナントでob_vector_memory_limit_percentage構成パラメータが設定されていることを確認してください。V4.3.5 BP3より前のバージョンでは値を30に設定することを推奨しますが、V4.3.5 BP3以降のバージョンではデフォルト値の0のままにしておくことを推奨します。この構成パラメータをより正確に設定する必要がある場合は、ob_vector_memory_limit_percentageを参照してこの値を計算してください。
- Dockerのデプロイが完了し、Dockerサービスが実行中であり、現在のユーザーがdockerコマンドを実行する権限を持っていること(docker infoで確認可能)。
- Qwen APIキーを取得済みであること(Alibaba Cloud Bailianプラットフォームから取得)。
- 使用しているOSに応じて、Gitをインストールしていること。
ステップ1:データベース接続文字列を取得する
以下のコマンドを使用して、独立したOceanBaseデータベースを迅速にデプロイしてテストできます:
docker run --name=ob433 -e MODE=slim -p 2881:2881 -e OB_TENANT_PASSWORD=****** -d quay.io/oceanbase/oceanbase-ce:latest
コンテナの初期化が完了するのを待ちます(約2〜3分)。以下のコマンドで状態を確認できます。boot success!と返された場合は起動に成功しています。
docker logs ob433 | tail -1
データベース接続文字列は以下のとおりです:
mysql -h 127.0.0.1 -uroot@test -P2881 -p********* -Dtest
ステップ3:DB-GPTをインストールする
本記事では、ソースコードからDB-GPTをデプロイする例を紹介します。その他のデプロイ方法については、DB-GPT公式サイトを参照してください。
- ソースコードをダウンロードする
git clone https://github.com/eosphoros-ai/DB-GPT.git
cd DB-GPT
- uvパッケージマネージャーをインストールする
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
# インストールを確認するには、以下のコマンドを実行します。出力は次のようになります:uv 0.10.2
uv --version
- 基本依存関係をインストールする
通義千問を例にすると、操作は以下のとおりです:
uv sync --all-packages \
--extra "base" \
--extra "proxy_tongyi" \
--extra "rag" \
--extra "storage_chromadb" \
--extra "dbgpts"
- OceanBaseパートナーソフトウェアパッケージをインストールする
uv pip install pyobvector
- OceanBaseに接続し、ベクトルデータのメモリ使用比率パラメータを設定する(オプション)
source .venv/bin/activate
python3
from pyobvector import ObVecClient
client = ObVecClient(uri="127.0.0.1:2881", user="root@test",password="",db_name="test")
client.perform_raw_text_sql(
"ALTER SYSTEM ob_vector_memory_limit_percentage = 30"
)
ステップ4:DB-GPTでOceanBaseデータベースを使用するための設定
基本依存関係のダウンロードが完了したら、TOML設定を変更してOceanBaseに切り替えます。
TOMLファイルの設定
DB-GPT v0.7.x以降では、TOML設定ファイルの使用を推奨します。configs/dbgpt-proxy-tongyi.tomlを編集します。操作は以下のとおりです:
[system]
# Load language from environment variable(It is set by the hook)
language = "${env:DBGPT_LANG:-en}"
api_keys = []
encrypt_key = "your_secret_key"
# Server Configurations
[service.web]
host = "0.0.0.0"
port = 5670
[service.web.database]
type = "sqlite"
path = "pilot/meta_data/dbgpt.db"
# Vector Store Configuration - OceanBaseの使用
[rag.storage]
[rag.storage.vector]
type = "OceanBase"
ob_host = "127.0.0.1"
ob_port = 2881
ob_user = "root@test"
ob_database = "test"
ob_password = ""
# ob_enable_normalize_vector = true
# Model Configurations
[models]
# Qwen LLMモデル
[[models.llms]]
name = "qwen-plus"
provider = "${env:LLM_MODEL_PROVIDER:-proxy/tongyi}"
api_base = "https://dashscope.aliyuncs.com/compatible-mode/v1"
api_key = "${env:DASHSCOPE_API_KEY}"
# Qwen Embeddingモデル
[[models.embeddings]]
name = "text-embedding-v3"
provider = "${env:EMBEDDING_MODEL_PROVIDER:-proxy/tongyi}"
api_url = "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings"
api_key = "${env:DASHSCOPE_API_KEY}"
パラメータ説明:
$ob_host:OceanBaseデータベースの接続IPアドレス。$ob_port:OceanBaseデータベースの接続ポート。$ob_user:OceanBaseデータベースのユーザー名。$ob_password:OceanBaseデータベースのユーザーパスワード。$ob_database:OceanBaseのデータベース名。
ステップ5:DB-GPTの起動
まずDashScope API Key環境変数を設定し、次に起動します:
# Qwen API Keyの設定
export DASHSCOPE_API_KEY="your-dashscope-api-key"
# DB-GPTの起動
uv run dbgpt start webserver --config configs/dbgpt-proxy-tongyi.toml
起動に成功したら、http://localhost:5670](http://localhost:5670にアクセスして、DB-GPTのWebインターフェースに入ります。
ステップ6:ナレッジベースQ&Aの使用
- ブラウザを開き、http://localhost:5670にアクセスします。
- Knowledgeページに移動し、Create Knowledgeをクリックしてナレッジベースの作成に進みます。
- Space Configに入力し、Nextをクリックします。
- Datasource typeを選択し、Nextをクリックします。
- Uploadに移動し、ファイルをアップロードします。Nextをクリックします。
- Segmentationに移動し、ドキュメントのスライシング方法を選択します。
- ドキュメントの分割が完了し、OceanBaseベクトルデータベースに格納されます。
- Exploreで該当するナレッジスペースを選択し、Q&Aを実行します。