はじめに
今回は2024年5月に利用可能となった23ai Free版を使ってAI Vector Searchを試すうえで、DBのインストールが必要なので必要操作をまとめています。
Oracle DBのインストールやベクトル検索をやったことがない方でもご安心ください!
PythonやLangChainなどは使用していないので、私のような新人SEでも試すことができました涙
本記事では以下について触れています。
- Oracle Database 23ai Free版インストール手順
Oracle Database 23ai Free版の概要については以下をご覧ください。
https://www.oracle.com/jp/database/free/
Oracle Database 23ai - AI Vector Searchの特徴は以下の通りです。
- 生成AIで必要となる、ベクトル検索に対応
- ユーザーの問い合わせ文や、画像、音声などを「意味」や「特徴」で検索
- 1つのデータベースにベクトルデータとビジネスデータを格納
- データベース内でテキスト抽出、ベクトル化。テキスト分割が可能
- クラウドとオンプレミスで提供予定
https://blogs.oracle.com/oracle4engineer/post/ja-general-availability-of-ai-vector-search-in-23ai
前提条件
Oracle Database 23ai Freeをインストールする仮想マシンインスタンスにSSH接続できること
※本検証ではOracle Linux 8を使用しています。
Oracle DB 23ai Free版インストール
まずはrootユーザーでログイン
sudo -s
RPM(Oracle Linux版)ベースでインストールしていきます。
dnf -y install oracle-database-preinstall-23ai
wget https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23ai-1.0-1.el8.x86_64.rpm
RPMベースでインストールするメリット:Oracleデータベースをインストールする前の作業を自動化するRPMパッケージです。事前作業の多くを自動化できるので、より簡単・確実にインストールできるようになります。
具体的には以下の作業↓
- インストール前のチェック
- DBソフトウェアの抽出
- Oracle Databaseソフトウェアの構成に必要なすべてのroot操作の実行
- シングルインスタンスのOracle Databaseの作成および構成
などを自動化してくれます!マジ助かる!
それではOracle DBソフトウェアをダウンロードしていきましょう!
dnf -y install oracle-database-free-23ai-1.0-1.el8.x86_64.rpm
なんと数行でOracle Databaseのインストールが完了しました!
Oracle Databaseの作成と構成
続いて、構成スクリプトを実行してデータベースを構築していきましょう。
こちらの構成スクリプトを実行すると
- プラガブル・データベース(FREEPDB1)を1つ持つコンテナ・データベース(FREE)を作成
- デフォルトのポート(1521)でリスナーを構成
がされます。
/etc/init.d/oracle-free-23ai configure
この後にSYS、SYSTEM、PDBADMIN管理ユーザーのパスワードの設定を求められます。
- Oracleではパスワードは少なくとも8文字以上で、少なくとも1つの大文字、1つの小文字、1桁の数字[0-9]を含むことを推奨している、らしい。
- 例)Welcome123#
余談)ちなみに私は設定したパスワードを見事失念してこのあとのログインができなくなりました。
/etc/init.d/oracle-free-23ai delete
から構成ファイルを削除してもう一度上記のconfigureコマンドで作り直しております涙
ご参考までに・・・
さすがに環境変数は自動で設定されないので、Oracleユーザーに切り替え設定していきます。
sudo su - oracle
環境変数の設定
export ORACLE_SID=FREE
export ORAENV_ASK=NO
(↑Free版はこうらしい)
. /opt/oracle/product/23ai/dbhomeFree/bin/oraenv
Oracle Database 23ai Freeに接続
sqlplus sys@localhost:1521/freepdb1 as sysdba
先ほど設定したパスワードを入力(画面には表示されません)
SQLPlusに接続出来たら、下記は特に何も考えず作成していきます。
表領域の作成
Create bigfile tablespace tbs2 Datafile 'bigtbs_f2.dbf' SIZE 1G AUTOEXTEND ON next 32m maxsize unlimited extent management local segment space management auto;
UNDO表領域の作成
CREATE UNDO TABLESPACE undots2 DATAFILE 'undotbs_2a.dbf' SIZE 1G AUTOEXTEND ON RETENTION GUARANTEE;
一時表領域の作成
CREATE UNDO TABLESPACE undots2 DATAFILE 'undotbs_2a.dbf' SIZE 1G AUTOEXTEND ON RETENTION GUARANTEE;
Vector Search用のユーザーである、Vectorさんを作成します。
create user vector identified by vector default tablespace tbs2 quota unlimited on tbs2;
Vectorさんに開発者用のロールも付与してあげます。
grant DB_DEVELOPER_ROLE to vector;
諸々の設定が終了したので、exitでOSに戻ります。
freepdb1という名前で接続できるよう、tnsnames.oraファイルにサービス名を追加します。
vi $ORACLE_HOME/network/admin/tnsnames.ora
Vim基本コマンド
- i:文字を挿入
- qa!で保存して終了
サービスFREEのエントリをコピーして、赤枠のSERVICE_NAMEをfreepdb1に修正します。
すると、作成したVectorユーザーでfreepdb1に接続できるようになりました!
sqlplus vector/vector@freepdb1
イメージとしてはこんな感じです。
次回はいよいよVMにPDFファイルをインポートしてチャンク分割、ベクトル化してみます!
おたのしみに!