langchain-ai / langchain-postgres

LangChain abstractions backed by Postgres Backend
MIT License
66 stars 22 forks source link

`CREATE EXTENSION` fails with Azure Cosmos DB for PostgreSQL #35

Open joshuasundance-swca opened 2 months ago

joshuasundance-swca commented 2 months ago

The SQL for enabling the vector extension is hardcoded at https://github.com/langchain-ai/langchain-postgres/blob/07053067c7013b4b57c035f6caa94b2b63bfe404/langchain_postgres/vectorstores.py#L344

But when using Azure Cosmos DB for PostgreSQL, it's necessary to use SELECT create_extension('vector');

From relevant docs:

If CREATE EXTENSION fails with a permission denied error, try the create_extension() function instead. For instance:

SELECT create_extension('postgis');

To remove an extension installed this way, use drop_extension().

The same applies to pgvector in the same context.

I might propose a parameter that allows the user to define the create extension statement, or choose from a list of predefined options if that approach seems better. Currently, of course, the user can create the extension first and then use create_extension=False.

eyurtsev commented 2 months ago

Feel free to open a PR to try to parameterize