1+ from typing import Optional , Union
2+
13import numpy as np
24from openai import AsyncAzureOpenAI , AsyncOpenAI
35from sqlalchemy import Float , Integer , column , select , text
@@ -11,10 +13,10 @@ class PostgresSearcher:
1113 def __init__ (
1214 self ,
1315 db_session : AsyncSession ,
14- openai_embed_client : AsyncOpenAI | AsyncAzureOpenAI ,
15- embed_deployment : str | None , # Not needed for non-Azure OpenAI or for retrieval_mode="text"
16+ openai_embed_client : Union [ AsyncOpenAI , AsyncAzureOpenAI ] ,
17+ embed_deployment : Optional [ str ] , # Not needed for non-Azure OpenAI or for retrieval_mode="text"
1618 embed_model : str ,
17- embed_dimensions : int | None ,
19+ embed_dimensions : Optional [ int ] ,
1820 embedding_column : str ,
1921 ):
2022 self .db_session = db_session
@@ -38,7 +40,7 @@ def build_filter_clause(self, filters) -> tuple[str, str]:
3840 return "" , ""
3941
4042 async def search (
41- self , query_text : str | None , query_vector : list [float ] | list , top : int = 5 , filters : list [dict ] | None = None
43+ self , query_text : Optional [ str ] , query_vector : list [float ], top : int = 5 , filters : Optional [ list [dict ]] = None
4244 ):
4345 filter_clause_where , filter_clause_and = self .build_filter_clause (filters )
4446 table_name = Item .__tablename__
@@ -100,11 +102,11 @@ async def search(
100102
101103 async def search_and_embed (
102104 self ,
103- query_text : str | None = None ,
105+ query_text : Optional [ str ] = None ,
104106 top : int = 5 ,
105107 enable_vector_search : bool = False ,
106108 enable_text_search : bool = False ,
107- filters : list [dict ] | None = None ,
109+ filters : Optional [ list [dict ]] = None ,
108110 ) -> list [Item ]:
109111 """
110112 Search rows by query text. Optionally converts the query text to a vector if enable_vector_search is True.
0 commit comments