Restrictions for Oracle AI Vector Search

The following are restrictions for Oracle AI Vector Search in Oracle Database 23ai.

  • The feature Open Neural Network Exchange (ONNX) is only supported on the x86-64 Linux and Linux for Arm (aarch64) platforms. ONNX is not supported on Microsoft Windows.
  • To size the Vector Pool manually, use the VECTOR_MEMORY_SIZE initialization parameter. You can dynamically modify this parameter at the following levels:
    • At the multitenant container database (CDB) level, VECTOR_MEMORY_SIZE specifies the current size of the Vector Pool. Reducing the parameter value evicts vector usage that exceeds the new size.
    • At the pluggable database (PDB), level VECTOR_MEMORY_SIZE specifies the maximum Vector Pool usage allowed by a PDB. Reducing the parameter value evicts vector usage that exceeds the new quota.

    Note:

    When VECTOR_MEMORY_SIZE is set to 1 and sga_target is greater than 0 upon CDB initialization, HNSW index creation will automatically grow the vector memory pool to satisfy the new index. In this configuration, the PDB VECTOR_MEMORY_SIZE value will default to 0 and cannot be changed using the ALTER SYSTEM command.
  • Table-Level Support

    • Truncate or move table operations are supported but will mark global vector indexes unusable.

    • Partition management (PMOP) operations (for example, DROP, TRUNCATE, EXCHANGE, MERGE, MOVE, COALESCE, and SPLIT) are supported but will mark global vector indexes unusable.

    • Adding a hash partition will also mark global vector indexes unusable. However, adding a range or list partition will not mark global vector indexes unusable.

    • Vector columns are not supported either in or as the following:

      • Index organized tables (IOTs) (neither as a primary key or as a non-key column)
      • Clusters or cluster tables
      • Global temporary tables
      • Blockchain tables
      • Immutable tables
      • Partitioning and subpartitioning keys
      • Primary and foreign keys
      • Unique and check constraints
      • Default value
      • Modify column
      • Manual segment space management (MSSM) tablespace (only a SYS user can create vectors as BasicFiles in MSSM tablespace)
      • Continuous Query Notification (CQN) queries
      • Non-vector indexes such as B-tree, bitmap, reverse key, text, spatial indexes
    • For local Inverted Flat File (IVF) indexes:
      • ADD non-hash vector indexes are supported but will mark vector indexes unusable.
      • All other PMOP operations are not supported and return an error when attempted.
  • Type-Level Support

    Vector column specification does not support the following:

    • Encryption clause
    • SecureFiles storage clause
  • Query-Level Support

    • The partition row-limiting clause does not use vector indexes.

    • There is limited cost-based optimization support for vector indexes.

    • SQL constructs with vector columns do not support the following:

      • Distinct, Count Distinct
      • Order By, Group By
      • Join condition
      • Comparison operators (for example, >, <, =)
  • Index-Level Support

    • Vector indexes do not support the following:

      • External tables
      • IOTs
      • Clusters or cluster tables
      • Global temporary tables
      • Blockchain tables
      • Immutable tables
      • Materialized views
    • There is no support for the following:

      • Function-based vector index
      • Alter index DDL for vector indexes
      • Online creation of vector indexes
  • The latest python-oracledb, node-oracledb, JDBC, ODP.NET, and OCI drivers enable native binds.
    • All other SQL drivers need to use CLOBs or VARCHAR2 for binds and for vector definitions.
    • Oracle clients from release 19c and release 21c will see vectors as CLOBs.
  • Integration with the following is not supported:
    • Vector indexes with transportable tablespaces are not supported with Oracle Data Pump.
    • Oracle Database Advanced Queuing
    • Oracle Database Gateways
  • A maximum of 65535 dimensions is supported.
  • Data redaction is not supported for the VECTOR data type. Specifically, you cannot:
    • Add a data redaction policy on a vector column.
    • Alter a table to modify a column to the VECTOR data type if the column has a redaction policy defined on it.