@mastra/pinecone 0.1.6-alpha.1 → 0.1.6-alpha.3
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/.turbo/turbo-build.log +11 -6
- package/CHANGELOG.md +25 -0
- package/README.md +12 -12
- package/dist/_tsup-dts-rollup.d.cts +33 -0
- package/dist/_tsup-dts-rollup.d.ts +12 -8
- package/dist/index.cjs +184 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.js +13 -8
- package/package.json +7 -3
- package/src/vector/filter.ts +5 -5
- package/src/vector/index.test.ts +416 -160
- package/src/vector/index.ts +28 -25
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
|
|
2
|
-
> @mastra/pinecone@0.1.6-alpha.
|
|
3
|
-
> tsup src/index.ts --format esm --experimental-dts --clean --treeshake
|
|
2
|
+
> @mastra/pinecone@0.1.6-alpha.3 build /home/runner/work/mastra/mastra/stores/pinecone
|
|
3
|
+
> tsup src/index.ts --format esm,cjs --experimental-dts --clean --treeshake
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
6
6
|
[34mCLI[39m Using tsconfig: tsconfig.json
|
|
7
7
|
[34mCLI[39m tsup v8.3.6
|
|
8
8
|
[34mTSC[39m Build start
|
|
9
|
-
[32mTSC[39m ⚡️ Build success in
|
|
9
|
+
[32mTSC[39m ⚡️ Build success in 6185ms
|
|
10
10
|
[34mDTS[39m Build start
|
|
11
11
|
[34mCLI[39m Target: es2022
|
|
12
12
|
Analysis will use the bundled TypeScript version 5.7.3
|
|
13
13
|
[36mWriting package typings: /home/runner/work/mastra/mastra/stores/pinecone/dist/_tsup-dts-rollup.d.ts[39m
|
|
14
|
-
|
|
14
|
+
Analysis will use the bundled TypeScript version 5.7.3
|
|
15
|
+
[36mWriting package typings: /home/runner/work/mastra/mastra/stores/pinecone/dist/_tsup-dts-rollup.d.cts[39m
|
|
16
|
+
[32mDTS[39m ⚡️ Build success in 8479ms
|
|
15
17
|
[34mCLI[39m Cleaning output folder
|
|
16
18
|
[34mESM[39m Build start
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
+
[34mCJS[39m Build start
|
|
20
|
+
[32mCJS[39m [1mdist/index.cjs [22m[32m6.12 KB[39m
|
|
21
|
+
[32mCJS[39m ⚡️ Build success in 461ms
|
|
22
|
+
[32mESM[39m [1mdist/index.js [22m[32m6.08 KB[39m
|
|
23
|
+
[32mESM[39m ⚡️ Build success in 562ms
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @mastra/pinecone
|
|
2
2
|
|
|
3
|
+
## 0.1.6-alpha.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 0fd78ac: Update vector store functions to use object params
|
|
8
|
+
- fd14a3f: Updating filter location from @mastra/core/filter to @mastra/core/vector/filter
|
|
9
|
+
- c4fdac3: Updated tests for upstash and astra
|
|
10
|
+
- 4d4e1e1: Updated vector tests and pinecone
|
|
11
|
+
- bb4f447: Add support for commonjs
|
|
12
|
+
- Updated dependencies [0fd78ac]
|
|
13
|
+
- Updated dependencies [0d25b75]
|
|
14
|
+
- Updated dependencies [fd14a3f]
|
|
15
|
+
- Updated dependencies [3f369a2]
|
|
16
|
+
- Updated dependencies [4d4e1e1]
|
|
17
|
+
- Updated dependencies [bb4f447]
|
|
18
|
+
- @mastra/core@0.4.3-alpha.3
|
|
19
|
+
|
|
20
|
+
## 0.1.6-alpha.2
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies [2512a93]
|
|
25
|
+
- Updated dependencies [e62de74]
|
|
26
|
+
- @mastra/core@0.4.3-alpha.2
|
|
27
|
+
|
|
3
28
|
## 0.1.6-alpha.1
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -19,21 +19,21 @@ const vectorStore = new PineconeVector(
|
|
|
19
19
|
);
|
|
20
20
|
|
|
21
21
|
// Create a new index
|
|
22
|
-
await vectorStore.createIndex('my-index', 1536, 'cosine');
|
|
22
|
+
await vectorStore.createIndex({ indexName: 'my-index', dimension: 1536, metric: 'cosine' });
|
|
23
23
|
|
|
24
24
|
// Add vectors
|
|
25
25
|
const vectors = [[0.1, 0.2, ...], [0.3, 0.4, ...]];
|
|
26
26
|
const metadata = [{ text: 'doc1' }, { text: 'doc2' }];
|
|
27
|
-
const ids = await vectorStore.upsert('my-index', vectors, metadata);
|
|
27
|
+
const ids = await vectorStore.upsert({ indexName: 'my-index', vectors, metadata });
|
|
28
28
|
|
|
29
29
|
// Query vectors
|
|
30
|
-
const results = await vectorStore.query(
|
|
31
|
-
'my-index',
|
|
32
|
-
[0.1, 0.2, ...],
|
|
33
|
-
10, // topK
|
|
34
|
-
{ text: { $eq: 'doc1' } }, // optional filter
|
|
35
|
-
false // includeValues
|
|
36
|
-
);
|
|
30
|
+
const results = await vectorStore.query({
|
|
31
|
+
indexName: 'my-index',
|
|
32
|
+
queryVector: [0.1, 0.2, ...],
|
|
33
|
+
topK: 10, // topK
|
|
34
|
+
filter: { text: { $eq: 'doc1' } }, // optional filter
|
|
35
|
+
includeVector: false, // includeValues
|
|
36
|
+
});
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
## Configuration
|
|
@@ -59,9 +59,9 @@ Optional:
|
|
|
59
59
|
|
|
60
60
|
## Methods
|
|
61
61
|
|
|
62
|
-
- `createIndex(indexName, dimension, metric?)`: Create a new index
|
|
63
|
-
- `upsert(indexName, vectors, metadata?, ids?)`: Add or update vectors
|
|
64
|
-
- `query(indexName, queryVector, topK?, filter?, includeVector?)`: Search for similar vectors
|
|
62
|
+
- `createIndex({indexName, dimension, metric?})`: Create a new index
|
|
63
|
+
- `upsert({indexName, vectors, metadata?, ids?})`: Add or update vectors
|
|
64
|
+
- `query({indexName, queryVector, topK?, filter?, includeVector?})`: Search for similar vectors
|
|
65
65
|
- `listIndexes()`: List all indexes
|
|
66
66
|
- `describeIndex(indexName)`: Get index statistics
|
|
67
67
|
- `deleteIndex(indexName)`: Delete an index
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BaseFilterTranslator } from '@mastra/core/vector/filter';
|
|
2
|
+
import type { CreateIndexParams } from '@mastra/core/vector';
|
|
3
|
+
import type { IndexStats } from '@mastra/core/vector';
|
|
4
|
+
import { MastraVector } from '@mastra/core/vector';
|
|
5
|
+
import type { OperatorSupport } from '@mastra/core/vector/filter';
|
|
6
|
+
import type { ParamsToArgs } from '@mastra/core/vector';
|
|
7
|
+
import type { QueryResult } from '@mastra/core/vector';
|
|
8
|
+
import type { QueryVectorParams } from '@mastra/core/vector';
|
|
9
|
+
import type { UpsertVectorParams } from '@mastra/core/vector';
|
|
10
|
+
import type { VectorFilter } from '@mastra/core/vector/filter';
|
|
11
|
+
|
|
12
|
+
export declare class PineconeFilterTranslator extends BaseFilterTranslator {
|
|
13
|
+
protected getSupportedOperators(): OperatorSupport;
|
|
14
|
+
translate(filter?: VectorFilter): VectorFilter;
|
|
15
|
+
private translateNode;
|
|
16
|
+
private translateOperator;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare class PineconeVector extends MastraVector {
|
|
20
|
+
private client;
|
|
21
|
+
constructor(apiKey: string, environment?: string);
|
|
22
|
+
createIndex(...args: ParamsToArgs<CreateIndexParams>): Promise<void>;
|
|
23
|
+
upsert(...args: ParamsToArgs<UpsertVectorParams>): Promise<string[]>;
|
|
24
|
+
transformFilter(filter?: VectorFilter): VectorFilter;
|
|
25
|
+
query(...args: ParamsToArgs<QueryVectorParams>): Promise<QueryResult[]>;
|
|
26
|
+
listIndexes(): Promise<string[]>;
|
|
27
|
+
describeIndex(indexName: string): Promise<IndexStats>;
|
|
28
|
+
deleteIndex(indexName: string): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
export { PineconeVector }
|
|
31
|
+
export { PineconeVector as PineconeVector_alias_1 }
|
|
32
|
+
|
|
33
|
+
export { }
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { BaseFilterTranslator } from '@mastra/core/filter';
|
|
2
|
-
import type {
|
|
1
|
+
import { BaseFilterTranslator } from '@mastra/core/vector/filter';
|
|
2
|
+
import type { CreateIndexParams } from '@mastra/core/vector';
|
|
3
3
|
import type { IndexStats } from '@mastra/core/vector';
|
|
4
4
|
import { MastraVector } from '@mastra/core/vector';
|
|
5
|
-
import type { OperatorSupport } from '@mastra/core/filter';
|
|
5
|
+
import type { OperatorSupport } from '@mastra/core/vector/filter';
|
|
6
|
+
import type { ParamsToArgs } from '@mastra/core/vector';
|
|
6
7
|
import type { QueryResult } from '@mastra/core/vector';
|
|
8
|
+
import type { QueryVectorParams } from '@mastra/core/vector';
|
|
9
|
+
import type { UpsertVectorParams } from '@mastra/core/vector';
|
|
10
|
+
import type { VectorFilter } from '@mastra/core/vector/filter';
|
|
7
11
|
|
|
8
12
|
export declare class PineconeFilterTranslator extends BaseFilterTranslator {
|
|
9
13
|
protected getSupportedOperators(): OperatorSupport;
|
|
10
|
-
translate(filter?:
|
|
14
|
+
translate(filter?: VectorFilter): VectorFilter;
|
|
11
15
|
private translateNode;
|
|
12
16
|
private translateOperator;
|
|
13
17
|
}
|
|
@@ -15,10 +19,10 @@ export declare class PineconeFilterTranslator extends BaseFilterTranslator {
|
|
|
15
19
|
declare class PineconeVector extends MastraVector {
|
|
16
20
|
private client;
|
|
17
21
|
constructor(apiKey: string, environment?: string);
|
|
18
|
-
createIndex(
|
|
19
|
-
upsert(
|
|
20
|
-
transformFilter(filter?:
|
|
21
|
-
query(
|
|
22
|
+
createIndex(...args: ParamsToArgs<CreateIndexParams>): Promise<void>;
|
|
23
|
+
upsert(...args: ParamsToArgs<UpsertVectorParams>): Promise<string[]>;
|
|
24
|
+
transformFilter(filter?: VectorFilter): VectorFilter;
|
|
25
|
+
query(...args: ParamsToArgs<QueryVectorParams>): Promise<QueryResult[]>;
|
|
22
26
|
listIndexes(): Promise<string[]>;
|
|
23
27
|
describeIndex(indexName: string): Promise<IndexStats>;
|
|
24
28
|
deleteIndex(indexName: string): Promise<void>;
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vector = require('@mastra/core/vector');
|
|
4
|
+
var pinecone = require('@pinecone-database/pinecone');
|
|
5
|
+
var filter = require('@mastra/core/vector/filter');
|
|
6
|
+
|
|
7
|
+
// src/vector/index.ts
|
|
8
|
+
var PineconeFilterTranslator = class extends filter.BaseFilterTranslator {
|
|
9
|
+
getSupportedOperators() {
|
|
10
|
+
return {
|
|
11
|
+
...filter.BaseFilterTranslator.DEFAULT_OPERATORS,
|
|
12
|
+
logical: ["$and", "$or"],
|
|
13
|
+
array: ["$in", "$all", "$nin"],
|
|
14
|
+
element: ["$exists"],
|
|
15
|
+
regex: [],
|
|
16
|
+
custom: []
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
translate(filter) {
|
|
20
|
+
if (this.isEmpty(filter)) return filter;
|
|
21
|
+
this.validateFilter(filter);
|
|
22
|
+
return this.translateNode(filter);
|
|
23
|
+
}
|
|
24
|
+
translateNode(node, currentPath = "") {
|
|
25
|
+
if (this.isRegex(node)) {
|
|
26
|
+
throw new Error("Regex is not supported in Pinecone");
|
|
27
|
+
}
|
|
28
|
+
if (this.isPrimitive(node)) return this.normalizeComparisonValue(node);
|
|
29
|
+
if (Array.isArray(node)) return { $in: this.normalizeArrayValues(node) };
|
|
30
|
+
const entries = Object.entries(node);
|
|
31
|
+
const firstEntry = entries[0];
|
|
32
|
+
if (entries.length === 1 && firstEntry && this.isOperator(firstEntry[0])) {
|
|
33
|
+
const [operator, value] = firstEntry;
|
|
34
|
+
const translated = this.translateOperator(operator, value, currentPath);
|
|
35
|
+
return this.isLogicalOperator(operator) ? { [operator]: translated } : translated;
|
|
36
|
+
}
|
|
37
|
+
const result = {};
|
|
38
|
+
for (const [key, value] of entries) {
|
|
39
|
+
const newPath = currentPath ? `${currentPath}.${key}` : key;
|
|
40
|
+
if (this.isOperator(key)) {
|
|
41
|
+
result[key] = this.translateOperator(key, value, currentPath);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
45
|
+
if (Object.keys(value).length === 1 && "$all" in value) {
|
|
46
|
+
const translated = this.translateNode(value, key);
|
|
47
|
+
if (translated.$and) {
|
|
48
|
+
return translated;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (Object.keys(value).length === 0) {
|
|
52
|
+
result[newPath] = this.translateNode(value);
|
|
53
|
+
} else {
|
|
54
|
+
const hasOperators = Object.keys(value).some((k) => this.isOperator(k));
|
|
55
|
+
if (hasOperators) {
|
|
56
|
+
const normalizedValue = {};
|
|
57
|
+
for (const [op, opValue] of Object.entries(value)) {
|
|
58
|
+
normalizedValue[op] = this.isOperator(op) ? this.translateOperator(op, opValue) : opValue;
|
|
59
|
+
}
|
|
60
|
+
result[newPath] = normalizedValue;
|
|
61
|
+
} else {
|
|
62
|
+
Object.assign(result, this.translateNode(value, newPath));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
result[newPath] = this.translateNode(value);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
translateOperator(operator, value, currentPath = "") {
|
|
72
|
+
if (operator === "$all") {
|
|
73
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
74
|
+
throw new Error("A non-empty array is required for the $all operator");
|
|
75
|
+
}
|
|
76
|
+
return this.simulateAllOperator(currentPath, value);
|
|
77
|
+
}
|
|
78
|
+
if (this.isLogicalOperator(operator)) {
|
|
79
|
+
return Array.isArray(value) ? value.map((item) => this.translateNode(item)) : this.translateNode(value);
|
|
80
|
+
}
|
|
81
|
+
return this.normalizeComparisonValue(value);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// src/vector/index.ts
|
|
86
|
+
var PineconeVector = class extends vector.MastraVector {
|
|
87
|
+
client;
|
|
88
|
+
constructor(apiKey, environment) {
|
|
89
|
+
super();
|
|
90
|
+
const opts = { apiKey };
|
|
91
|
+
if (environment) {
|
|
92
|
+
opts["controllerHostUrl"] = environment;
|
|
93
|
+
}
|
|
94
|
+
const baseClient = new pinecone.Pinecone(opts);
|
|
95
|
+
const telemetry = this.__getTelemetry();
|
|
96
|
+
this.client = telemetry?.traceClass(baseClient, {
|
|
97
|
+
spanNamePrefix: "pinecone-vector",
|
|
98
|
+
attributes: {
|
|
99
|
+
"vector.type": "pinecone"
|
|
100
|
+
}
|
|
101
|
+
}) ?? baseClient;
|
|
102
|
+
}
|
|
103
|
+
async createIndex(...args) {
|
|
104
|
+
const params = this.normalizeArgs("createIndex", args);
|
|
105
|
+
const { indexName, dimension, metric = "cosine" } = params;
|
|
106
|
+
if (!Number.isInteger(dimension) || dimension <= 0) {
|
|
107
|
+
throw new Error("Dimension must be a positive integer");
|
|
108
|
+
}
|
|
109
|
+
await this.client.createIndex({
|
|
110
|
+
name: indexName,
|
|
111
|
+
dimension,
|
|
112
|
+
metric,
|
|
113
|
+
spec: {
|
|
114
|
+
serverless: {
|
|
115
|
+
cloud: "aws",
|
|
116
|
+
region: "us-east-1"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
async upsert(...args) {
|
|
122
|
+
const params = this.normalizeArgs("upsert", args);
|
|
123
|
+
const { indexName, vectors, metadata, ids } = params;
|
|
124
|
+
const index = this.client.Index(indexName);
|
|
125
|
+
const vectorIds = ids || vectors.map(() => crypto.randomUUID());
|
|
126
|
+
const records = vectors.map((vector, i) => ({
|
|
127
|
+
id: vectorIds[i],
|
|
128
|
+
values: vector,
|
|
129
|
+
metadata: metadata?.[i] || {}
|
|
130
|
+
}));
|
|
131
|
+
const batchSize = 100;
|
|
132
|
+
for (let i = 0; i < records.length; i += batchSize) {
|
|
133
|
+
const batch = records.slice(i, i + batchSize);
|
|
134
|
+
await index.upsert(batch);
|
|
135
|
+
}
|
|
136
|
+
return vectorIds;
|
|
137
|
+
}
|
|
138
|
+
transformFilter(filter) {
|
|
139
|
+
const translator = new PineconeFilterTranslator();
|
|
140
|
+
return translator.translate(filter);
|
|
141
|
+
}
|
|
142
|
+
async query(...args) {
|
|
143
|
+
const params = this.normalizeArgs("query", args);
|
|
144
|
+
const { indexName, queryVector, topK = 10, filter, includeVector = false } = params;
|
|
145
|
+
const index = this.client.Index(indexName);
|
|
146
|
+
const translatedFilter = this.transformFilter(filter) ?? void 0;
|
|
147
|
+
const results = await index.query({
|
|
148
|
+
vector: queryVector,
|
|
149
|
+
topK,
|
|
150
|
+
filter: translatedFilter,
|
|
151
|
+
includeMetadata: true,
|
|
152
|
+
includeValues: includeVector
|
|
153
|
+
});
|
|
154
|
+
return results.matches.map((match) => ({
|
|
155
|
+
id: match.id,
|
|
156
|
+
score: match.score || 0,
|
|
157
|
+
metadata: match.metadata,
|
|
158
|
+
...includeVector && { vector: match.values || [] }
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
async listIndexes() {
|
|
162
|
+
const indexesResult = await this.client.listIndexes();
|
|
163
|
+
return indexesResult?.indexes?.map((index) => index.name) || [];
|
|
164
|
+
}
|
|
165
|
+
async describeIndex(indexName) {
|
|
166
|
+
const index = this.client.Index(indexName);
|
|
167
|
+
const stats = await index.describeIndexStats();
|
|
168
|
+
const description = await this.client.describeIndex(indexName);
|
|
169
|
+
return {
|
|
170
|
+
dimension: description.dimension,
|
|
171
|
+
count: stats.totalRecordCount || 0,
|
|
172
|
+
metric: description.metric
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
async deleteIndex(indexName) {
|
|
176
|
+
try {
|
|
177
|
+
await this.client.deleteIndex(indexName);
|
|
178
|
+
} catch (error) {
|
|
179
|
+
throw new Error(`Failed to delete Pinecone index: ${error.message}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
exports.PineconeVector = PineconeVector;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { PineconeVector } from './_tsup-dts-rollup.cjs';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MastraVector } from '@mastra/core/vector';
|
|
2
2
|
import { Pinecone } from '@pinecone-database/pinecone';
|
|
3
|
-
import { BaseFilterTranslator } from '@mastra/core/filter';
|
|
3
|
+
import { BaseFilterTranslator } from '@mastra/core/vector/filter';
|
|
4
4
|
|
|
5
5
|
// src/vector/index.ts
|
|
6
6
|
var PineconeFilterTranslator = class extends BaseFilterTranslator {
|
|
@@ -98,7 +98,9 @@ var PineconeVector = class extends MastraVector {
|
|
|
98
98
|
}
|
|
99
99
|
}) ?? baseClient;
|
|
100
100
|
}
|
|
101
|
-
async createIndex(
|
|
101
|
+
async createIndex(...args) {
|
|
102
|
+
const params = this.normalizeArgs("createIndex", args);
|
|
103
|
+
const { indexName, dimension, metric = "cosine" } = params;
|
|
102
104
|
if (!Number.isInteger(dimension) || dimension <= 0) {
|
|
103
105
|
throw new Error("Dimension must be a positive integer");
|
|
104
106
|
}
|
|
@@ -114,7 +116,9 @@ var PineconeVector = class extends MastraVector {
|
|
|
114
116
|
}
|
|
115
117
|
});
|
|
116
118
|
}
|
|
117
|
-
async upsert(
|
|
119
|
+
async upsert(...args) {
|
|
120
|
+
const params = this.normalizeArgs("upsert", args);
|
|
121
|
+
const { indexName, vectors, metadata, ids } = params;
|
|
118
122
|
const index = this.client.Index(indexName);
|
|
119
123
|
const vectorIds = ids || vectors.map(() => crypto.randomUUID());
|
|
120
124
|
const records = vectors.map((vector, i) => ({
|
|
@@ -130,13 +134,14 @@ var PineconeVector = class extends MastraVector {
|
|
|
130
134
|
return vectorIds;
|
|
131
135
|
}
|
|
132
136
|
transformFilter(filter) {
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
return translatedFilter;
|
|
137
|
+
const translator = new PineconeFilterTranslator();
|
|
138
|
+
return translator.translate(filter);
|
|
136
139
|
}
|
|
137
|
-
async query(
|
|
140
|
+
async query(...args) {
|
|
141
|
+
const params = this.normalizeArgs("query", args);
|
|
142
|
+
const { indexName, queryVector, topK = 10, filter, includeVector = false } = params;
|
|
138
143
|
const index = this.client.Index(indexName);
|
|
139
|
-
const translatedFilter = this.transformFilter(filter);
|
|
144
|
+
const translatedFilter = this.transformFilter(filter) ?? void 0;
|
|
140
145
|
const results = await index.query({
|
|
141
146
|
vector: queryVector,
|
|
142
147
|
topK,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/pinecone",
|
|
3
|
-
"version": "0.1.6-alpha.
|
|
3
|
+
"version": "0.1.6-alpha.3",
|
|
4
4
|
"description": "Pinecone vector store provider for Mastra",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -10,13 +10,17 @@
|
|
|
10
10
|
"import": {
|
|
11
11
|
"types": "./dist/index.d.ts",
|
|
12
12
|
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.cts",
|
|
16
|
+
"default": "./dist/index.cjs"
|
|
13
17
|
}
|
|
14
18
|
},
|
|
15
19
|
"./package.json": "./package.json"
|
|
16
20
|
},
|
|
17
21
|
"dependencies": {
|
|
18
22
|
"@pinecone-database/pinecone": "^3.0.3",
|
|
19
|
-
"@mastra/core": "^0.4.3-alpha.
|
|
23
|
+
"@mastra/core": "^0.4.3-alpha.3"
|
|
20
24
|
},
|
|
21
25
|
"devDependencies": {
|
|
22
26
|
"@microsoft/api-extractor": "^7.49.2",
|
|
@@ -29,7 +33,7 @@
|
|
|
29
33
|
"@internal/lint": "0.0.0"
|
|
30
34
|
},
|
|
31
35
|
"scripts": {
|
|
32
|
-
"build": "tsup src/index.ts --format esm --experimental-dts --clean --treeshake",
|
|
36
|
+
"build": "tsup src/index.ts --format esm,cjs --experimental-dts --clean --treeshake",
|
|
33
37
|
"build:watch": "pnpm build --watch",
|
|
34
38
|
"test": "vitest run",
|
|
35
39
|
"lint": "eslint ."
|
package/src/vector/filter.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BaseFilterTranslator } from '@mastra/core/filter';
|
|
2
|
-
import type { FieldCondition,
|
|
1
|
+
import { BaseFilterTranslator } from '@mastra/core/vector/filter';
|
|
2
|
+
import type { FieldCondition, VectorFilter, OperatorSupport, QueryOperator } from '@mastra/core/vector/filter';
|
|
3
3
|
|
|
4
4
|
export class PineconeFilterTranslator extends BaseFilterTranslator {
|
|
5
5
|
protected override getSupportedOperators(): OperatorSupport {
|
|
@@ -13,13 +13,13 @@ export class PineconeFilterTranslator extends BaseFilterTranslator {
|
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
translate(filter?:
|
|
16
|
+
translate(filter?: VectorFilter): VectorFilter {
|
|
17
17
|
if (this.isEmpty(filter)) return filter;
|
|
18
|
-
this.validateFilter(filter
|
|
18
|
+
this.validateFilter(filter);
|
|
19
19
|
return this.translateNode(filter);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
private translateNode(node:
|
|
22
|
+
private translateNode(node: VectorFilter | FieldCondition, currentPath: string = ''): any {
|
|
23
23
|
if (this.isRegex(node)) {
|
|
24
24
|
throw new Error('Regex is not supported in Pinecone');
|
|
25
25
|
}
|