File tree Expand file tree Collapse file tree
src/llama_stack/providers/remote/vector_io/oci Expand file tree Collapse file tree Original file line number Diff line number Diff line change 55# the root directory of this source tree.
66
77import heapq
8+ import importlib
89import json
910from array import array
1011from typing import Any
1112
1213import numpy as np
13- import oracledb
1414from numpy .typing import NDArray
1515
1616from llama_stack .core .storage .kvstore import kvstore_impl
5353OPENAI_VECTOR_STORES_FILES_CONTENTS_PREFIX = f"openai_vector_stores_files_contents:oci26ai:{ VERSION } ::"
5454
5555
56+ def _load_oracledb () -> Any :
57+ try :
58+ return importlib .import_module ("oracledb" )
59+ except ImportError as e :
60+ raise ImportError ("Failed to import oracledb. Install the OCI extra to use the OCI vector IO provider." ) from e
61+
62+
5663def normalize_embedding (embedding : np .typing .NDArray ) -> np .typing .NDArray :
5764 """
5865 Normalize an embedding vector to unit length (L2 norm).
@@ -424,7 +431,7 @@ async def delete(self):
424431 with self .connection .cursor () as cursor :
425432 cursor .execute (f"DROP TABLE IF EXISTS { self .table_name } " )
426433 logger .info ("Dropped table: {self.table_name}" )
427- except oracledb .DatabaseError as e :
434+ except _load_oracledb () .DatabaseError as e :
428435 logger .error (f"Error dropping table { self .table_name } : { e } " )
429436 raise
430437
@@ -466,6 +473,7 @@ async def initialize(self) -> None:
466473 self .kvstore = await kvstore_impl (self .config .persistence )
467474 await self .initialize_openai_vector_stores ()
468475
476+ oracledb = _load_oracledb ()
469477 try :
470478 self .connection = oracledb .connect (
471479 user = self .config .user ,
You can’t perform that action at this time.
0 commit comments