Oracle recently announced the release of the Oracle Private AI Services Container, this allows you to securely generate vector embeddings outside the Oracle AI Database 26ai, offload the CPU and without any dependency upon the public cloud or the internet.
In this blog post I will share how to set-up the environment, check the health of the Oracle Private AI Services Container, list models, get model details and generate vector embeddings.
Linux Environment
The Private AI Service requires Oracle Linux 8, 9 or 10, OpenSSL and Podman 4.9.4+, I have also installed jq to help with the pretty formatting of JSON output.
$ cat /etc/oracle-release
Oracle Linux Server release 9.5
$ openssl version
OpenSSL 3.5.1 1 Jul 2025 (Library: OpenSSL 3.5.1 1 Jul 2025)
$ podman --version
podman version 5.2.2
$ jq --version
jq-1.6
Getting the Private AI Services Container
The Oracle Private AI Services Container is available from the Oracle Container Registry (OCR).
Note: Before you can download the container image you will need to visit the Oracle Container Registry and accept the licence agreement. You will also need to generate an authentication token, this will be your podman login password.
Set-up Environment
Copy and paste the below to perform the following:
- Set-up environmental variables
- Create required directories
- Pull container image
- Extract privateai-setup-25.1.3.0.0.zip from container
- Unzip setup
- Configre the Private AI Services Container for https
export AIHOME=/home/oracle/myPrivateAIexport SECRETS_DIR=${AIHOME}/aisecretsexport PRIVATEAI_DIR=${AIHOME}/privateaiexport INSTALL_SCRIPT_ZIP=/privateai/scripts/privateai-setup-25.1.3.0.0.zipmkdir -p ${AIHOME}mkdir -p ${SECRETS_DIR}mkdir -p ${PRIVATEAI_DIR}podman pull container-registry.oracle.com/database/private-ai:latestexport IMAGE_ID=`podman image ls --quiet private-ai`echo "PrivateAI Image ID is ${IMAGE_ID}"export CONTAINER_ID=`podman create ${IMAGE_ID}`echo "Container ID is ${CONTAINER_ID}"podman cp ${CONTAINER_ID}:${INSTALL_SCRIPT_ZIP} ${AIHOME}unzip privateai-setup-25.1.3.0.0.zip# OCR generated token stored in ${AIHOME}/token.txtcd ./setup./secretsSetup.sh -s ${SECRETS_DIR} --pass ${AIHOME}/token.txt./configSetup.sh -d ${PRIVATEAI_DIR} -s ${SECRETS_DIR}./containerSetup.sh -d ${PRIVATEAI_DIR}#setup TOKENexport TOKEN=`cat ${SECRETS_DIR}/api-key`echo "api-token: ${TOKEN}"
Now check for a running Private AI Services Container with podman ps
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a89dbf2860bd container-registry.oracle.com/database/private-ai:25.1.3.0.0 4 hours ago Up 4 hours 0.0.0.0:8443->8443/tcp privateai
OK now we have configure the Private AI Container, let’s give it a try.
Check Health
We can check the health of the Private AI Container Service using a simple REST call, for example with curl –i (–include HTTP response headers in the output):
curl -i --cacert ${SECRETS_DIR}/cert.pem \--header "Authorization: Bearer ${TOKEN}" \https://localhost:8443/health
Example output:
HTTP/1.1 200 OK
date: Wed, 6 May 2026 13:45:50 GMT
x-ratelimit-limit-requests: 60
x-ratelimit-remaining-requests: 59
x-ratelimit-reset-requests: 1
x-server-id: 563f8933-d064-4959-8288-efeee6c66051
content-length: 0
List Models
The Private AI Service container ships with six embedding models:
- all-mpnet-base-v2
- all-MiniLM-L12-v2
- multilingual-e5-base
- multilingual-e5-large
- clip-vit-base-patch32-txt
- clip-vit-base-patch32-img
You can also create and download additional embedding models if required.
We can confirm the models installed using a REST GET call, in the example below I am curl -s (–silent silent / quite mode) with jq to pretty print the JSON output.
curl -s --cacert ${SECRETS_DIR}/cert.pem \--header "Authorization: Bearer ${TOKEN}" \https://localhost:8443/v1/models | jq
Example output:
{
"data": [
{
"id": "clip-vit-base-patch32-img",
"modelDeployedTime": "2026-05-06T12:05:39.806662432Z",
"modelSize": "335.38M",
"modelCapabilities": [
"IMAGE_EMBEDDINGS"
]
},
{
"id": "clip-vit-base-patch32-txt",
"modelDeployedTime": "2026-05-06T12:05:39.8078612Z",
"modelSize": "243.57M",
"modelCapabilities": [
"TEXT_EMBEDDINGS"
]
},
{
"id": "multilingual-e5-large",
"modelDeployedTime": "2026-05-06T12:05:39.810064457Z",
"modelSize": "2.09G",
"modelCapabilities": [
"TEXT_EMBEDDINGS"
]
},
{
"id": "all-minilm-l12-v2",
"modelDeployedTime": "2026-05-06T12:05:39.803350098Z",
"modelSize": "127.13M",
"modelCapabilities": [
"TEXT_EMBEDDINGS"
]
},
{
"id": "multilingual-e5-base",
"modelDeployedTime": "2026-05-06T12:05:39.808975529Z",
"modelSize": "1.04G",
"modelCapabilities": [
"TEXT_EMBEDDINGS"
]
},
{
"id": "all-mpnet-base-v2",
"modelDeployedTime": "2026-05-06T12:05:39.805462375Z",
"modelSize": "415.82M",
"modelCapabilities": [
"TEXT_EMBEDDINGS"
]
}
]
}
Get Model Details
To obtain the details for a model use /v1/models/{id}.
{
"id": "all-minilm-l12-v2",
"modelDeployedTime": "2026-05-06T12:05:39.803350098Z",
"modelSize": "127.13M",
"modelCapabilities": [
"TEXT_EMBEDDINGS"
]
}
curl -s --cacert ${SECRETS_DIR}/cert.pem \ --header "Authorization: Bearer ${TOKEN}" \https://localhost:8443/v1/models/{all-minilm-l12-v2} | jq
Example output:
Generate Embedding
And finally we can create an embedding using a model, for example:
curl -s --cacert ${SECRETS_DIR}/cert.pem \--header "Content-Type: application/json" \--header "Authorization: Bearer ${TOKEN}" \-d '{"model": "all-minilm-l12-v2", "input": ["A lovestruck Romeo sang the streets a serenade","Laying everybody low with a love song that he made"]}' \https://localhost:8443/v1/embeddings | jq
Example output:
{
"data": [
{
"embedding": [
-0.04649245,
-0.062111516,
...
0.052571222,
-0.022263793
],
"index": 0
},
{
"embedding": [
-0.0030509094,
0.018205853,
...
-0.007482573,
0.015305017
],
"index": 1
}
],
"model": "ALL-MINILM-L12-V2"
}
Summary
In this blog post I have shared how to install and configure the Oracle Private AI Services Container, and then use REST calls to retrieve details, finishing with the generation of an embedding for some text data provided.

Leave a Reply