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 platform. It is not supported on Microsoft Windows.
  • To size the Vector Pool, 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 fails if there is current vector usage.
    • At the pluggable database (PDB), level VECTOR_MEMORY_SIZE specifies the maximum Vector Pool usage allowed by a PDB. Reducing the parameter value is allowed even if current vector usage exceeds the new quota.
  • Table-Level Support

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

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

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

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

      • External tables
      • 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
  • 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:

      • Vector index creation on non-vector columns (for example, VARCHAR, NUMBER, and so on)
      • Function-based vector index
      • Alter index DDL for vector indexes
      • Local partitioned vector indexes
      • Global partitioned vector indexes
      • Online creatjion of vector indexes
    • INMEMORY NEIGHBOR GRAPH restrictions include:

      • There is no support for INMEMORY NEIGHBOR GRAPH indexes on Oracle RAC.
      • DMLs are not supported on base tables that have an INMEMORY NEIGHBOR GRAPH index.
  • 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.