@mastra/pg 1.34.0-alpha.1 → 1.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-memory-semantic-recall.md +2 -0
- package/dist/docs/references/reference-rag-retrieval.md +5 -1
- package/dist/index.cjs +24 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -23
- package/dist/index.js.map +1 -1
- package/dist/vector/index.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1080,42 +1080,43 @@ var PgVector = class extends MastraVector {
|
|
|
1080
1080
|
const scoreExpr = ops.scoreExpr(distanceExpr);
|
|
1081
1081
|
const filterClause = filterQuery.trim().replace(/^WHERE\s+/i, "");
|
|
1082
1082
|
const hasFilter = filterClause.length > 0;
|
|
1083
|
-
const useIndexedOrder = indexInfo.type === "hnsw" && !hasFilter && minScore <= 0;
|
|
1084
1083
|
const namespaceParam = filterValues.length + 1;
|
|
1085
|
-
const
|
|
1084
|
+
const queryValues = [...filterValues, namespace];
|
|
1085
|
+
const selectColumns = `vector_id as id, ${scoreExpr} as score, metadata${includeVector ? ", embedding" : ""}`;
|
|
1086
|
+
const whereClause = `WHERE namespace = $${namespaceParam}${filterClause ? ` AND (${filterClause})` : ""}`;
|
|
1087
|
+
const useIndexedOrder = indexInfo.type === "hnsw" && (!hasFilter || this.supportsIterativeScan());
|
|
1088
|
+
let rows;
|
|
1089
|
+
if (useIndexedOrder) {
|
|
1090
|
+
const indexedQuery = `
|
|
1086
1091
|
WITH vector_scores AS (
|
|
1087
|
-
SELECT
|
|
1088
|
-
vector_id as id,
|
|
1089
|
-
${scoreExpr} as score,
|
|
1090
|
-
metadata
|
|
1091
|
-
${includeVector ? ", embedding" : ""}
|
|
1092
|
+
SELECT ${selectColumns}
|
|
1092
1093
|
FROM ${tableName}
|
|
1093
|
-
|
|
1094
|
+
${whereClause}
|
|
1094
1095
|
ORDER BY ${distanceExpr}
|
|
1095
1096
|
LIMIT $2
|
|
1096
1097
|
)
|
|
1097
|
-
SELECT
|
|
1098
|
+
SELECT *, score > $1 AS above_min_score
|
|
1098
1099
|
FROM vector_scores
|
|
1099
|
-
|
|
1100
|
-
|
|
1100
|
+
ORDER BY score DESC`;
|
|
1101
|
+
const candidates = (await client.query(indexedQuery, queryValues)).rows;
|
|
1102
|
+
if (candidates.length >= topK) rows = candidates.filter((row) => row.above_min_score);
|
|
1103
|
+
}
|
|
1104
|
+
if (!rows) {
|
|
1105
|
+
const exactQuery = `
|
|
1101
1106
|
WITH vector_scores AS (
|
|
1102
|
-
SELECT
|
|
1103
|
-
vector_id as id,
|
|
1104
|
-
${scoreExpr} as score,
|
|
1105
|
-
metadata
|
|
1106
|
-
${includeVector ? ", embedding" : ""}
|
|
1107
|
+
SELECT ${selectColumns}
|
|
1107
1108
|
FROM ${tableName}
|
|
1108
|
-
|
|
1109
|
-
${filterClause ? `AND (${filterClause})` : ""}
|
|
1109
|
+
${whereClause}
|
|
1110
1110
|
)
|
|
1111
1111
|
SELECT *
|
|
1112
1112
|
FROM vector_scores
|
|
1113
1113
|
WHERE score > $1
|
|
1114
1114
|
ORDER BY score DESC
|
|
1115
1115
|
LIMIT $2`;
|
|
1116
|
-
|
|
1116
|
+
rows = (await client.query(exactQuery, queryValues)).rows;
|
|
1117
|
+
}
|
|
1117
1118
|
await client.query("COMMIT");
|
|
1118
|
-
return
|
|
1119
|
+
return rows.map(({ id, score, metadata, embedding }) => ({
|
|
1119
1120
|
id,
|
|
1120
1121
|
score,
|
|
1121
1122
|
metadata,
|
|
@@ -1382,7 +1383,7 @@ var PgVector = class extends MastraVector {
|
|
|
1382
1383
|
indexConfig,
|
|
1383
1384
|
vectorType
|
|
1384
1385
|
}, client);
|
|
1385
|
-
if (metadataIndexes?.length) await this.createMetadataIndexes(tableName, indexName, metadataIndexes);
|
|
1386
|
+
if (metadataIndexes?.length) await this.createMetadataIndexes(client, tableName, indexName, metadataIndexes);
|
|
1386
1387
|
} catch (error) {
|
|
1387
1388
|
this.createdIndexes.delete(indexName);
|
|
1388
1389
|
this.namespaceReadyIndexes.delete(indexName);
|
|
@@ -1532,13 +1533,13 @@ var PgVector = class extends MastraVector {
|
|
|
1532
1533
|
await client.query(indexSQL);
|
|
1533
1534
|
});
|
|
1534
1535
|
}
|
|
1535
|
-
async createMetadataIndexes(tableName, indexName, metadataFields) {
|
|
1536
|
+
async createMetadataIndexes(client, tableName, indexName, metadataFields) {
|
|
1536
1537
|
const hasher = await this.hasher;
|
|
1537
1538
|
for (const field of metadataFields) {
|
|
1538
1539
|
const fieldHash = hasher.h32(field).toString(16);
|
|
1539
1540
|
const metadataIdxName = `"${indexName.slice(0, 55 - fieldHash.length)}_md_${fieldHash}_idx"`;
|
|
1540
1541
|
const escapedField = field.replace(/'/g, "''");
|
|
1541
|
-
await
|
|
1542
|
+
await client.query(`
|
|
1542
1543
|
CREATE INDEX CONCURRENTLY IF NOT EXISTS ${metadataIdxName}
|
|
1543
1544
|
ON ${tableName} ((metadata->>'${escapedField}'))
|
|
1544
1545
|
`);
|