@@ -133,6 +133,19 @@ async def vs_custom(self, engine):
133133 yield vs
134134 await engine ._aexecute (f'DROP TABLE IF EXISTS "{ CUSTOM_TABLE } "' )
135135
136+ async def test_init_with_constructor (self , engine ):
137+ with pytest .raises (Exception ):
138+ PostgresVectorStore (
139+ engine ,
140+ embedding_service = embeddings_service ,
141+ table_name = CUSTOM_TABLE ,
142+ id_column = "myid" ,
143+ content_column = "noname" ,
144+ embedding_column = "myembedding" ,
145+ metadata_columns = ["page" , "source" ],
146+ metadata_json_column = "mymeta" ,
147+ )
148+
136149 async def test_post_init (self , engine ):
137150 with pytest .raises (ValueError ):
138151 await PostgresVectorStore .create (
@@ -265,4 +278,60 @@ async def test_add_texts(self, engine_sync, vs_sync):
265278 results = engine_sync ._fetch (f'SELECT * FROM "{ DEFAULT_TABLE_SYNC } "' )
266279 assert len (results ) == 6
267280
281+ async def test_ignore_metadata_columns (self , vs_custom ):
282+ column_to_ignore = "source"
283+ vs = await PostgresVectorStore .create (
284+ vs_custom .engine ,
285+ embedding_service = embeddings_service ,
286+ table_name = CUSTOM_TABLE ,
287+ ignore_metadata_columns = [column_to_ignore ],
288+ id_column = "myid" ,
289+ content_column = "mycontent" ,
290+ embedding_column = "myembedding" ,
291+ metadata_json_column = "mymeta" ,
292+ )
293+ assert column_to_ignore not in vs .metadata_columns
294+
295+ async def test_create_vectorstore_with_invalid_parameters (self , vs_custom ):
296+ with pytest .raises (ValueError ):
297+ await PostgresVectorStore .create (
298+ vs_custom .engine ,
299+ embedding_service = embeddings_service ,
300+ table_name = CUSTOM_TABLE ,
301+ id_column = "myid" ,
302+ content_column = "mycontent" ,
303+ embedding_column = "myembedding" ,
304+ metadata_columns = ["random_column" ], # invalid metadata column
305+ )
306+ with pytest .raises (ValueError ):
307+ await PostgresVectorStore .create (
308+ vs_custom .engine ,
309+ embedding_service = embeddings_service ,
310+ table_name = CUSTOM_TABLE ,
311+ id_column = "myid" ,
312+ content_column = "langchain_id" , # invalid content column type
313+ embedding_column = "myembedding" ,
314+ metadata_columns = ["random_column" ],
315+ )
316+ with pytest .raises (ValueError ):
317+ await PostgresVectorStore .create (
318+ vs_custom .engine ,
319+ embedding_service = embeddings_service ,
320+ table_name = CUSTOM_TABLE ,
321+ id_column = "myid" ,
322+ content_column = "mycontent" ,
323+ embedding_column = "random_column" , # invalid embedding column
324+ metadata_columns = ["random_column" ],
325+ )
326+ with pytest .raises (ValueError ):
327+ await PostgresVectorStore .create (
328+ vs_custom .engine ,
329+ embedding_service = embeddings_service ,
330+ table_name = CUSTOM_TABLE ,
331+ id_column = "myid" ,
332+ content_column = "mycontent" ,
333+ embedding_column = "langchain_id" , # invalid embedding column data type
334+ metadata_columns = ["random_column" ],
335+ )
336+
268337 # Need tests for store metadata=False
0 commit comments