3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DifyでOracle Autonomous Databaseを使ってみた

Posted at

Difyのv1.0.1でOracle Autonomous Database(ADB)がサポートされたので、使うために接続方法についてこちらの記事で記載したいと思います。

以前投稿した記事の続きで、OCI Compute上にデプロイしたDify環境との接続を目指します。

前提条件

  • OCIのアカウントを持っていること
  • VCN(仮想クラウドネットワーク)の作成が完了していること
  • OCI Computeの作成が完了していること

ADBの作成

下記を参考にADBを作成します。

注意点としては、データベース・バージョンを23aiにする必要があります。
それ以外はOCIチュートリアルの通りで概ね問題ないかと思います。

LEXERの作成

今回はOracle TEXTという全文検索の機能を使いたかったので、WORLD_LEXERという多言語対応されたものを使用しています。

ADBの詳細画面で、データベース・アクション→SQLをクリックするなどして、下記を実行します。

image.png

BEGIN
    CTX_DDL.CREATE_PREFERENCE('world_lexer','WORLD_LEXER');
END;
/

ウォレットのダウンロード

ADBの詳細画面で、データベース接続をクリックします。

データベース接続の画面で、ウォレットのダウンロードをクリックします。

image.png

次にウォレットのパスワードを作成し、ダウンロードをクリックします。

image.png

ダウンロード後に、接続文字列のTNS名(例:xxx_high)をコピーします。

image.png

Docker、docker-composeのインストール

下記を参考に実施してください。

Difyのインストール

バージョン1.1.0のDifyをクローンし、ディレクトリに移動します。
前述の通り、v1.0.1からOracle Autonomous Databaseがサポートされるようになっています。

git clone -b 1.1.0 https://github.com/langgenius/dify.git
cd dify/docker

環境設定ファイルを作成します。

cp .env.example .env

Oracle Autonomous Databaseをベクトルストアとして使用するには、環境設定ファイルを下記のように編集します。

vi.env
# Supported values are `weaviate`, `qdrant`, `milvus`, `myscale`, `relyt`, `pgvector`, `pgvecto-rs`, `chroma`, `opensearch`, `tidb_vector`, `oracle`, `tencent`, `elasticsearch`, `elasticsearch-ja`, `analyticdb`, `couchbase`, `vikingdb`, `oceanbase`.
VECTOR_STORE=oracle

・
・
・

# Oracle configuration, only available when VECTOR_STORE is `oracle`
ORACLE_USER=admin
ORACLE_PASSWORD=<ADMINユーザーのパスワード>
ORACLE_DSN=<接続文字列のTNS名>
ORACLE_CONFIG_DIR=/app/api/storage/wallet # 固定
ORACLE_WALLET_LOCATION=/app/api/storage/wallet # 固定
ORACLE_WALLET_PASSWORD=<ウォレットのパスワード>
ORACLE_IS_AUTONOMOUS=true

また、以前のバージョンから利用できるようになっていた、Oracle Database 23ai FreeのDockerコンテナが起動しないように、profilesの値をたとえばoracle-skipに変更します。

vi docker-compose.yaml
  # Oracle vector database
  oracle:
    image: container-registry.oracle.com/database/free:latest
    profiles:
      - oracle-skip
    restart: always
    volumes:
      - source: oradata
        type: volume
        target: /opt/oracle/oradata
      - ./startupscripts:/opt/oracle/scripts/startup
    environment:
      ORACLE_PWD: ${ORACLE_PWD:-Dify123456}
      ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8}

Dockerコンテナを起動します。

docker compose up -d

先ほどダウンロードしたADBのウォレットのzipファイルをscpツールやscpコマンドでインスタンスの/tmpへ転送します。

sudo apt install unzip -y

cd /tmp

unzip <ウォレットのzipファイル>.zip -d wallet

ウォレットをDifyのdocker-worker-1コンテナにコピーします。

docker cp wallet docker-worker-1:/app/api/storage/wallet

以上でDifyのインストールおよびADBとの接続設定が完了しました。

おまけ:RAGができていることを確認する

OraBoosterという架空のロケットエンジンの概要が記載されたrocket.txtをアップロードし、埋め込みモデルにOCIで提供されているcohere.embed-multilingual-v3.0を利用してナレッジを作成しました。

チャットボットに質問をすると、期待通りの回答が返ってくることが確認できました。

image.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?