From 5da3e3cc3e62efbf9894f4eb46a6e3958d15ab35 Mon Sep 17 00:00:00 2001 From: Darien Kindlund Date: Sun, 4 Feb 2024 12:27:18 -0500 Subject: [PATCH 1/5] Adding proper TLS/SSL support to poolOptions so that the similaritySearchVectorWithScore function actually connects to Postgres via TLS/SSL when specified in the additionalConfig. --- packages/components/nodes/vectorstores/Postgres/Postgres.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/components/nodes/vectorstores/Postgres/Postgres.ts b/packages/components/nodes/vectorstores/Postgres/Postgres.ts index 4e8bae32..375728e8 100644 --- a/packages/components/nodes/vectorstores/Postgres/Postgres.ts +++ b/packages/components/nodes/vectorstores/Postgres/Postgres.ts @@ -253,7 +253,8 @@ const similaritySearchVectorWithScore = async ( port: postgresConnectionOptions.port, user: postgresConnectionOptions.username, password: postgresConnectionOptions.password, - database: postgresConnectionOptions.database + database: postgresConnectionOptions.database, + ssl: postgresConnectionOptions.extra?.ssl } const pool = new Pool(poolOptions) const conn = await pool.connect() From e110a49a32a4423e7d0127bd1f31f6995f84cdf0 Mon Sep 17 00:00:00 2001 From: Darien Kindlund Date: Thu, 8 Feb 2024 10:46:30 -0500 Subject: [PATCH 2/5] Migrating all TLS/SSL settings into additionalConfig so that there is consistency in how every function connects with Postgres in the same manner. --- .../nodes/vectorstores/Postgres/Postgres.ts | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/packages/components/nodes/vectorstores/Postgres/Postgres.ts b/packages/components/nodes/vectorstores/Postgres/Postgres.ts index 375728e8..78e9cd75 100644 --- a/packages/components/nodes/vectorstores/Postgres/Postgres.ts +++ b/packages/components/nodes/vectorstores/Postgres/Postgres.ts @@ -60,13 +60,6 @@ class Postgres_VectorStores implements INode { name: 'database', type: 'string' }, - { - label: 'SSL Connection', - name: 'sslConnection', - type: 'boolean', - default: false, - optional: false - }, { label: 'Port', name: 'port', @@ -124,7 +117,6 @@ class Postgres_VectorStores implements INode { const docs = nodeData.inputs?.document as Document[] const embeddings = nodeData.inputs?.embeddings as Embeddings const additionalConfig = nodeData.inputs?.additionalConfig as string - const sslConnection = nodeData.inputs?.sslConnection as boolean let additionalConfiguration = {} if (additionalConfig) { @@ -143,7 +135,6 @@ class Postgres_VectorStores implements INode { username: user, password: password, database: nodeData.inputs?.database as string, - ssl: sslConnection } const args = { @@ -248,15 +239,7 @@ const similaritySearchVectorWithScore = async ( ORDER BY "_distance" ASC LIMIT $3;` - const poolOptions = { - host: postgresConnectionOptions.host, - port: postgresConnectionOptions.port, - user: postgresConnectionOptions.username, - password: postgresConnectionOptions.password, - database: postgresConnectionOptions.database, - ssl: postgresConnectionOptions.extra?.ssl - } - const pool = new Pool(poolOptions) + const pool = new Pool(postgresConnectionOptions) const conn = await pool.connect() const documents = await conn.query(queryString, [embeddingString, _filter, k]) From 9af4eaaa8c5a23e0421213bb9c82e49ff2bb2ee6 Mon Sep 17 00:00:00 2001 From: Darien Kindlund Date: Thu, 8 Feb 2024 10:53:33 -0500 Subject: [PATCH 3/5] Fixing linting issues. --- packages/components/nodes/vectorstores/Postgres/Postgres.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/components/nodes/vectorstores/Postgres/Postgres.ts b/packages/components/nodes/vectorstores/Postgres/Postgres.ts index 78e9cd75..5c5ef813 100644 --- a/packages/components/nodes/vectorstores/Postgres/Postgres.ts +++ b/packages/components/nodes/vectorstores/Postgres/Postgres.ts @@ -134,7 +134,7 @@ class Postgres_VectorStores implements INode { port: nodeData.inputs?.port as number, username: user, password: password, - database: nodeData.inputs?.database as string, + database: nodeData.inputs?.database as string } const args = { From 4a75396325d4bcba3aa589a5fc41e3912cbd3ee4 Mon Sep 17 00:00:00 2001 From: Darien Kindlund Date: Thu, 8 Feb 2024 11:26:45 -0500 Subject: [PATCH 4/5] So apparently TypeORMVectorStore requires the field 'username' while Pool expects it to be 'user'. Need to populate both to avoid error messages. --- packages/components/nodes/vectorstores/Postgres/Postgres.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/components/nodes/vectorstores/Postgres/Postgres.ts b/packages/components/nodes/vectorstores/Postgres/Postgres.ts index 5c5ef813..b3cc7918 100644 --- a/packages/components/nodes/vectorstores/Postgres/Postgres.ts +++ b/packages/components/nodes/vectorstores/Postgres/Postgres.ts @@ -189,7 +189,8 @@ class Postgres_VectorStores implements INode { type: 'postgres', host: nodeData.inputs?.host as string, port: nodeData.inputs?.port as number, - username: user, + username: user, // Required by TypeORMVectorStore + user: user, // Required by Pool in similaritySearchVectorWithScore password: password, database: nodeData.inputs?.database as string } From 907d5c7ef7a0124d6d4a3a44d33db521fcd5b49a Mon Sep 17 00:00:00 2001 From: Darien Kindlund Date: Thu, 8 Feb 2024 12:06:50 -0500 Subject: [PATCH 5/5] Bumping version since this will change might break legacy Postgres chatflows that used TLS/SSL. This will help users remind them to upgrade their corresponding nodes. --- packages/components/nodes/vectorstores/Postgres/Postgres.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/components/nodes/vectorstores/Postgres/Postgres.ts b/packages/components/nodes/vectorstores/Postgres/Postgres.ts index b3cc7918..be7784cc 100644 --- a/packages/components/nodes/vectorstores/Postgres/Postgres.ts +++ b/packages/components/nodes/vectorstores/Postgres/Postgres.ts @@ -24,7 +24,7 @@ class Postgres_VectorStores implements INode { constructor() { this.label = 'Postgres' this.name = 'postgres' - this.version = 2.0 + this.version = 3.0 this.type = 'Postgres' this.icon = 'postgres.svg' this.category = 'Vector Stores'