---
title: RheoData Blog | 23.4
description: 23.4 | RheoData Blog Posts
---

[![RheoData - Logo - transparent-1](https://rheodata.com/hs-fs/hubfs/RheoData%20-%20Logo%20-%20transparent-1.png?width=250&height=50&name=RheoData%20-%20Logo%20-%20transparent-1.png "RheoData - Logo - transparent-1")](https://rheodata.com/)

- Who We Are 
    - [About Us](https://rheodata.com/who-we-are)
- Services 
    - Consulting 
          - [The Studio](https://rheodata.com/the-studio)
    - Accelerators 
          - [FrostCore](https://rheodata.com/frostcore)
          - [FrostAI](https://rheodata.com/frostai)
          - [RedCore](https://rheodata.com/redcore)
          - [RedAI](https://rheodata.com/redai)
          - [RedGuard](https://rheodata.com/redguard)
          - [BlueCore](https://rheodata.com/bluecore)
          - [Calypso](https://rheodata.com/calypso)
    - Services 
          - [Data Integration](https://rheodata.com/data-integration)
          - [Analytics](https://rheodata.com/data-analytics)
          - [Multi-Cloud](https://rheodata.com/multi-cloud)
          - [Oracle@Google Cloud](https://rheodata.com/oracle-google-cloud)
          - [Exadata & Oracle Database](https://rheodata.com/exadata-and-oracle-database-26ai)
- Verticals 
    - [Manufacturing](https://rheodata.com/manufacturing)
    - [Retail](https://rheodata.com/retail)
    - [State & Local](https://rheodata.com/sled)
- [Customer Stories](https://rheodata.com/customer-stories) 
    - [Altec](https://rheodata.com/customer-stories/altec-oci-goldengate-data-migration)
    - [Shoe Carnival](https://rheodata.com/customer-stories/shoe-carnival-goldengate-microservices-migration)
    - [Icon](https://rheodata.com/customer-stories/icon-transatlantic-replication)
    - [Inovalon](https://rheodata.com/customer-stories/inovalon-data-pipeline-automation)
- Resources 
    - [Blog](https://rheodata.com/en-us/blog)
    - Books 
          - [Pro Oracle GoldenGate 23ai](https://rheodata.com/pro-oracle-goldengate-23ai-for-the-dba-pdf-landing-page)
- [Contact](https://rheodata.com/contact)

[![](https://rheodata.com/hs-fs/hubfs/Imported_Blog_Media/blog-feature-Logo-Nov-26-2025-07-14-39-7226-PM.png?width=100&height=100&name=blog-feature-Logo-Nov-26-2025-07-14-39-7226-PM.png)](https://rheodata.com/)

<https://rheodata.com/en-us/blog/tag/23-4#minimal-header__mobile-nav__mmenu>

[![RheoData - Logo - transparent-1](https://rheodata.com/hs-fs/hubfs/RheoData%20-%20Logo%20-%20transparent-1.png?width=250&height=50&name=RheoData%20-%20Logo%20-%20transparent-1.png "RheoData - Logo - transparent-1")](https://rheodata.com/)

- Who We Are 
    - [About Us](https://rheodata.com/who-we-are)
- Services 
    - Consulting 
          - [The Studio](https://rheodata.com/the-studio)
    - Accelerators 
          - [FrostCore](https://rheodata.com/frostcore)
          - [FrostAI](https://rheodata.com/frostai)
          - [RedCore](https://rheodata.com/redcore)
          - [RedAI](https://rheodata.com/redai)
          - [RedGuard](https://rheodata.com/redguard)
          - [BlueCore](https://rheodata.com/bluecore)
          - [Calypso](https://rheodata.com/calypso)
    - Services 
          - [Data Integration](https://rheodata.com/data-integration)
          - [Analytics](https://rheodata.com/data-analytics)
          - [Multi-Cloud](https://rheodata.com/multi-cloud)
          - [Oracle@Google Cloud](https://rheodata.com/oracle-google-cloud)
          - [Exadata & Oracle Database](https://rheodata.com/exadata-and-oracle-database-26ai)
- Verticals 
    - [Manufacturing](https://rheodata.com/manufacturing)
    - [Retail](https://rheodata.com/retail)
    - [State & Local](https://rheodata.com/sled)
- [Customer Stories](https://rheodata.com/customer-stories) 
    - [Altec](https://rheodata.com/customer-stories/altec-oci-goldengate-data-migration)
    - [Shoe Carnival](https://rheodata.com/customer-stories/shoe-carnival-goldengate-microservices-migration)
    - [Icon](https://rheodata.com/customer-stories/icon-transatlantic-replication)
    - [Inovalon](https://rheodata.com/customer-stories/inovalon-data-pipeline-automation)
- Resources 
    - [Blog](https://rheodata.com/en-us/blog)
    - Books 
          - [Pro Oracle GoldenGate 23ai](https://rheodata.com/pro-oracle-goldengate-23ai-for-the-dba-pdf-landing-page)
- [Contact](https://rheodata.com/contact)

[![](https://rheodata.com/hs-fs/hubfs/Imported_Blog_Media/blog-feature-Logo-Nov-26-2025-07-14-39-7226-PM.png?width=100&height=100&name=blog-feature-Logo-Nov-26-2025-07-14-39-7226-PM.png)](https://rheodata.com/)

<https://rheodata.com/en-us/blog/tag/23-4#minimal-header__mobile-nav__mmenu>

- Who We Are 
    - [About Us](https://rheodata.com/who-we-are)
- Services 
    - Consulting 
          - [The Studio](https://rheodata.com/the-studio)
    - Accelerators 
          - [FrostCore](https://rheodata.com/frostcore)
          - [FrostAI](https://rheodata.com/frostai)
          - [RedCore](https://rheodata.com/redcore)
          - [RedAI](https://rheodata.com/redai)
          - [RedGuard](https://rheodata.com/redguard)
          - [BlueCore](https://rheodata.com/bluecore)
          - [Calypso](https://rheodata.com/calypso)
    - Services 
          - [Data Integration](https://rheodata.com/data-integration)
          - [Analytics](https://rheodata.com/data-analytics)
          - [Multi-Cloud](https://rheodata.com/multi-cloud)
          - [Oracle@Google Cloud](https://rheodata.com/oracle-google-cloud)
          - [Exadata & Oracle Database](https://rheodata.com/exadata-and-oracle-database-26ai)
- Verticals 
    - [Manufacturing](https://rheodata.com/manufacturing)
    - [Retail](https://rheodata.com/retail)
    - [State & Local](https://rheodata.com/sled)
- [Customer Stories](https://rheodata.com/customer-stories) 
    - [Altec](https://rheodata.com/customer-stories/altec-oci-goldengate-data-migration)
    - [Shoe Carnival](https://rheodata.com/customer-stories/shoe-carnival-goldengate-microservices-migration)
    - [Icon](https://rheodata.com/customer-stories/icon-transatlantic-replication)
    - [Inovalon](https://rheodata.com/customer-stories/inovalon-data-pipeline-automation)
- Resources 
    - [Blog](https://rheodata.com/en-us/blog)
    - Books 
          - [Pro Oracle GoldenGate 23ai](https://rheodata.com/pro-oracle-goldengate-23ai-for-the-dba-pdf-landing-page)
- [Contact](https://rheodata.com/contact)

Posts about

# 23.4

<https://rheodata.com/en-us/blog/similarity-search-oracle-vector-datatype>

## [Similarity Search with Oracle’s Vector Datatype](https://rheodata.com/en-us/blog/similarity-search-oracle-vector-datatype)

Posted by [Bobby Curtis](https://rheodata.com/en-us/blog/author/bobby-curtis) | Nov 10, 2025 9:30:55 PM

In my last two posts I showed you what the Oracle Vector Datatype is and how to update existing...

[CONTINUE READING](https://rheodata.com/en-us/blog/similarity-search-oracle-vector-datatype)

<https://rheodata.com/en-us/blog/vector-datatype>

## [Oracle’s Vector Datatype](https://rheodata.com/en-us/blog/vector-datatype)

Posted by [Bobby Curtis](https://rheodata.com/en-us/blog/author/bobby-curtis) | Nov 10, 2025 9:30:03 PM

At Oracle Cloud World 2023, Oracle announced they were moving toward enabling Artificial...

[CONTINUE READING](https://rheodata.com/en-us/blog/vector-datatype)

<https://rheodata.com/en-us/blog/onnx-in-oracle-database>

## [Embedding Machine Learning Models in the Oracle Database: Create an ONNX model](https://rheodata.com/en-us/blog/onnx-in-oracle-database)

Posted by [Bobby Curtis](https://rheodata.com/en-us/blog/author/bobby-curtis) | Nov 10, 2025 9:29:19 PM

[CONTINUE READING](https://rheodata.com/en-us/blog/onnx-in-oracle-database)

<https://rheodata.com/en-us/blog/similarity-search-python-flask>

## [Similarity Search with Oracle’s Vector Datatype, Python, and Flask](https://rheodata.com/en-us/blog/similarity-search-python-flask)

Posted by [Bobby Curtis](https://rheodata.com/en-us/blog/author/bobby-curtis) | Nov 10, 2025 9:29:18 PM

[CONTINUE READING](https://rheodata.com/en-us/blog/similarity-search-python-flask)

<https://rheodata.com/en-us/blog/oracle-vector-datatype-updating-table-data>

## [Oracle Vector Datatype – Updating table data](https://rheodata.com/en-us/blog/oracle-vector-datatype-updating-table-data)

Posted by [Bobby Curtis](https://rheodata.com/en-us/blog/author/bobby-curtis) | Nov 10, 2025 9:29:15 PM

[CONTINUE READING](https://rheodata.com/en-us/blog/oracle-vector-datatype-updating-table-data)

### Recent Posts

#### [Coordinated Replicats: Faster, Lower-Risk GoldenGate Loads](https://rheodata.com/en-us/blog/coordinated-replicats-initial-load)

Posted at Jun 26, 2026 11:08:13 AM

![Post Featured Image](https://rheodata.com/hubfs/Gemini_Generated_Image_509fjc509fjc509f.png)

#### [Forward Deployed Engineering: The Operating Model the Agentic Era Demands](https://rheodata.com/en-us/blog/forward-deployed-engineering-agentic-era)

Posted at May 30, 2026 11:46:34 AM

![Post Featured Image](https://rheodata.com/hubfs/Gemini_Generated_Image_r8vpntr8vpntr8vp.png)

#### [The Bowl Is Broken: A CEO's Note on Mental Health Month and Tech Team Burnout](https://rheodata.com/en-us/blog/tech-team-burnout-mental-health-month-2026)

Posted at May 12, 2026 7:23:33 AM

![Post Featured Image](https://rheodata.com/hubfs/IMG_2142.jpg)

### Posts by Tag

- [Cloud (88)](https://rheodata.com/en-us/blog/tag/cloud)
- [GoldenGate (73)](https://rheodata.com/en-us/blog/tag/goldengate)
- [Business Insights (51)](https://rheodata.com/en-us/blog/tag/business-insights)
- [AI (36)](https://rheodata.com/en-us/blog/tag/ai)
- [19c (22)](https://rheodata.com/en-us/blog/tag/19c)
- [ai pipelines (17)](https://rheodata.com/en-us/blog/tag/ai-pipelines)
- [18c (15)](https://rheodata.com/en-us/blog/tag/18c)
- [21c (14)](https://rheodata.com/en-us/blog/tag/21c)
- [12c (11)](https://rheodata.com/en-us/blog/tag/12c)
- [machine learning (10)](https://rheodata.com/en-us/blog/tag/machine-learning)
- [23ai (9)](https://rheodata.com/en-us/blog/tag/23ai)
- [database (9)](https://rheodata.com/en-us/blog/tag/database)
- [goldengate 21c (9)](https://rheodata.com/en-us/blog/tag/goldengate-21c)
- [artificial intelligence (8)](https://rheodata.com/en-us/blog/tag/artificial-intelligence)
- [data analytics (8)](https://rheodata.com/en-us/blog/tag/data-analytics)
- [Google (7)](https://rheodata.com/en-us/blog/tag/google)
- [23ai AI vector search (6)](https://rheodata.com/en-us/blog/tag/23ai-ai-vector-search)
- [aws ec2 (6)](https://rheodata.com/en-us/blog/tag/aws-ec2)
- [aws ec2 compute (6)](https://rheodata.com/en-us/blog/tag/aws-ec2-compute)
- [ec2 (6)](https://rheodata.com/en-us/blog/tag/ec2)
- [ggs (6)](https://rheodata.com/en-us/blog/tag/ggs)
- [goldengate 19c (6)](https://rheodata.com/en-us/blog/tag/goldengate-19c)
- [install nginx (6)](https://rheodata.com/en-us/blog/tag/install-nginx)
- [23.4 (5)](https://rheodata.com/en-us/blog/tag/23-4)
- [AI Vector Search (5)](https://rheodata.com/en-us/blog/tag/ai-vector-search)
- [analytics (5)](https://rheodata.com/en-us/blog/tag/analytics)
- [classic to microservices (5)](https://rheodata.com/en-us/blog/tag/classic-to-microservices)
- [cloud-migration (5)](https://rheodata.com/en-us/blog/tag/cloud-migration)
- [data mesh (5)](https://rheodata.com/en-us/blog/tag/data-mesh)
- [database migration (5)](https://rheodata.com/en-us/blog/tag/database-migration)
- [goldengate microservices (5)](https://rheodata.com/en-us/blog/tag/goldengate-microservices)
- [11g (4)](https://rheodata.com/en-us/blog/tag/11g)
- [19c goldengate (4)](https://rheodata.com/en-us/blog/tag/19c-goldengate)
- [Azure (4)](https://rheodata.com/en-us/blog/tag/azure)
- [Database Modernization (4)](https://rheodata.com/en-us/blog/tag/database-modernization)
- [Google Cloud (4)](https://rheodata.com/en-us/blog/tag/google-cloud)
- [Oracle GoldenGate (4)](https://rheodata.com/en-us/blog/tag/oracle-goldengate)
- [autonomous database (4)](https://rheodata.com/en-us/blog/tag/autonomous-database)
- [cloud management (4)](https://rheodata.com/en-us/blog/tag/cloud-management)
- [cloud services (4)](https://rheodata.com/en-us/blog/tag/cloud-services)
- [data engineering (4)](https://rheodata.com/en-us/blog/tag/data-engineering)
- [data engineers (4)](https://rheodata.com/en-us/blog/tag/data-engineers)
- [data governance (4)](https://rheodata.com/en-us/blog/tag/data-governance)
- [heatwave (4)](https://rheodata.com/en-us/blog/tag/heatwave)
- [12.2.1.x (3)](https://rheodata.com/en-us/blog/tag/12-2-1-x)
- [12.3.x (3)](https://rheodata.com/en-us/blog/tag/12-3-x)
- [12c goldengate (3)](https://rheodata.com/en-us/blog/tag/12c-goldengate)
- [18c goldengate (3)](https://rheodata.com/en-us/blog/tag/18c-goldengate)
- [23c (3)](https://rheodata.com/en-us/blog/tag/23c)
- [AI Integration (3)](https://rheodata.com/en-us/blog/tag/ai-integration)
- [Database Administration (3)](https://rheodata.com/en-us/blog/tag/database-administration)
- [GoldenGate 23c (3)](https://rheodata.com/en-us/blog/tag/goldengate-23c)
- [MySQL (3)](https://rheodata.com/en-us/blog/tag/mysql)
- [Oracle Cloud Migration (3)](https://rheodata.com/en-us/blog/tag/oracle-cloud-migration)
- [Oracle Database 26ai (3)](https://rheodata.com/en-us/blog/tag/oracle-database-26ai)
- [adminclient (3)](https://rheodata.com/en-us/blog/tag/adminclient)
- [architecture of data pipelines (3)](https://rheodata.com/en-us/blog/tag/architecture-of-data-pipelines)
- [automation (3)](https://rheodata.com/en-us/blog/tag/automation)
- [batch processing (3)](https://rheodata.com/en-us/blog/tag/batch-processing)
- [big data (3)](https://rheodata.com/en-us/blog/tag/big-data)
- [data cleaning (3)](https://rheodata.com/en-us/blog/tag/data-cleaning)
- [data integration (3)](https://rheodata.com/en-us/blog/tag/data-integration)
- [data pipelines (3)](https://rheodata.com/en-us/blog/tag/data-pipelines)
- [data pipelines vs ETL pipelines (3)](https://rheodata.com/en-us/blog/tag/data-pipelines-vs-etl-pipelines)
- [data science (3)](https://rheodata.com/en-us/blog/tag/data-science)
- [data-replication (3)](https://rheodata.com/en-us/blog/tag/data-replication)
- [database-platforms (3)](https://rheodata.com/en-us/blog/tag/database-platforms)
- [enterprise data replication (3)](https://rheodata.com/en-us/blog/tag/enterprise-data-replication)
- [gcp (3)](https://rheodata.com/en-us/blog/tag/gcp)
- [hashicorp vault enterprise (3)](https://rheodata.com/en-us/blog/tag/hashicorp-vault-enterprise)
- [Agentic AI (2)](https://rheodata.com/en-us/blog/tag/agentic-ai)
- [Bring Your Own License (BYOL) Oracle (2)](https://rheodata.com/en-us/blog/tag/bring-your-own-license-byol-oracle)
- [Cloud Database (2)](https://rheodata.com/en-us/blog/tag/cloud-database)
- [Cloud modernization strategy (2)](https://rheodata.com/en-us/blog/tag/cloud-modernization-strategy)
- [Docker (2)](https://rheodata.com/en-us/blog/tag/docker)
- [EnterpriseDB (2)](https://rheodata.com/en-us/blog/tag/enterprisedb)
- [Flask (2)](https://rheodata.com/en-us/blog/tag/flask)
- [Google Cloud for Oracle workloads (2)](https://rheodata.com/en-us/blog/tag/google-cloud-for-oracle-workloads)
- [Legacy Oracle systems (2)](https://rheodata.com/en-us/blog/tag/legacy-oracle-systems)
- [Oracle AI Vector Search (2)](https://rheodata.com/en-us/blog/tag/oracle-ai-vector-search)
- [Oracle Cloud Infrastructure (2)](https://rheodata.com/en-us/blog/tag/oracle-cloud-infrastructure)
- [Oracle DBA skills in the cloud (2)](https://rheodata.com/en-us/blog/tag/oracle-dba-skills-in-the-cloud)
- [Oracle GoldenGate 23ai (2)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-23ai)
- [Oracle migration assessment (2)](https://rheodata.com/en-us/blog/tag/oracle-migration-assessment)
- [Oracle on GCP (2)](https://rheodata.com/en-us/blog/tag/oracle-on-gcp)
- [Snowflake (2)](https://rheodata.com/en-us/blog/tag/snowflake)
- [Snowflake cost optimization (2)](https://rheodata.com/en-us/blog/tag/snowflake-cost-optimization)
- [aws (2)](https://rheodata.com/en-us/blog/tag/aws)
- [azure ai studio (2)](https://rheodata.com/en-us/blog/tag/azure-ai-studio)
- [build mysql heatwave (2)](https://rheodata.com/en-us/blog/tag/build-mysql-heatwave)
- [cloud dba (2)](https://rheodata.com/en-us/blog/tag/cloud-dba)
- [cloud ready (2)](https://rheodata.com/en-us/blog/tag/cloud-ready)
- [cohere generate documentation (2)](https://rheodata.com/en-us/blog/tag/cohere-generate-documentation)
- [data-pipeline (2)](https://rheodata.com/en-us/blog/tag/data-pipeline)
- [database replication security (2)](https://rheodata.com/en-us/blog/tag/database-replication-security)
- [deployment (2)](https://rheodata.com/en-us/blog/tag/deployment)
- [docker adminclient (2)](https://rheodata.com/en-us/blog/tag/docker-adminclient)
- [golden gate (2)](https://rheodata.com/en-us/blog/tag/golden-gate)
- [goldengate cloud (2)](https://rheodata.com/en-us/blog/tag/goldengate-cloud)
- [goldengate migrations (2)](https://rheodata.com/en-us/blog/tag/goldengate-migrations)
- [goldengate parameter files (2)](https://rheodata.com/en-us/blog/tag/goldengate-parameter-files)
- [google postgresql migration (2)](https://rheodata.com/en-us/blog/tag/google-postgresql-migration)
- [ml (2)](https://rheodata.com/en-us/blog/tag/ml)
- [real-time data replication (2)](https://rheodata.com/en-us/blog/tag/real-time-data-replication)
- [0.12upgrade (1)](https://rheodata.com/en-us/blog/tag/0-12upgrade)
- [11.2.0.4 (1)](https://rheodata.com/en-us/blog/tag/11-2-0-4)
- [11g to 19c (1)](https://rheodata.com/en-us/blog/tag/11g-to-19c)
- [11g to 21c (1)](https://rheodata.com/en-us/blog/tag/11g-to-21c)
- [11g to 23c (1)](https://rheodata.com/en-us/blog/tag/11g-to-23c)
- [11g to OCI (1)](https://rheodata.com/en-us/blog/tag/11g-to-oci)
- [19.1.0.0.0 (1)](https://rheodata.com/en-us/blog/tag/19-1-0-0-0)
- [19.1.0.0.1 (1)](https://rheodata.com/en-us/blog/tag/19-1-0-0-1)
- [2024 (1)](https://rheodata.com/en-us/blog/tag/2024)
- [5.7 (1)](https://rheodata.com/en-us/blog/tag/5-7)
- [5.7 to 8.0 (1)](https://rheodata.com/en-us/blog/tag/5-7-to-8-0)
- [8.0 (1)](https://rheodata.com/en-us/blog/tag/8-0)
- [AI Agents (1)](https://rheodata.com/en-us/blog/tag/ai-agents)
- [AI Data Platform (1)](https://rheodata.com/en-us/blog/tag/ai-data-platform)
- [AI Infrastructure Management (1)](https://rheodata.com/en-us/blog/tag/ai-infrastructure-management)
- [AI Machine Learning (1)](https://rheodata.com/en-us/blog/tag/ai-machine-learning)
- [AI blog writing (1)](https://rheodata.com/en-us/blog/tag/ai-blog-writing)
- [AI business productivity (1)](https://rheodata.com/en-us/blog/tag/ai-business-productivity)
- [AI content creation (1)](https://rheodata.com/en-us/blog/tag/ai-content-creation)
- [AI data infrastructure (1)](https://rheodata.com/en-us/blog/tag/ai-data-infrastructure)
- [AI data management (1)](https://rheodata.com/en-us/blog/tag/ai-data-management)
- [AI data platform optimization (1)](https://rheodata.com/en-us/blog/tag/ai-data-platform-optimization)
- [AI database administration (1)](https://rheodata.com/en-us/blog/tag/ai-database-administration)
- [AI database management tools (1)](https://rheodata.com/en-us/blog/tag/ai-database-management-tools)
- [AI ethics content (1)](https://rheodata.com/en-us/blog/tag/ai-ethics-content)
- [AI governance (1)](https://rheodata.com/en-us/blog/tag/ai-governance)
- [AI inference bottlenecks (1)](https://rheodata.com/en-us/blog/tag/ai-inference-bottlenecks)
- [AI model deployment strategies (1)](https://rheodata.com/en-us/blog/tag/ai-model-deployment-strategies)
- [AI security (1)](https://rheodata.com/en-us/blog/tag/ai-security)
- [AI writing tools (1)](https://rheodata.com/en-us/blog/tag/ai-writing-tools)
- [AI-Driven-Revenue-Growth (1)](https://rheodata.com/en-us/blog/tag/ai-driven-revenue-growth)
- [AI-Native Applications (1)](https://rheodata.com/en-us/blog/tag/ai-native-applications)
- [AI-ROI (1)](https://rheodata.com/en-us/blog/tag/ai-roi)
- [AI-Ready Data (1)](https://rheodata.com/en-us/blog/tag/ai-ready-data)
- [AI-accuracy (1)](https://rheodata.com/en-us/blog/tag/ai-accuracy)
- [AI-compliance (1)](https://rheodata.com/en-us/blog/tag/ai-compliance)
- [AI-hallucination-prevention (1)](https://rheodata.com/en-us/blog/tag/ai-hallucination-prevention)
- [AI-powered database replication management (1)](https://rheodata.com/en-us/blog/tag/ai-powered-database-replication-management)
- [API authentication (1)](https://rheodata.com/en-us/blog/tag/api-authentication)
- [AWS S3 (1)](https://rheodata.com/en-us/blog/tag/aws-s3)
- [Apache Iceberg (1)](https://rheodata.com/en-us/blog/tag/apache-iceberg)
- [Apache Spark data platform (1)](https://rheodata.com/en-us/blog/tag/apache-spark-data-platform)
- [Atlanta database consultants (1)](https://rheodata.com/en-us/blog/tag/atlanta-database-consultants)
- [Azure Data Lake (1)](https://rheodata.com/en-us/blog/tag/azure-data-lake)
- [Big Query (1)](https://rheodata.com/en-us/blog/tag/big-query)
- [BigQuery Integration (1)](https://rheodata.com/en-us/blog/tag/bigquery-integration)
- [Business-Intelligence-Modernization (1)](https://rheodata.com/en-us/blog/tag/business-intelligence-modernization)
- [CLOB to VARCHAR (1)](https://rheodata.com/en-us/blog/tag/clob-to-varchar)
- [Change Data Capture GoldenGate Extract (1)](https://rheodata.com/en-us/blog/tag/change-data-capture-goldengate-extract)
- [Cloud Data Platform (1)](https://rheodata.com/en-us/blog/tag/cloud-data-platform)
- [Cloud database migration (1)](https://rheodata.com/en-us/blog/tag/cloud-database-migration)
- [Coordinated Replicat (1)](https://rheodata.com/en-us/blog/tag/coordinated-replicat)
- [Cortex Agents (1)](https://rheodata.com/en-us/blog/tag/cortex-agents)
- [Cosine distance Oracle (1)](https://rheodata.com/en-us/blog/tag/cosine-distance-oracle)
- [Cross-platform data monitoring (1)](https://rheodata.com/en-us/blog/tag/cross-platform-data-monitoring)
- [Customer-Experience-Optimization (1)](https://rheodata.com/en-us/blog/tag/customer-experience-optimization)
- [DBA burnout prevention (1)](https://rheodata.com/en-us/blog/tag/dba-burnout-prevention)
- [DBA productivity (1)](https://rheodata.com/en-us/blog/tag/dba-productivity)
- [DBA skills AI (1)](https://rheodata.com/en-us/blog/tag/dba-skills-ai)
- [Data Modernization (1)](https://rheodata.com/en-us/blog/tag/data-modernization)
- [Data Pipeline Architecture (1)](https://rheodata.com/en-us/blog/tag/data-pipeline-architecture)
- [Data Pipeline Management (1)](https://rheodata.com/en-us/blog/tag/data-pipeline-management)
- [Data Streaming (1)](https://rheodata.com/en-us/blog/tag/data-streaming)
- [Data Transformation (1)](https://rheodata.com/en-us/blog/tag/data-transformation)
- [Data pipeline troubleshooting (1)](https://rheodata.com/en-us/blog/tag/data-pipeline-troubleshooting)
- [Database Security (1)](https://rheodata.com/en-us/blog/tag/database-security)
- [Database lag monitoring (1)](https://rheodata.com/en-us/blog/tag/database-lag-monitoring)
- [Database migration strategy (1)](https://rheodata.com/en-us/blog/tag/database-migration-strategy)
- [Database migration vs. replication (1)](https://rheodata.com/en-us/blog/tag/database-migration-vs-replication)
- [Database replication blind spots (1)](https://rheodata.com/en-us/blog/tag/database-replication-blind-spots)
- [Database replication monitoring (1)](https://rheodata.com/en-us/blog/tag/database-replication-monitoring)
- [Database replication performance monitoring (1)](https://rheodata.com/en-us/blog/tag/database-replication-performance-monitoring)
- [Databricks comparison (1)](https://rheodata.com/en-us/blog/tag/databricks-comparison)
- [Delta Lake integration (1)](https://rheodata.com/en-us/blog/tag/delta-lake-integration)
- [Digital-Transformation-ROI (1)](https://rheodata.com/en-us/blog/tag/digital-transformation-roi)
- [EXTFILE (1)](https://rheodata.com/en-us/blog/tag/extfile)
- [EXTRAIL (1)](https://rheodata.com/en-us/blog/tag/extrail)
- [Edge computing AI (1)](https://rheodata.com/en-us/blog/tag/edge-computing-ai)
- [Enterprise AI Strategy (1)](https://rheodata.com/en-us/blog/tag/enterprise-ai-strategy)
- [Enterprise AI scalability (1)](https://rheodata.com/en-us/blog/tag/enterprise-ai-scalability)
- [Enterprise cloud migration (1)](https://rheodata.com/en-us/blog/tag/enterprise-cloud-migration)
- [Enterprise data migration (1)](https://rheodata.com/en-us/blog/tag/enterprise-data-migration)
- [Enterprise database replication monitoring (1)](https://rheodata.com/en-us/blog/tag/enterprise-database-replication-monitoring)
- [Forward Deployed Engineering (1)](https://rheodata.com/en-us/blog/tag/forward-deployed-engineering)
- [GPU memory optimization (1)](https://rheodata.com/en-us/blog/tag/gpu-memory-optimization)
- [GUI (1)](https://rheodata.com/en-us/blog/tag/gui)
- [Gemini Enterprise (1)](https://rheodata.com/en-us/blog/tag/gemini-enterprise)
- [GoldenGate 21c upgrade (1)](https://rheodata.com/en-us/blog/tag/goldengate-21c-upgrade)
- [GoldenGate 23ai to 26ai (1)](https://rheodata.com/en-us/blog/tag/goldengate-23ai-to-26ai)
- [GoldenGate 26ai new features (1)](https://rheodata.com/en-us/blog/tag/goldengate-26ai-new-features)
- [GoldenGate 26ai release notes (1)](https://rheodata.com/en-us/blog/tag/goldengate-26ai-release-notes)
- [GoldenGate 26ai upgrade (1)](https://rheodata.com/en-us/blog/tag/goldengate-26ai-upgrade)
- [GoldenGate AI integration (1)](https://rheodata.com/en-us/blog/tag/goldengate-ai-integration)
- [GoldenGate CDC configuration (1)](https://rheodata.com/en-us/blog/tag/goldengate-cdc-configuration)
- [GoldenGate DAA (1)](https://rheodata.com/en-us/blog/tag/goldengate-daa)
- [GoldenGate Extract user permissions (1)](https://rheodata.com/en-us/blog/tag/goldengate-extract-user-permissions)
- [GoldenGate Yugabyte support (1)](https://rheodata.com/en-us/blog/tag/goldengate-yugabyte-support)
- [GoldenGate certificate authentication (1)](https://rheodata.com/en-us/blog/tag/goldengate-certificate-authentication)
- [GoldenGate cutover planning (1)](https://rheodata.com/en-us/blog/tag/goldengate-cutover-planning)
- [GoldenGate deployment automation (1)](https://rheodata.com/en-us/blog/tag/goldengate-deployment-automation)
- [GoldenGate granular permissions setup (1)](https://rheodata.com/en-us/blog/tag/goldengate-granular-permissions-setup)
- [GoldenGate least privilege security (1)](https://rheodata.com/en-us/blog/tag/goldengate-least-privilege-security)
- [GoldenGate lifecycle management (1)](https://rheodata.com/en-us/blog/tag/goldengate-lifecycle-management)
- [GoldenGate migration guide (1)](https://rheodata.com/en-us/blog/tag/goldengate-migration-guide)
- [GoldenGate migration sizing (1)](https://rheodata.com/en-us/blog/tag/goldengate-migration-sizing)
- [GoldenGate monitoring and lag management (1)](https://rheodata.com/en-us/blog/tag/goldengate-monitoring-and-lag-management)
- [GoldenGate operational ownership (1)](https://rheodata.com/en-us/blog/tag/goldengate-operational-ownership)
- [GoldenGate password management (1)](https://rheodata.com/en-us/blog/tag/goldengate-password-management)
- [GoldenGate port configuration (1)](https://rheodata.com/en-us/blog/tag/goldengate-port-configuration)
- [GoldenGate replication lag detection (1)](https://rheodata.com/en-us/blog/tag/goldengate-replication-lag-detection)
- [GoldenGate response file (1)](https://rheodata.com/en-us/blog/tag/goldengate-response-file)
- [GoldenGate trail file management (1)](https://rheodata.com/en-us/blog/tag/goldengate-trail-file-management)
- [GoldenGate troubleshooting solutions (1)](https://rheodata.com/en-us/blog/tag/goldengate-troubleshooting-solutions)
- [GoldenGate unified console (1)](https://rheodata.com/en-us/blog/tag/goldengate-unified-console)
- [GoldenGateMCP (1)](https://rheodata.com/en-us/blog/tag/goldengatemcp)
- [Google Cloud Platform (1)](https://rheodata.com/en-us/blog/tag/google-cloud-platform)
- [Google Cloud Storage (1)](https://rheodata.com/en-us/blog/tag/google-cloud-storage)
- [Google-AlloyDB (1)](https://rheodata.com/en-us/blog/tag/google-alloydb)
- [HashiCorp (1)](https://rheodata.com/en-us/blog/tag/hashicorp)
- [Hybrid queries Oracle (1)](https://rheodata.com/en-us/blog/tag/hybrid-queries-oracle)
- [IT cost optimization (1)](https://rheodata.com/en-us/blog/tag/it-cost-optimization)
- [IT infrastructure simplification (1)](https://rheodata.com/en-us/blog/tag/it-infrastructure-simplification)
- [IT leadership mental health (1)](https://rheodata.com/en-us/blog/tag/it-leadership-mental-health)
- [Initial Load (1)](https://rheodata.com/en-us/blog/tag/initial-load)
- [Inventory management data lag (1)](https://rheodata.com/en-us/blog/tag/inventory-management-data-lag)
- [LLM inference optimization (1)](https://rheodata.com/en-us/blog/tag/llm-inference-optimization)
- [Large language model performance (1)](https://rheodata.com/en-us/blog/tag/large-language-model-performance)
- [MCP Server for Oracle (1)](https://rheodata.com/en-us/blog/tag/mcp-server-for-oracle)
- [MCP Server, (1)](https://rheodata.com/en-us/blog/tag/mcp-server)
- [Mental Health Awareness Month tech industry (1)](https://rheodata.com/en-us/blog/tag/mental-health-awareness-month-tech-industry)
- [Migration readiness (1)](https://rheodata.com/en-us/blog/tag/migration-readiness)
- [Model Context Protocol (1)](https://rheodata.com/en-us/blog/tag/model-context-protocol)
- [Model inference costs (1)](https://rheodata.com/en-us/blog/tag/model-inference-costs)
- [OMA assessment (1)](https://rheodata.com/en-us/blog/tag/oma-assessment)
- [ONNX embedding model Oracle (1)](https://rheodata.com/en-us/blog/tag/onnx-embedding-model-oracle)
- [Operating Model (1)](https://rheodata.com/en-us/blog/tag/operating-model)
- [Oracle 23ai features (1)](https://rheodata.com/en-us/blog/tag/oracle-23ai-features)
- [Oracle 26ai features (1)](https://rheodata.com/en-us/blog/tag/oracle-26ai-features)
- [Oracle AI Data Platform (1)](https://rheodata.com/en-us/blog/tag/oracle-ai-data-platform)
- [Oracle AI Solutions (1)](https://rheodata.com/en-us/blog/tag/oracle-ai-solutions)
- [Oracle Autonomous Database migration (1)](https://rheodata.com/en-us/blog/tag/oracle-autonomous-database-migration)
- [Oracle CPAT vs OMA comparison (1)](https://rheodata.com/en-us/blog/tag/oracle-cpat-vs-oma-comparison)
- [Oracle Database 23ai vectors (1)](https://rheodata.com/en-us/blog/tag/oracle-database-23ai-vectors)
- [Oracle Database 26ai vectors (1)](https://rheodata.com/en-us/blog/tag/oracle-database-26ai-vectors)
- [Oracle EBS migration (1)](https://rheodata.com/en-us/blog/tag/oracle-ebs-migration)
- [Oracle Exadata on Google Cloud (1)](https://rheodata.com/en-us/blog/tag/oracle-exadata-on-google-cloud)
- [Oracle GoldenGate 26ai (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-26ai)
- [Oracle GoldenGate AI diagnostics (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-ai-diagnostics)
- [Oracle GoldenGate Azure (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-azure)
- [Oracle GoldenGate Management (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-management)
- [Oracle GoldenGate REST API automation (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-rest-api-automation)
- [Oracle GoldenGate SQL Server permissions (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-sql-server-permissions)
- [Oracle GoldenGate automation (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-automation)
- [Oracle GoldenGate heartbeat (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-heartbeat)
- [Oracle GoldenGate least privilege security (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-least-privilege-security)
- [Oracle GoldenGate managed services (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-managed-services)
- [Oracle GoldenGate migration strategy (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-migration-strategy)
- [Oracle GoldenGate monitoring tools (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-monitoring-tools)
- [Oracle GoldenGate replication best practices (1)](https://rheodata.com/en-us/blog/tag/oracle-goldengate-replication-best-practices)
- [Oracle and Google Cloud AI (1)](https://rheodata.com/en-us/blog/tag/oracle-and-google-cloud-ai)
- [Oracle cloud cost optimization (1)](https://rheodata.com/en-us/blog/tag/oracle-cloud-cost-optimization)
- [Oracle cloud migration assessment (1)](https://rheodata.com/en-us/blog/tag/oracle-cloud-migration-assessment)
- [Oracle data replication 2026 (1)](https://rheodata.com/en-us/blog/tag/oracle-data-replication-2026)
- [Oracle data replication compliance (1)](https://rheodata.com/en-us/blog/tag/oracle-data-replication-compliance)
- [Oracle database migration to OCI (1)](https://rheodata.com/en-us/blog/tag/oracle-database-migration-to-oci)
- [Oracle replication governance (1)](https://rheodata.com/en-us/blog/tag/oracle-replication-governance)
- [Oracle replication lag diagnosis (1)](https://rheodata.com/en-us/blog/tag/oracle-replication-lag-diagnosis)
- [Oracle to cloud migration (1)](https://rheodata.com/en-us/blog/tag/oracle-to-cloud-migration)
- [Oracle vs Databricks (1)](https://rheodata.com/en-us/blog/tag/oracle-vs-databricks)
- [Oracle workload analysis (1)](https://rheodata.com/en-us/blog/tag/oracle-workload-analysis)
- [Oracle@Google Cloud (1)](https://rheodata.com/en-us/blog/tag/oraclegoogle-cloud)
- [Parallel Replicat (1)](https://rheodata.com/en-us/blog/tag/parallel-replicat)
- [Parquet (1)](https://rheodata.com/en-us/blog/tag/parquet)
- [RAG pipeline database (1)](https://rheodata.com/en-us/blog/tag/rag-pipeline-database)
- [REST API (1)](https://rheodata.com/en-us/blog/tag/rest-api)
- [Real-time AI processing (1)](https://rheodata.com/en-us/blog/tag/real-time-ai-processing)
- [SQL Server replication security best practices (1)](https://rheodata.com/en-us/blog/tag/sql-server-replication-security-best-practices)
- [Semantic search database (1)](https://rheodata.com/en-us/blog/tag/semantic-search-database)
- [Similarity search Oracle (1)](https://rheodata.com/en-us/blog/tag/similarity-search-oracle)
- [Snowflake Optima indexing (1)](https://rheodata.com/en-us/blog/tag/snowflake-optima-indexing)
- [Snowflake Search Optimization Service (1)](https://rheodata.com/en-us/blog/tag/snowflake-search-optimization-service)
- [Snowflake alternatives (1)](https://rheodata.com/en-us/blog/tag/snowflake-alternatives)
- [Snowflake automatic clustering (1)](https://rheodata.com/en-us/blog/tag/snowflake-automatic-clustering)
- [Snowflake budget monitoring (1)](https://rheodata.com/en-us/blog/tag/snowflake-budget-monitoring)
- [Snowflake cloud data warehouse performance (1)](https://rheodata.com/en-us/blog/tag/snowflake-cloud-data-warehouse-performance)
- [Snowflake cost governance (1)](https://rheodata.com/en-us/blog/tag/snowflake-cost-governance)
- [Snowflake cost management (1)](https://rheodata.com/en-us/blog/tag/snowflake-cost-management)
- [Snowflake cost reduction strategies (1)](https://rheodata.com/en-us/blog/tag/snowflake-cost-reduction-strategies)
- [Snowflake credit usage (1)](https://rheodata.com/en-us/blog/tag/snowflake-credit-usage)
- [Snowflake materialized views (1)](https://rheodata.com/en-us/blog/tag/snowflake-materialized-views)
- [Snowflake migration staffing (1)](https://rheodata.com/en-us/blog/tag/snowflake-migration-staffing)
- [Snowflake performance optimization (1)](https://rheodata.com/en-us/blog/tag/snowflake-performance-optimization)
- [Snowflake query acceleration service (1)](https://rheodata.com/en-us/blog/tag/snowflake-query-acceleration-service)
- [Snowflake query performance tuning (1)](https://rheodata.com/en-us/blog/tag/snowflake-query-performance-tuning)
- [Snowflake resource monitors (1)](https://rheodata.com/en-us/blog/tag/snowflake-resource-monitors)
- [Snowflake serverless compute costs (1)](https://rheodata.com/en-us/blog/tag/snowflake-serverless-compute-costs)
- [Snowflake spend attribution (1)](https://rheodata.com/en-us/blog/tag/snowflake-spend-attribution)
- [Snowflake warehouse optimization (1)](https://rheodata.com/en-us/blog/tag/snowflake-warehouse-optimization)
- [Snowflake warehouse right-sizing (1)](https://rheodata.com/en-us/blog/tag/snowflake-warehouse-right-sizing)
- [Token generation latency (1)](https://rheodata.com/en-us/blog/tag/token-generation-latency)
- [VECTOR datatype Oracle (1)](https://rheodata.com/en-us/blog/tag/vector-datatype-oracle)
- [VECTOR\_DISTANCE function (1)](https://rheodata.com/en-us/blog/tag/vector_distance-function)
- [Vector embeddings Oracle (1)](https://rheodata.com/en-us/blog/tag/vector-embeddings-oracle)
- [What's new GoldenGate 26ai (1)](https://rheodata.com/en-us/blog/tag/whats-new-goldengate-26ai)
- [access control (1)](https://rheodata.com/en-us/blog/tag/access-control)
- [activepass (1)](https://rheodata.com/en-us/blog/tag/activepass)
- [adb (1)](https://rheodata.com/en-us/blog/tag/adb)
- [add (1)](https://rheodata.com/en-us/blog/tag/add)
- [add credentials (1)](https://rheodata.com/en-us/blog/tag/add-credentials)
- [adminclient add credentials (1)](https://rheodata.com/en-us/blog/tag/adminclient-add-credentials)
- [administration (1)](https://rheodata.com/en-us/blog/tag/administration)
- [adw (1)](https://rheodata.com/en-us/blog/tag/adw)
- [ai failures 2024 (1)](https://rheodata.com/en-us/blog/tag/ai-failures-2024)
- [ai stratgies (1)](https://rheodata.com/en-us/blog/tag/ai-stratgies)
- [ai-architecture (1)](https://rheodata.com/en-us/blog/tag/ai-architecture)
- [all or nothing (1)](https://rheodata.com/en-us/blog/tag/all-or-nothing)
- [allowPublicKeyRetrieval (1)](https://rheodata.com/en-us/blog/tag/allowpublickeyretrieval)
- [alloydb (1)](https://rheodata.com/en-us/blog/tag/alloydb)
- [alter extract 21c (1)](https://rheodata.com/en-us/blog/tag/alter-extract-21c)
- [amazon (1)](https://rheodata.com/en-us/blog/tag/amazon)
- [ansible (1)](https://rheodata.com/en-us/blog/tag/ansible)
- [approximate-nearest-neighbor (1)](https://rheodata.com/en-us/blog/tag/approximate-nearest-neighbor)
- [automl (1)](https://rheodata.com/en-us/blog/tag/automl)
- [azure-cloud (1)](https://rheodata.com/en-us/blog/tag/azure-cloud)
- [azure-native (1)](https://rheodata.com/en-us/blog/tag/azure-native)
- [bastion (1)](https://rheodata.com/en-us/blog/tag/bastion)
- [bastion host configuartion (1)](https://rheodata.com/en-us/blog/tag/bastion-host-configuartion)
- [bastion setup oracle (1)](https://rheodata.com/en-us/blog/tag/bastion-setup-oracle)
- [bug 30193036 (1)](https://rheodata.com/en-us/blog/tag/bug-30193036)
- [bugs (1)](https://rheodata.com/en-us/blog/tag/bugs)
- [build a compute node in oci (1)](https://rheodata.com/en-us/blog/tag/build-a-compute-node-in-oci)
- [business-continuity (1)](https://rheodata.com/en-us/blog/tag/business-continuity)
- [certificate-based authentication (1)](https://rheodata.com/en-us/blog/tag/certificate-based-authentication)
- [change data capture (1)](https://rheodata.com/en-us/blog/tag/change-data-capture)
- [changing ssh keys (1)](https://rheodata.com/en-us/blog/tag/changing-ssh-keys)
- [channels (1)](https://rheodata.com/en-us/blog/tag/channels)
- [cloud cost control (1)](https://rheodata.com/en-us/blog/tag/cloud-cost-control)
- [cloud data platform cost control (1)](https://rheodata.com/en-us/blog/tag/cloud-data-platform-cost-control)
- [cloud migration readiness assessment (1)](https://rheodata.com/en-us/blog/tag/cloud-migration-readiness-assessment)
- [cloud-database-setup (1)](https://rheodata.com/en-us/blog/tag/cloud-database-setup)
- [cloud-sql-migration (1)](https://rheodata.com/en-us/blog/tag/cloud-sql-migration)
- [cloud-strategy (1)](https://rheodata.com/en-us/blog/tag/cloud-strategy)
- [cohere command (1)](https://rheodata.com/en-us/blog/tag/cohere-command)
- [compute (1)](https://rheodata.com/en-us/blog/tag/compute)
- [compute portability (1)](https://rheodata.com/en-us/blog/tag/compute-portability)
- [compute-instance (1)](https://rheodata.com/en-us/blog/tag/compute-instance)
- [connect to database via bastion host (1)](https://rheodata.com/en-us/blog/tag/connect-to-database-via-bastion-host)
- [connect to database via bastion host oci (1)](https://rheodata.com/en-us/blog/tag/connect-to-database-via-bastion-host-oci)
- [consultants (1)](https://rheodata.com/en-us/blog/tag/consultants)
- [content strategy (1)](https://rheodata.com/en-us/blog/tag/content-strategy)
- [cost-optimization (1)](https://rheodata.com/en-us/blog/tag/cost-optimization)
- [cryptographic authentication (1)](https://rheodata.com/en-us/blog/tag/cryptographic-authentication)
- [curl (1)](https://rheodata.com/en-us/blog/tag/curl)
- [daemon (1)](https://rheodata.com/en-us/blog/tag/daemon)
- [data encryption (1)](https://rheodata.com/en-us/blog/tag/data-encryption)
- [data fabric (1)](https://rheodata.com/en-us/blog/tag/data-fabric)
- [data governance framework (1)](https://rheodata.com/en-us/blog/tag/data-governance-framework)
- [data lake architecture (1)](https://rheodata.com/en-us/blog/tag/data-lake-architecture)
- [data lakehouse platform (1)](https://rheodata.com/en-us/blog/tag/data-lakehouse-platform)
- [data pipeline security (1)](https://rheodata.com/en-us/blog/tag/data-pipeline-security)
- [data platform selection (1)](https://rheodata.com/en-us/blog/tag/data-platform-selection)
- [data team workload management (1)](https://rheodata.com/en-us/blog/tag/data-team-workload-management)
- [database AI transformation (1)](https://rheodata.com/en-us/blog/tag/database-ai-transformation)
- [database administrators (1)](https://rheodata.com/en-us/blog/tag/database-administrators)
- [database capacity planning tools (1)](https://rheodata.com/en-us/blog/tag/database-capacity-planning-tools)
- [database certificate authentication (1)](https://rheodata.com/en-us/blog/tag/database-certificate-authentication)
- [database compliance audit replication (1)](https://rheodata.com/en-us/blog/tag/database-compliance-audit-replication)
- [database consolidation strategy (1)](https://rheodata.com/en-us/blog/tag/database-consolidation-strategy)
- [database credential management (1)](https://rheodata.com/en-us/blog/tag/database-credential-management)
- [database migration planning tools (1)](https://rheodata.com/en-us/blog/tag/database-migration-planning-tools)
- [database modernization AI (1)](https://rheodata.com/en-us/blog/tag/database-modernization-ai)
- [database replication management (1)](https://rheodata.com/en-us/blog/tag/database-replication-management)
- [database transformation consulting (1)](https://rheodata.com/en-us/blog/tag/database-transformation-consulting)
- [database-failover (1)](https://rheodata.com/en-us/blog/tag/database-failover)
- [database-vectors (1)](https://rheodata.com/en-us/blog/tag/database-vectors)
- [db\_owner risk SQL Server replication (1)](https://rheodata.com/en-us/blog/tag/db_owner-risk-sql-server-replication)
- [dba\_capture (1)](https://rheodata.com/en-us/blog/tag/dba_capture)
- [dba\_queues (1)](https://rheodata.com/en-us/blog/tag/dba_queues)
- [dbms\_aqadm.drop\_queue\_table (1)](https://rheodata.com/en-us/blog/tag/dbms_aqadm-drop_queue_table)
- [dbms\_comparison (1)](https://rheodata.com/en-us/blog/tag/dbms_comparison)
- [ddl (1)](https://rheodata.com/en-us/blog/tag/ddl)
- [direct initial load (1)](https://rheodata.com/en-us/blog/tag/direct-initial-load)
- [dml (1)](https://rheodata.com/en-us/blog/tag/dml)
- [docker goldengate (1)](https://rheodata.com/en-us/blog/tag/docker-goldengate)
- [docker images (1)](https://rheodata.com/en-us/blog/tag/docker-images)
- [dynamic (1)](https://rheodata.com/en-us/blog/tag/dynamic)
- [edb database (1)](https://rheodata.com/en-us/blog/tag/edb-database)
- [elephant database (1)](https://rheodata.com/en-us/blog/tag/elephant-database)
- [eliminate database password authentication (1)](https://rheodata.com/en-us/blog/tag/eliminate-database-password-authentication)
- [emd360 (1)](https://rheodata.com/en-us/blog/tag/emd360)
- [enable ddl (1)](https://rheodata.com/en-us/blog/tag/enable-ddl)
- [enterprise (1)](https://rheodata.com/en-us/blog/tag/enterprise)
- [enterprise AI (1)](https://rheodata.com/en-us/blog/tag/enterprise-ai)
- [enterprise AI implementation (1)](https://rheodata.com/en-us/blog/tag/enterprise-ai-implementation)
- [enterprise AI infrastructure (1)](https://rheodata.com/en-us/blog/tag/enterprise-ai-infrastructure)
- [enterprise data governance (1)](https://rheodata.com/en-us/blog/tag/enterprise-data-governance)
- [enterprise data integration (1)](https://rheodata.com/en-us/blog/tag/enterprise-data-integration)
- [enterprise data strategy (1)](https://rheodata.com/en-us/blog/tag/enterprise-data-strategy)
- [enterprise goldengate backup solution (1)](https://rheodata.com/en-us/blog/tag/enterprise-goldengate-backup-solution)
- [enterprise manager (1)](https://rheodata.com/en-us/blog/tag/enterprise-manager)
- [exception handling (1)](https://rheodata.com/en-us/blog/tag/exception-handling)
- [experts in oracle goldengate (1)](https://rheodata.com/en-us/blog/tag/experts-in-oracle-goldengate)
- [extract changes (1)](https://rheodata.com/en-us/blog/tag/extract-changes)
- [extract load transform (1)](https://rheodata.com/en-us/blog/tag/extract-load-transform)
- [extract transform load (1)](https://rheodata.com/en-us/blog/tag/extract-transform-load)
- [failures (1)](https://rheodata.com/en-us/blog/tag/failures)
- [fintech postgreSQL (1)](https://rheodata.com/en-us/blog/tag/fintech-postgresql)
- [firewalld goldengate (1)](https://rheodata.com/en-us/blog/tag/firewalld-goldengate)
- [firewalld microservices (1)](https://rheodata.com/en-us/blog/tag/firewalld-microservices)
- [fivetran (1)](https://rheodata.com/en-us/blog/tag/fivetran)
- [framework (1)](https://rheodata.com/en-us/blog/tag/framework)
- [frameworks (1)](https://rheodata.com/en-us/blog/tag/frameworks)
- [free tools (1)](https://rheodata.com/en-us/blog/tag/free-tools)
- [fresh data (1)](https://rheodata.com/en-us/blog/tag/fresh-data)
- [gemini (1)](https://rheodata.com/en-us/blog/tag/gemini)
- [genai (1)](https://rheodata.com/en-us/blog/tag/genai)
- [general information (1)](https://rheodata.com/en-us/blog/tag/general-information)
- [ggsci (1)](https://rheodata.com/en-us/blog/tag/ggsci)
- [ggsmon (1)](https://rheodata.com/en-us/blog/tag/ggsmon)
- [goldengate active passive (1)](https://rheodata.com/en-us/blog/tag/goldengate-active-passive)
- [goldengate backup automation (1)](https://rheodata.com/en-us/blog/tag/goldengate-backup-automation)
- [goldengate bug (1)](https://rheodata.com/en-us/blog/tag/goldengate-bug)
- [goldengate errors (1)](https://rheodata.com/en-us/blog/tag/goldengate-errors)
- [goldengate experts (1)](https://rheodata.com/en-us/blog/tag/goldengate-experts)
- [goldengate free (1)](https://rheodata.com/en-us/blog/tag/goldengate-free)
- [goldengate github integration (1)](https://rheodata.com/en-us/blog/tag/goldengate-github-integration)
- [goldengate high availiability (1)](https://rheodata.com/en-us/blog/tag/goldengate-high-availiability)
- [goldengate maa (1)](https://rheodata.com/en-us/blog/tag/goldengate-maa)
- [goldengate microservices port (1)](https://rheodata.com/en-us/blog/tag/goldengate-microservices-port)
- [goldengate microservices ports (1)](https://rheodata.com/en-us/blog/tag/goldengate-microservices-ports)
- [goldengate ogg-02028 (1)](https://rheodata.com/en-us/blog/tag/goldengate-ogg-02028)
- [goldengate parameter file backup (1)](https://rheodata.com/en-us/blog/tag/goldengate-parameter-file-backup)
- [google cloudsql (1)](https://rheodata.com/en-us/blog/tag/google-cloudsql)
- [google mysql migration (1)](https://rheodata.com/en-us/blog/tag/google-mysql-migration)
- [heatwave experts (1)](https://rheodata.com/en-us/blog/tag/heatwave-experts)
- [high performance mysql (1)](https://rheodata.com/en-us/blog/tag/high-performance-mysql)
- [human creativity AI (1)](https://rheodata.com/en-us/blog/tag/human-creativity-ai)
- [human vs AI writing (1)](https://rheodata.com/en-us/blog/tag/human-vs-ai-writing)
- [hybrid cloud data architecture (1)](https://rheodata.com/en-us/blog/tag/hybrid-cloud-data-architecture)
- [integrated extract oracle (1)](https://rheodata.com/en-us/blog/tag/integrated-extract-oracle)
- [integrated replicat oracle (1)](https://rheodata.com/en-us/blog/tag/integrated-replicat-oracle)
- [lic (1)](https://rheodata.com/en-us/blog/tag/lic)
- [license (1)](https://rheodata.com/en-us/blog/tag/license)
- [logmnr\_session$ (1)](https://rheodata.com/en-us/blog/tag/logmnr_session)
- [managed service provider (1)](https://rheodata.com/en-us/blog/tag/managed-service-provider)
- [managed services for database teams (1)](https://rheodata.com/en-us/blog/tag/managed-services-for-database-teams)
- [management (1)](https://rheodata.com/en-us/blog/tag/management)
- [migration compatibility validation (1)](https://rheodata.com/en-us/blog/tag/migration-compatibility-validation)
- [monitor oracle goldengate rest api (1)](https://rheodata.com/en-us/blog/tag/monitor-oracle-goldengate-rest-api)
- [monolithic database architecture (1)](https://rheodata.com/en-us/blog/tag/monolithic-database-architecture)
- [move off of oracle (1)](https://rheodata.com/en-us/blog/tag/move-off-of-oracle)
- [multi-cloud data platform (1)](https://rheodata.com/en-us/blog/tag/multi-cloud-data-platform)
- [oci bastion (1)](https://rheodata.com/en-us/blog/tag/oci-bastion)
- [oem emd360 (1)](https://rheodata.com/en-us/blog/tag/oem-emd360)
- [ogg deployments (1)](https://rheodata.com/en-us/blog/tag/ogg-deployments)
- [open table format (1)](https://rheodata.com/en-us/blog/tag/open-table-format)
- [oracle database (1)](https://rheodata.com/en-us/blog/tag/oracle-database)
- [preventing tech employee attrition (1)](https://rheodata.com/en-us/blog/tag/preventing-tech-employee-attrition)
- [reducing on-call burnout (1)](https://rheodata.com/en-us/blog/tag/reducing-on-call-burnout)
- [securing Oracle GoldenGate on SQL Server (1)](https://rheodata.com/en-us/blog/tag/securing-oracle-goldengate-on-sql-server)
- [tech team burnout (1)](https://rheodata.com/en-us/blog/tag/tech-team-burnout)
- [thought leadership (1)](https://rheodata.com/en-us/blog/tag/thought-leadership)
- [vector database consolidation (1)](https://rheodata.com/en-us/blog/tag/vector-database-consolidation)

See all

##### About RheoData

 RheoData is based out of Metro Atlanta, GA and provide expert Oracle, Microsoft, Google, and Snowflake services.  Let us  know how we can help!

##### Links

- [About Us](https://rheodata.com/who-we-are)
- [FrostCore](https://rheodata.com/frostcore)
- [RedCore](https://rheodata.com/redcore)
- [BlueCore](https://rheodata.com/bluecore)

##### Contact us

[hello@rheodata.com](mailto:hello@rheodata.com)

©RheoData2026. All Rights Reserved.

```json
{
  "@context" : "https://schema.org",
  "@type" : "Organization",
  "address" : {
    "@type" : "PostalAddress",
    "addressCountry" : "US",
    "addressRegion" : "GA"
  },
  "description" : "Elite specialist partner for Oracle, Snowflake, BigQuery, and AI-ready data platforms.",
  "email" : "hello@rheodata.com",
  "foundingDate" : "2020",
  "logo" : "https://rheodata.com/hubfs/RheoData%20-%20Logo%20-%20transparent-1.png",
  "name" : "RheoData",
  "sameAs" : [ "https://www.linkedin.com/company/rheodata" ],
  "url" : "https://rheodata.com"
}
```

```json
{
  "@context" : "https://schema.org",
  "@type" : "WebSite",
  "name" : "RheoData",
  "potentialAction" : {
    "@type" : "SearchAction",
    "query-input" : "required name=search_term_string",
    "target" : "https://rheodata.com/search?q={search_term_string}"
  },
  "url" : "https://rheodata.com"
}
```

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "",
    "url" : ""
  },
  "dateModified" : "2026-04-17T17:31:04+0000",
  "datePublished" : "2025-10-30T17:41:53+0000",
  "description" : "23.4 | RheoData Blog Posts",
  "headline" : "&lt;span id=&quot;hs_cos_wrapper_name&quot; class=&quot;hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text&quot; style=&quot;&quot; data-hs-cos-general-type=&quot;meta_field&quot; data-hs-cos-type=&quot;text&quot; &gt;rheodata_blog listing page&lt;/span&gt;",
  "image" : "",
  "mainEntityOfPage" : {
    "@id" : "https://rheodata.com/en-us/blog/tag/23-4",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://rheodata.com/hubfs/RheoData%20-%20Logo%20-%20transparent-1.png"
    },
    "name" : "RheoData"
  }
}
```

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "articleBody" : "In my last two posts I showed you what the Oracle Vector Datatype is and how to update existing data after adding a vector datatype column. In this post, we are going to quickly look at how to use those examples to implement a “similarity search” based on the vector stored in the vg_vec1 column of the table. Assumptions The prerequisites for this should be pretty straight forward, but I’ll make note of them here for reference. Oracle Database 23.4 (limited availability at the moment) python3.11 or later (what I’m using non-venv setup) python_oracledb (2.0.0 or later (limited availability)) LLM API Key (Using Cohere) With the prerequisites defined and ready to use, lets take a look at the code need implement a “similarity search” on top of the video game data stored in vector.video_games_vec. If we do a quick query of vector.video_games_vec table, we see that vectors are in place for every row of the table. SQL&gt; select id, title, vg_vec1 from VECTOR.VIDEO_GAMES_VEC order by id; With vectors in place, we now need to write some code that will compare the data in column vg_vec1 with a search term or question we are looking for. Python First we need to import the packages and define the LLM API key we need for python: #! /usr/local/bin/python3 import oracledb import cohere import os import sys import array #set Cohere API key api_key = “eOubN0Yyj8ORoDk6MYjr co = cohere.Client(api_key) As you can tell, we are importing the new oracledb package for python along with the package for cohere. The other packages are needed and are already installed with python. Within the same section, we are defining the API Key that is needed to run embeddings against Cohere. Next, we are setting up a few definitions/functions for the process. I broke these into functions that partition what is happening with the script. There are two functions that we are going to define – database connection and vectorization. Within the database connection function, we are simply making a call to connect to the database and return the connection for usage within the script. If connection cannot be made, then the connection is not returned. #define database connection function def database_connection():   try:       connection = oracledb.connect(           user=”,           password=”,           dsn=100.166.255.254:1521/”           )       print('connected’)       return connection   except:         print('Could not make a connection’) The next function is used to create embedding for the search term or question that we are looking for in the “similarity search”. Breaking this out into a function helps simplify the code and relegates the vectorization to a single step. Then the vector array of embeddings are retuned for further processing. #define LLM embedding model def cohere_vectorize(vInput):   data = vInput   response = co.embed(       texts=[data],       model='embed-english-light-v3.0’,       input_type=“search_query       )   vector_value = response.embeddings[0]     return vector_value Lastly, we create a function called main(). This is just to compartmentalize main code into a single spot. Something, I like to do from time to time. Within the main function is where all the work is done for the “similarity search”. We setup the connection to the database, the select statement that is going to be used, and what to do with the search. def main():     connection = database_connection()   with connection.cursor() as select_cursor:       select_stmt = select title, genres, license                       from vector.video_games_vec                       order by vector_distance(vg_vec1, :1, DOT)                       fetch first :2 rows only”         while True:           prompt_input = input('Search Games or Game Question: ‘)           if (prompt_input == exit”):                 break           if (prompt_input == ”):                 continue             fetch_num = input(How many records to fetch: “)           vec = cohere_vectorize(prompt_input)             vec2 = array.array(d, vec)           for(title, genres, license) in select_cursor.execute(select_stmt, [vec2, fetch_num]):                 print(\t + title + | + genres + | + license) A couple of things to understand about the code above. The select _stmt parameter defines the select statement that is used to query the database table and return a result set based on the vectors. Within this select statement, we are using vector_distance to compare two vectors – stored vector and new embedding vector for search. Then the algorithm used for the search – DOT. All this is done in the order by clause. Additionally, the query is limiting the results based on the first number or rows fetched. To give a better view of this query, it looks like this: select title, genres, license from vector.video_games_vec order by vector_distance(vg_vec1, :1, DOT) fetch first :2 rows only You will notice that we are using :1 and :2 within the SQL statement. These are used by the cursor.execute function in python to pass values. Another thing to point out is that the returned embedding needs to be converted to a format that can be used by SQL. This is done by taking the embedding and converting it to a FLOAT64 value. This is done with the line in the main function as: vec2 = arrary.array(“d”, vec) Seems trivial, but is needed for the search to work. Lastly, we simply make a call to the main function for execution. Once execute, we can provide our search term or question related to a video game and get information back on the video game. Note: One thing to note, the for loop in the main function that executes the select statement needs to be updated if more columns are added to the select statement. Look at the below video, you will see that we are searching for various video games and looking to get the name of the video game, the genre it belongs in, and if it requires a license. The output is prefixed with a tab and broken up with pipe symbols. See this simple vector search in action: here When it comes down to the effectiveness of the search, it will be based on the quality of your data. If you have clean data, then your searches will be more efficient and yield better results.",
  "author" : {
    "@type" : "Person",
    "name" : "Bobby Curtis",
    "sameAs" : "",
    "url" : "https://rheodata.com/en-us/blog/author/bobby-curtis"
  },
  "dateModified" : "10/11/2025",
  "datePublished" : "10/11/2025",
  "headline" : "Similarity Search with Oracle’s Vector Datatype",
  "image" : {
    "@type" : "ImageObject",
    "height" : 400,
    "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/Imported_Blog_Media/similarity_search_oracle_vector_datatype-1024x640-1.png",
    "width" : 750
  },
  "mainEntityOfPage" : "https://rheodata.com/en-us/blog/similarity-search-oracle-vector-datatype",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/RheoData%20-%20Logo%20-%20transparent-1.png"
    },
    "name" : "RheoData",
    "url" : "rheodata.com"
  }
}
```

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "articleBody" : "At Oracle Cloud World 2023, Oracle announced they were moving toward enabling Artificial Intelligence (AI) within many of their products. Oracle is making huge steps forward for many people to use AI daily. As 2023 ended, many other industry leaders announced they would do the same. Regarding databases, Oracle is the only industry leader that leverages its core product for many different things. For at least a decade, Oracle has turned the Oracle Database into a Swiss army knife by enabling it to support different modern data types, analytics, and development paradigms, all in one product. It is only natural that with the AI revolution starting, Oracle would build a data type that enables organizations to use Retrieval-Augmented Generation (RAG) within the databases. By adding a “vector” datatype, Oracle simplifies data architectures and the building of RAG or Private-LLM configurations for organizations. Where is the Vector datatype? If you use an Oracle Database today, you will not immediately have access to the Vector datatype. Even if you use the latest version, 23.3.x.x, on Oracle Cloud Infrastructure (OCI), you cannot access this datatype (Believe me, I tried). You have to be part of the beta program for the next release of Oracle Database, which will provide you details on the Vector datatype before the initial release in 23.4. In short, and for the moment, if you are not part of the beta program, this datatype will be available soon! What is the Vector datatype? The Vector datatype is a modern datatype designed to efficiently store, manage, and index massive amounts of high-dimensional data. This data type is growing in interest and is used to create additional value for generative AI use cases and applications. Vector Settings? The vector datatype is used within standard Oracle tables. This enables database schemas to use the data in real-time. The following command shows a simple example: sql&gt; CREATE TABLE rd_vectors (id NUMBER, embed VECTOR); This simple example shows that the vector datatype can be set as a column within a table. Enabling it this way allows you to specify vectors of different dimensions with different formats. Think of this as a catch-all setting for vector data. It is great to have a catch-all; however, you can limit the type of vectors created by imposing constraints on the stored data. In this example, you can only store up to 1024 dimensions, and they must be formatted as INT8 (8-bit integers): sql&gt; CREATE TABLE rd_vectors_int8 (id NUMBER, embed VECTOR(1024, INT8); With this complex example, you must have 1024 dimensions, each of which must be 8-bit integers (INT8). The number of dimensions should be greater than 0 with no limit. The dimensions formats are INT8, FLOAT32, and FLOAT64. FLOAT32 and FLOAT64 are the IEEE standards, and the Oracle Databases will automatically cast the values as needed. Examples of setting additional dimension formats are: sql&gt; CREATE TABLE rd_vectors_int8 (id NUMBER, embed VECTOR(1024, FLOAT32); sql&gt; CREATE TABLE rd_vectors_int8 (id NUMBER, embed VECTOR(1024, FLOAT64); Vector Forms? With the understanding of Vector settings, there are a few forms that a vector can take. Understanding these forms will help in defining the proper vector for your requirements: Important Note: A vector can be NULL, but the dimensions cannot be NULL. (example: You cannot have [(1.1, NULL, 2.3)] Examples of Vectors: Now that you understand the Vector datatype, how does the Oracle Database see the datatype? The following SQL example shows that the table rd_vector is created with only vector datatypes using different variations. sql&gt; CREATE TABLE vector.rd_vector ( v1 VECTOR, v2 VECTOR(3, FLOAT32), v3 VECTOR(2, FLOAT64), v4 VECTOR(1, INT8), v5 VECTOR(1, *), v6 VECTOR(*, FLOAT32), v7 VECTOR(*, *) ); sql&gt; desc vector.rd_vector; Name                                         Null?   Type ----------------------------------------- -------- —————————————— V1                                                         VECTOR(*, *)  V2                                                         VECTOR(3, FLOAT32) V3                                                         VECTOR(2, FLOAT64) V4                                                         VECTOR(1, INT8) V5                                                         VECTOR(1, *) V6                                                         VECTOR(*, FLOAT32) V7                                                         VECTOR(*, *) Hopefully, Oracle will release Oracle Database 23.4 soon! There will be many opportunities to use vector data types as organizations expand their usage of Generative AI. Enjoy!",
  "author" : {
    "@type" : "Person",
    "name" : "Bobby Curtis",
    "sameAs" : "",
    "url" : "https://rheodata.com/en-us/blog/author/bobby-curtis"
  },
  "dateModified" : "10/11/2025",
  "datePublished" : "10/11/2025",
  "headline" : "Oracle’s Vector Datatype",
  "image" : {
    "@type" : "ImageObject",
    "height" : 400,
    "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/Imported_Blog_Media/oracle-vector-datatype-1-1.png",
    "width" : 750
  },
  "mainEntityOfPage" : "https://rheodata.com/en-us/blog/vector-datatype",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/RheoData%20-%20Logo%20-%20transparent-1.png"
    },
    "name" : "RheoData",
    "url" : "rheodata.com"
  }
}
```

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "articleBody" : "This post is the first of a three-part series where I’m going to show you how to use pre-configured machine learning models to embed vectors into the Oracle Database. Before I dive into how to load a pre-trained machine learning models with ONNX, it is helpful to know what is an ONNX file? And how do you create one to use with the Oracle Database. What is an ONNX model? ONNX is an open-source format designed for machine-learning models. Ensuring cross-platform compatibility and supports major languages and frameworks, facilitating easy and efficient model exchanges. ONNX stands for Open Neural Network Exchange. It is a popular choice that enables deployment, integration, and exchange of models consistently across platforms that support cloud, web, edge, and mobile experiences on all the major platforms. While the name implies neural networks, the framework also encompasses models that employ other algorithms. Many leading machine learning development frameworks, such as TensorFlow, Pytorch, and Scikit-learn to name a few, offer the capability to convert models into the ONNX format. ONNX models offer flexibility to export and import models in many languages, such as Python, C++, or C#. Oracle Database 23ai (latest pending-release) supports importing these externally trained ONNX files into the Oracle Database and perform in-database scoring, that is, applying a machine learning model to new data, through ONNX Runtime. ONNX Runtime is an inference engine for ONNX models. With the ONNX Runtime implementation, you can run machine learning models efficiently in ONNX format. An imported ONNX model is represented as an in-database object, similar to the Oracle Machine Learning (OML) model objects. With the appropriate permissions, ONNX models can be imported for machine learning tasks and used to score models using OML scoring SQL operators. An example of importing an ONNX model is as follows: Begin  DBMS_DATA_MINING.IMPORT_ONNX_MODEL(‘’, ‘’, JSON(‘{“function”: “embedding”, “embeddingOutput”: “embedding”, “input”: { “input”: [“DATA”} }}’)); End; / In this example, the IMPORT_ONNX_MODEL procedure is used to import an ONNX model. The following is a break down on what is needed: : is a BLOB argument that holds the ONNX representation of the model. Example: = my_embedding_model.onnx : a user-defined name of the model. This is the name that will be used by SQL when called. Example: = doc_model Obtaining a pre-trained model: Before you can load a pre-trained model, you must have a pre-trained model. Where can you get a pre-trained model? To import a pre-trained model, you first must have the Python packaged called Oracle Machine Learning Utilities (omlutils). Sadly, at the time of this writing, the only way to get this package is via Oracle as a wheel package. Once you have the omlutils package, it needs to be uploaded to the server where the Oracle Database is running. Installing OMLUTILS Hopefully, when Oracle Database 23ai is fully released the omlutils binaries will be included in the Oracle Database Home. Like what Oracle has done with Python 3.12. The next couple of steps will give a overview of how to install the omlutilis into the local Python environment. 1. Verify you have Python 3.12 installed. $ export ORACLE_HOME_23ai=/opt/oracle/product/23ai/dbhome_1 $ cd $ORACLE_HOME_23ai/python/bin $ python -V $ export PATH=$ORACLE_HOME_23ai/python/bin:$PATH $ python -v In both of the “python -V” commands, you should be returned Python 3.12.0 2. Create an ONNX directory $ cd ~ $ mkdir onnx 3. Unzip the omlutils.zip file in the onnx directory $ cd ~/onnx $ unzip ./omlutils.zip -d . 4. After the omlutils have been unzipped, install the package using pip $ cd ~/onnx $ python -m pip install -r requirements.txt $ python -m pip install omlutils-0.13.0-cp312-cp312-linux_x86_64.whl Included Pre-Trained Models With the omlutils package installed it comes with seventeen different pre-trained models that can be used for embedding vectors. These pre-trained models are ready to use immediately and can be seen from Python using the show_preconfigured() function. 1. ‘sentence-transformers/all-mpnet-base-v2', 2. 'sentence-transformers/all-MiniLM-L6-v2', 3. 'sentence-transformers/multi-qa-MiniLM-L6-cos-v1', 4. 'ProsusAI/finbert', 5. 'medicalai/ClinicalBERT', 6. 'sentence-transformers/distiluse-base-multilingual-cased-v2', 7. 'sentence-transformers/all-MiniLM-L12-v2', 8. 'BAAI/bge-small-en-v1.5', 9. 'BAAI/bge-base-en-v1.5', 10. 'taylorAI/bge-micro-v2', 11. 'intfloat/e5-small-v2', 12. 'intfloat/e5-base-v2', 13. 'prajjwal1/bert-tiny', 14. 'thenlper/gte-base', 15. 'thenlper/gte-small', 16. 'TaylorAI/gte-tiny', 17. 'infgrad/stella-base-en-v2’ The steps to see these pre-configured models is as follows from an interactive Python prompt: $ python &gt;&gt;&gt; from omlutils import EmbeddingModel, EmbeddingModelConfig &gt;&gt;&gt; em = EmbeddingModel(model_name=sentence-transformers/all-MiniLM-L6-v2”) &gt;&gt;&gt; emc = EmbeddingModelConfig() &gt;&gt;&gt; emc.show_preconfigured() &gt;&gt;&gt; exit() $ To convert one of these pre-configured models into ONNX file, the steps are as follows: Again, you are using an interactive Python prompt here. For model recalibrations, these steps can be put into a python script that can run on a regular basis. $ cd ~/onnx $ python &gt;&gt;&gt; from omlutils import EmbeddingModel, EmbeddingModelConfig &gt;&gt;&gt; em = EmbeddingModel(model_name=sentence-transformers/all-MiniLM-L6-v2”) &gt;&gt;&gt; em.export2file(all-MiniLM-L6-v2,output_dir=.”) &gt;&gt;&gt; exit() $ When you look in the ~/onnx directory, you will see a ONNX file the matches the name of the pre-configured model. In this example the file name is all-MiniLM-L6-v2.onnx. Summary To round all this out. In the upcoming release of the Oracle Database 23ai, you will have the ability to take an open-source machine learning model and embed the model to the database. Once the model is embedded in the database, you can then use the model to create vectors on existing data or update vectors with these models; enabling a vector database in a secure environment while powering private Retrieval Augmentation Generation (RAG) in diverse envrionments.",
  "author" : {
    "@type" : "Person",
    "name" : "Bobby Curtis",
    "sameAs" : "",
    "url" : "https://rheodata.com/en-us/blog/author/bobby-curtis"
  },
  "dateModified" : "10/11/2025",
  "datePublished" : "10/11/2025",
  "headline" : "Embedding Machine Learning Models in the Oracle Database: Create an ONNX model",
  "image" : {
    "@type" : "ImageObject",
    "height" : 400,
    "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/Imported_Blog_Media/ONNX-embedding-1-1.png",
    "width" : 750
  },
  "mainEntityOfPage" : "https://rheodata.com/en-us/blog/onnx-in-oracle-database",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/RheoData%20-%20Logo%20-%20transparent-1.png"
    },
    "name" : "RheoData",
    "url" : "rheodata.com"
  }
}
```

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "articleBody" : "If you have been following the last few blog posts, this is the final one with regards to setting up similarity search with Oracle’s upcoming vector datatype. This unique datatype enables you to be similarity search within your applications quickly and easily while keeping everything secure behind Oracle standard security of the Oracle database. If you have not keep up with the last few posts, you can go back and review the other three parts. These posts were designed to provide you with the basics of using Oracle’s Vector datatype, updating existing tables, and using similarity search from the command line. Part 1: https://rheodata.com/vector-datatype/ Part 2: https://rheodata.com/oracle-vector-datatype-updating-table-data/ Part 3:https://rheodata.com/similarity-search-oracle-vector-datatype/ In this post, we are going to look at extending Part 3 by creating a simple Flask Application to do the similarity search through a web page. To do this, there had to be a few minor changes to the previously illustrated Python code. Let’s dive in and see how a similarity search can be done via a web page. Prerequisites: Like Part 3, the prerequisites are with additional added for Flask: Oracle Database 23.4 (limited availability) Python 3.11 or later python_oracledb (2.0.0 or later (limited availability) LLM API Key (Cohere) Flask 3.0.2 Werkzeug 3.0.1 With the prerequisites set, we can now start looking at the code that will define the following application (see image below). Python/HTML This time around we are going to look at two different files – HTML and Python. This is what makes up the Flask Application we are using for this simple similarity search. The underlying table being used is the same as Part 3 – vector.video_games_vec. Before we jump into the Python code, we need to define a template for the HTML page (index.html). This is the main page of the application.                   Video Game Search:                                               Besides the CSS information, the key items to review ar the items in curly brackets (). This is how Flask setups and uses items returned from the Python code. If you would like more on Flask and how it works with HTML – check out this page: https://flask.palletsprojects.com/en/3.0.x/ Now for Python … Finally! The python code in this example is similar to the one in Part 3; however, it has been broken down into a few more functions to make it easier to use with Flask. The first thing that needs to be done is import all the required packages for the application to work: import oracledb import cohere import array import time import secrets from flask import Flask, render_template, request, redirect, url_for from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired What you will notice here is the import of Flask and Werkzeug related items. There a good bit of items that needed to be imported but makes the application easier to develop. To keep items simple, we defined the database connection into its own function. This allows us to call for the connection and get the connection in return. This is a simplified function, but keep in mind that this will only work against an Oracle Database 23c (23.4 – Limited Availability). #define database connection function def database_connection():   try:       connection = oracledb.connect(           user=vector”,           password=“”,           dsn=“xxx.xxx.xxx.xxx:1521/freepdb1”           )       print('connected’)       return connection   except:         print('Could not make a connection’) Next, we are going to define how to vectorize the video game title we are going to search for. Breaking this out into separate function allows us to call and return the vector value at anytime within the application. #define LLM embedding model def cohere_vectorize(vInput):   co = cohere.Client(0Yyj8ORoDk6MYjSb8”)   data = vInput   response = co.embed(     texts=[data],       model='embed-english-light-v3.0’,       input_type=“search_query       )   vector_value = response.embeddings[0]     return vector_value The variable “vInput” is the title that we want to vectorize for our search. The last function that we are going to define is a function to vectorize the video game title then turns it into a FLOAT64 vector that can be used with SQL for searching the database. Then return the vector string. def exec_vec(text):       vec = cohere_vectorize(text)       vec2 = array.array(d, vec)         return vec2 Application With the functions we needed defined, we can now setup the application to perform the search of the vector.video_games_vec table. First thing we need to do, is define the application. This done with the following statements: app = Flask(__name__) app.secret_key = secrets.token_hex(16) Then we need to define a class for the form itself: class Form(FlaskForm):   text = StringField('Video Game Search: ', validators=[DataRequired()])     submit = SubmitField('Submit’) Next, tell the application how to route to the page and what cURL functions to use: @app.route('/', methods=('GET', 'POST’)) Lastly, we need to define a function for the index.html page. This is simply called index(). This function sets up the following: calls the form class variables/lists needed SQL statement to use opens the database connection validate the form retrieve the required information closes the database connection The index() function looks as follows: def index():   form = Form()   output_titles = []   output_ids = []   output_genres = []   output_console = []     binds = []   select_stmt = select id, title, genres, console                   from vector.video_games_vec                   order by vector_distance(vg_vec1, :1, DOT), id                   fetch first 5 rows only”     connection = database_connection()   if form.validate_on_submit():       title = exec_vec(form.text.data)       with connection.cursor() as cursor:           for (id, title, genere, console,) in cursor.execute(select_stmt, [title]):               output_ids.append(id)               output_titles.append(title)               output_genres.append(genere)               output_console.append(console)               #print(output_titles)               #put all columns in a single list       binds = list(zip(output_ids, output_titles, output_genres, output_console))         #print(binds)       return render_template('index.html', form=form, output=binds)     connection.close()     return render_template('index.html', form=form, output=None) if __name__ == __main__”:     app.run(debug=True) A couple of key items to point out in this function. The first is the SQL statement. The select statement defines what we are looking for in the vector.video_games_vec table. In this case we are looking for ID, TITLE, GENRES, and CONSOLE. Then we are looking and ordering by the distance between each title by using the VECTOR_DATABASE function using DOT notation, then ordering by ID. Lastly, we are only fetching the first five rows only. When this application executes this SQL statement against the vector.video_games_vec table, we will be using TITLE to find the video game in the table. All rows that are returned are then broken into four different lists. Then the lists are zipped together to give us all the information for the record via the binds list. Lastly, we are telling the application to return the binds list to the output area on the index.html page before closing the connect to the database. You can use this link to see similarity search in action: Video Game Similarity Search Other items to understand You may have noticed that some video games returned more titles than expected. This is because of: We are limiting the result set to the first five rows. This is normal behavior when the result set doesn’t have exactly five of the title. The proximity of the additional titles compared to the title being searched for",
  "author" : {
    "@type" : "Person",
    "name" : "Bobby Curtis",
    "sameAs" : "",
    "url" : "https://rheodata.com/en-us/blog/author/bobby-curtis"
  },
  "dateModified" : "10/11/2025",
  "datePublished" : "10/11/2025",
  "headline" : "Similarity Search with Oracle’s Vector Datatype, Python, and Flask",
  "image" : {
    "@type" : "ImageObject",
    "height" : 400,
    "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/Imported_Blog_Media/similariity-search-flask-1-1024x474-1.png",
    "width" : 750
  },
  "mainEntityOfPage" : "https://rheodata.com/en-us/blog/similarity-search-python-flask",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/RheoData%20-%20Logo%20-%20transparent-1.png"
    },
    "name" : "RheoData",
    "url" : "rheodata.com"
  }
}
```

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "articleBody" : "In my last blog post on Oracle’s Vector data type, I simply showed you how the datatype is used within an Oracle table. In this blog post, we are going to dive a bit deeper and provide some context with it regardiing to updating a table with existing data. To start, we are going to look at an external table that provides data on video games. This external table is only going to be used to pull in the data we want to us. The outline of the external table is: drop table vector.video_games; create table vector.video_games ( Title VARCHAR2(50), Features.Handheld? VARCHAR2(50), Features.Max Players NUMBER, Features.Multiplatform? VARCHAR2(50), Features.Online? VARCHAR2(15), Metadata.Genres VARCHAR2(50), Metadata.Licensed? VARCHAR2(15), Metadata.Publishers VARCHAR2(50), Metadata.Sequel? VARCHAR2(15), Metrics.Review Score NUMBER, Metrics.Sales NUMBER, Metrics.Used Price NUMBER, Release.Console VARCHAR2(50), Release.Rating VARCHAR2(5), Release.Re-release? VARCHAR2(15), Release.Year NUMBER, Length.All PlayStyles.Average NUMBER, Length.All PlayStyles.Leisure NUMBER, Length.All PlayStyles.Median NUMBER, Length.All PlayStyles.Polled NUMBER, Length.All PlayStyles.Rushed NUMBER, Length.Completionists.Average NUMBER, Length.Completionists.Leisure NUMBER, Length.Completionists.Median NUMBER, Length.Completionists.Polled NUMBER, Length.Completionists.Rushed NUMBER, Length.Main + Extras.Average NUMBER, Length.Main + Extras.Leisure NUMBER, Length.Main + Extras.Median NUMBER, Length.Main + Extras.Polled NUMBER, Length.Main + Extras.Rushed NUMBER, Length.Main Story.Average NUMBER, Length.Main Story.Leisure NUMBER, Length.Main Story.Median NUMBER, Length.Main Story.Polled NUMBER, Length.Main Story.Rushed” NUMBER ) ORGANIZATION EXTERNAL ( default directory dir_temp ACCESS PARAMETERS (   RECORDS DELIMITED BY NEWLINE   FIELDS TERMINATED BY ‘,'   OPTIONALLY ENCLOSED BY ‘'   ) LOCATION ('video_games.csv’) ) reject limit unlimited; As you can see, there are a lot data points that we can use. To make this a bit simpler, we are only going to use the first 16 columns. This means we need to create a standard heap table that reference these columns. create table vector.video_games_vec (   title VARCHAR2(50),   handheld VARCHAR2(50),   maxplayers NUMBER,   multiplatform VARCHAR2(50),   availiableonline VARCHAR2(15),   genres VARCHAR2(50),   license VARCHAR2(15),   publishers VARCHAR2(50),   sequel VARCHAR2(15),   reviewscore NUMBER,   usedprice NUMBER,   sales NUMBER,   console VARCHAR2(50),   rating VARCHAR2(5),   rerelease VARCHAR2(15),   rereleaseyear NUMBER ); Notice the difference in table names. The standard heap table has an ending of “vec” compared to the external table. This is to keep our processes separate. At the same time, after we insert data into the heap table, we are only going to use the heap table. Insert data into heap table (vector.video_games_vec) based on the data in the external table (vector.video_games). insert into vector.video_games_vec; select Title”, Features.Handheld?”, Features.Max Players”, Features.Multiplatform?”, Features.Online?”, Metadata.Genres”, Metadata.Licensed?”, Metadata.Publishers, Metadata.Sequel?”, Metrics.Review Score”, Metrics.Sales”, Metrics.Used Price”, Release.Console”, Release.Rating”, Release.Re-release?”, “Release.Year from vector.video_games; In table vector.video_games_vec, we should now have a bit more than 1200 records. select count(*) from vector.video_games_vec; Returns 1209 Now we have a data set to work with. We are going to leave the external table (vector.video_games) in place for additional tests later. Add a vector column In order to use the vector.video_games table for semantic searches, we need to add a column for a vector. Since we do not know the number dimensions for the vectors or the formatting, lets assume that all data will be of any format with an unlimited dimensions. Our alter table command then looks like this: SQL&gt; alter table vector.video_games_vec add (vg_vec VECTOR(*,*)); If we do a describe on the table, we will see the vector: Name Null? Type ---------------- ----- ------------ ID NOT NULL NUMBER(38) TITLE VARCHAR2(50) HANDHELD VARCHAR2(50) MAXPLAYERS NUMBER MULTIPLATFORM VARCHAR2(50) AVAILIABLEONLINE VARCHAR2(15) GENRES VARCHAR2(50) LICENSE VARCHAR2(15) PUBLISHERS VARCHAR2(50) SEQUEL VARCHAR2(15) REVIEWSCORE NUMBER USEDPRICE NUMBER SALES NUMBER CONSOLE VARCHAR2(50) RATING VARCHAR2(5) RERELEASE VARCHAR2(15) RERELEASEYEAR NUMBER VG_VEC VECTOR However, it doesn’t tell us size of the vector. This is limitation in the VSCode interface we are using. If we go to a command prompt, we can run the same commands and see the size of the vector. SQL&gt; desc vector.video_games_vec; Name Null? Type ------------------------------ -------- —————————————— ID NOT NULL NUMBER(38) TITLE VARCHAR2(50) HANDHELD VARCHAR2(50) MAXPLAYERS NUMBER MULTIPLATFORM VARCHAR2(50) AVAILIABLEONLINE VARCHAR2(15) GENRES VARCHAR2(50) LICENSE VARCHAR2(15) PUBLISHERS VARCHAR2(50) SEQUEL VARCHAR2(15) REVIEWSCORE NUMBER USEDPRICE NUMBER SALES NUMBER CONSOLE VARCHAR2(50) RATING VARCHAR2(5) RERELEASE VARCHAR2(15) RERELEASEYEAR NUMBER VG_VEC VECTOR(*,*) When we query the vector.video_games_vec and look for the vector, we will see that no vector information is available. SQL&gt; set linesize 150; SQL&gt; select title, vg_vec from vector.video_games_vec where rownum &lt;=5;        ID TITLE VG_VEC ---------- -------------------------------------------------- ———————————————————————————————————————— 133 Battles of Prince of Persia 134 GripShift 135 Marvel Nemesis: Rise of the Imperfects 136 Scooby-Doo! Unmasked 137 Viewtiful Joe: Double Trouble! At this point, we need a way to update the column with vector embeddings. One approach is that we can create our own vectors, but we will not be doing that in this post. Instead, we are going to use Python and make a call to a Large Language Model (LLM) like Cohere or ChatGPT to get our embeddings. With deciding on using a LLM to embed our table data, the following questions need to be asked: Do we embed the whole row? Do we embed individual columns? For this post, we are going to embed a single column. This column we are going to use is “Title”. To update the vector column for all rows within the table, we need to ensure that a primary key is defined. In our case, the primary key is “ID”. Python To update all the records in the table, we need to loop through all the records and update the record based on the primary key. In this case, the primary key is “ID”. First, we need to import the required Python packages: #Setup imports required import os import sys import array import time import oracledb import cohere Then we need to setup our API key for Cohere. Keep in mind that the testing API key for Cohere can only do ten calls per minute. If you need to do large tables, hundreds plus records, you may need to get a production key. #set Cohere API key api_key = “triZDP9cGrfwtxwb99IgM3hrt3txs co = cohere.Client(api_key) With imports and api key set, we now need to setup a database connection. With python there are multiple ways of making a connection; in this case we are going to define database connection function that can be used later. #define database connection function def database_connection():   try:       connection = oracledb.connect(           user=”,           password=”,           dsn=xxx.xxx.xxx.xxx:1521/”           )       print('connected’)       return connection     except: print('Could not make a connection’) Next, we are defining the SQL statements that are going to be ran to identify the records we want, how to update the vector column, and then select the updated records to confirm that they were updated. These are set as variables within the script as follows: fetch_query = select id, title from vector.video_games_vec where id between 71 and 75 order by id” select_query = select id, title, vg_vec1 from vector.video_games_vec where id between 71 and 75 order by id” sql_update = update vector.video_games_vec set vg_vec1 = :1 where id = :2” Notice that we are using a simple “between” statement with the SQL statements to limit the number of rows. This is only for testing purposes and not to make the script automated. Next, we are going to connect to the database based on the previously defined function. connection = database_connection() Everything we need to update our table is now in place. Using the connection, we are going to setup another cursor for querying the data and then looping through it and update the required rows. with connection.cursor() as query_cursor:   #prepare the select statement     query_cursor.prepare(fetch_query)   #define arrays being used   ids = []   data = []   vec = []   vrows = []     rows_returned = 0   #execute the select statement     query_cursor.execute(fetch_query)   #get all the rows/data returned     rows = query_cursor.fetchall()   #get the number of rows returned     rows_returned = query_cursor.rowcount   print('Got ' + str(rows_returned) + ' rows’)     #print(rows[0])     #Process row into list sets   for row in rows:       ids.append(row[0])       dat = 'query: ' + row[1]         data.append(dat)   #Get length of lists for the ids (in this case 10)     id_len = len(ids)   #Vectorize the data within one interation     for x in range(0, 1):       response = co.embed(           texts=data,           model='embed-english-light-v3.0’,           input_type=“search_query             )         #format and remember vectors for all records returned       for y in range(0, id_len):           vec = response.embeddings[y]           #Set vector to FLOAT32             #vec2 = array.array(f, vec)           #Set vector to FLOAT64           vec2 = array.array(d, vec)           #append add the ids and embeddings to an array             vrows.append([ids[y], vec2])             print(Tuple -&gt;  + str(ids[y]) + ', '+ str(vec))             #Update tuple in table           try:               update_cursor = connection.cursor()               update_cursor.setinputsizes(None, oracledb.DB_TYPE_VECTOR)               update_cursor.execute(sql_update, [vec2, ids[y]])               connection.commit()           except:                 print(Unable to update table\n”) #Select the records that have been updated. try:   select_cursor = connection.cursor()   select_cursor.prepare(select_query)     select_cursor.execute(select_query)   for row in select_cursor:         print(row) except:     print(Cannot select from table”) Once we run this python code, we now have records in the database updated with vectors that are related to the title of the video game. In the next blog post, we will take a look at how to do a semantic search using python and the Oracle Vector Datatype.",
  "author" : {
    "@type" : "Person",
    "name" : "Bobby Curtis",
    "sameAs" : "",
    "url" : "https://rheodata.com/en-us/blog/author/bobby-curtis"
  },
  "dateModified" : "10/11/2025",
  "datePublished" : "10/11/2025",
  "headline" : "Oracle Vector Datatype – Updating table data",
  "image" : {
    "@type" : "ImageObject",
    "height" : 400,
    "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/Imported_Blog_Media/Oracle-Vector-Datatype-Updating-1-1.png",
    "width" : 750
  },
  "mainEntityOfPage" : "https://rheodata.com/en-us/blog/oracle-vector-datatype-updating-table-data",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://50642793.fs1.hubspotusercontent-na1.net/hubfs/50642793/RheoData%20-%20Logo%20-%20transparent-1.png"
    },
    "name" : "RheoData",
    "url" : "rheodata.com"
  }
}
```