brew install podman podman-compose docker-compose
% brew install podman podman-compose docker-compose
==> Downloading https://formulae.brew.sh/api/formula.jws.json
==> Downloading https://formulae.brew.sh/api/cask.jws.json
Warning: podman 5.5.2 is already installed and up-to-date.
To reinstall 5.5.2, run:
brew reinstall podman
Warning: podman-compose 1.5.0 is already installed and up-to-date.
To reinstall 1.5.0, run:
brew reinstall podman-compose
Warning: docker-compose 2.38.2 is already installed and up-to-date.
To reinstall 2.38.2, run:
brew reinstall docker-compose
%
podman machine set --cpus 8 --memory 16384
podman machine ls
podman machine start
% git clone https://github.com/langgenius/dify.git
Cloning into 'dify'...
remote: Enumerating objects: 184984, done.
remote: Counting objects: 100% (1208/1208), done.
remote: Compressing objects: 100% (539/539), done.
remote: Total 184984 (delta 966), reused 683 (delta 669), pack-reused 183776 (from 4)
Receiving objects: 100% (184984/184984), 101.73 MiB | 7.09 MiB/s, done.
Resolving deltas: 100% (135319/135319), done.
%
% cd dify/docker
docker % ls
certbot elasticsearch ssrf_proxy
couchbase-server generate_docker_compose startupscripts
docker-compose-template.yaml middleware.env.example tidb
docker-compose.middleware.yaml nginx volumes
docker-compose.png pgvector
docker-compose.yaml README.md
docker %
docker % cp .env.example .env
docker %
# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
EXPOSE_NGINX_PORT=8084
EXPOSE_NGINX_SSL_PORT=8484
# ------------------------------
# Vector Database Configuration
# ------------------------------
# The type of vector store to use.
# Supported values are `weaviate`, `qdrant`, `milvus`, `myscale`, `relyt`, `pgvector`, `pgvecto-rs`, `chroma`, `opensearch`, `oracle`, `tencent`, `elasticsearch`, `elasticsearch-ja`, `analyticdb`, `couchbase`, `vikingdb`, `oceanbase`, `opengauss`, `tablestore`,`vastbase`,`tidb`,`tidb_on_qdrant`,`baidu`,`lindorm`,`huawei_cloud`,`upstash`, `matrixone`.
VECTOR_STORE=oracle
# Oracle configuration, only available when VECTOR_STORE is `oracle`
ORACLE_USER=<接続するデータベース・ユーザー>
ORACLE_PASSWORD=<ORACLE_USERのパスワード>
ORACLE_DSN=host.containers.internal:1521/FREEPDB1
ORACLE_CONFIG_DIR=/app/api/storage/wallet
ORACLE_WALLET_LOCATION=/app/api/storage/wallet
ORACLE_WALLET_PASSWORD=dify
ORACLE_IS_AUTONOMOUS=false
# 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}
grant db_developer_role to <接続先データベース・ユーザー>;
grant execute on ctx_ddl to <接続先データベース・ユーザー>;
以下の例では、接続先データベース・ユーザーはWKSP_APEXDEVになっています。
docker % sql sys/*********@localhost/freepdb1 as sysdba
SQLcl: 月 7月 14 12:36:11 2025のリリース25.2 Production
Copyright (c) 1982, 2025, Oracle. All rights reserved.
接続先:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04
SQL> grant db_developer_role to wksp_apexdev;
Grantが正常に実行されました。
SQL> grant execute on ctx_ddl to wksp_apexdev;
Grantが正常に実行されました。
SQL> exit
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04から切断されました
docker %
begin
ctx_ddl.create_preference(
preference_name => 'world_lexer',
object_name => 'JAPANESE_LEXER'
);
end;
/
docker % sql wksp_apexdev/********@localhost/freepdb1
SQLcl: 月 7月 14 12:46:02 2025のリリース25.2 Production
Copyright (c) 1982, 2025, Oracle. All rights reserved.
接続先:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04
SQL> begin
2 ctx_ddl.create_preference(
3 preference_name => 'world_lexer',
4 object_name => 'JAPANESE_LEXER'
5 );
6 end;
7* /
PL/SQLプロシージャが正常に完了しました。
SQL> exit
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04から切断されました
docker %
docker % podman compose up -d
>>>> Executing external compose provider "/opt/homebrew/bin/docker-compose". Please see podman-compose(1) for how to disable this message. <<<<
[+] Running 11/11
✔ Network docker_default Created 0.0s
✔ Network docker_ssrf_proxy_network Created 0.0s
✔ Container docker-web-1 Started 0.2s
✔ Container docker-redis-1 Started 0.2s
✔ Container docker-sandbox-1 Started 0.2s
✔ Container docker-db-1 Healthy 4.7s
✔ Container docker-ssrf_proxy-1 Started 0.1s
✔ Container docker-api-1 Started 4.7s
✔ Container docker-plugin_daemon-1 Started 4.7s
✔ Container docker-worker-1 Started 4.8s
✔ Container docker-nginx-1 Started 4.8s
docker %
ollama pull bge-m3:latest
ollama pull qwen3:8b
% ollama pull bge-m3:latest
pulling manifest
pulling daec91ffb5dd: 100% ▕██████████████████▏ 1.2 GB
pulling a406579cd136: 100% ▕██████████████████▏ 1.1 KB
pulling 0c4c9c2a325f: 100% ▕██████████████████▏ 337 B
verifying sha256 digest
writing manifest
success
% ollama pull qwen3:8b
pulling manifest
pulling a3de86cd1c13: 100% ▕██████████████████▏ 5.2 GB
pulling ae370d884f10: 100% ▕██████████████████▏ 1.7 KB
pulling d18a5cc71b84: 100% ▕██████████████████▏ 11 KB
pulling cff3f395ef37: 100% ▕██████████████████▏ 120 B
pulling 05a61d37b084: 100% ▕██████████████████▏ 487 B
verifying sha256 digest
writing manifest
success
%
docker % sql wksp_apexdev/*******@localhost/freepdb1
SQLcl: 月 7月 14 13:33:03 2025のリリース25.2 Production
Copyright (c) 1982, 2025, Oracle. All rights reserved.
接続先:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04
SQL>
select table_name from user_tables where table_name like '%EMBEDDING_VECTOR_INDEX%';
SQL> select table_name from user_tables where table_name like '%EMBEDDING_VECTOR_INDEX%';
TABLE_NAME
_________________________________________________________________________________
DR$IDX_DOCS_EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE$I
DR$IDX_DOCS_EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE$K
DR$IDX_DOCS_EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE$U
DR$IDX_DOCS_EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE$Q
DR$IDX_DOCS_EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE$C
DR$IDX_DOCS_EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE$B
EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE
DR$IDX_DOCS_EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE$N
8行が選択されました。
SQL>
select index_name, parameters from user_indexes where index_type = 'DOMAIN';
Oracle Text索引のレクサーとしてworld lexerが使用されていることが確認できます。
SQL> select index_name, parameters from user_indexes where index_type = 'DOMAIN';
INDEX_NAME PARAMETERS
____________________________________________________________________________ ______________________________________________________________________________________
IDX_DOCS_EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE FILTER CTXSYS.NULL_FILTER SECTION GROUP CTXSYS.HTML_SECTION_GROUP LEXER world_lexer
SQL>
SQL> desc EMBEDDING_VECTOR_INDEX_95FE2D6B_BFCB_460F_8269_41FD2588CBA3_NODE
名前 Nullかどうか タイプ
____________ ___________ ____________________
ID VARCHAR2(100)
TEXT NOT NULL CLOB
META JSON
EMBEDDING NOT NULL VECTOR(*,*,DENSE)
SQL>