@mastra/qdrant 0.11.19 → 1.0.0-beta.1
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/CHANGELOG.md +19 -14
- package/README.md +3 -0
- package/dist/index.cjs +219 -61
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +219 -61
- package/dist/index.js.map +1 -1
- package/dist/vector/index.d.ts +19 -6
- package/dist/vector/index.d.ts.map +1 -1
- package/package.json +14 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,31 +1,36 @@
|
|
|
1
1
|
# @mastra/qdrant
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 1.0.0-beta.1
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- Add new deleteVectors, updateVector by filter ([#10408](https://github.com/mastra-ai/mastra/pull/10408))
|
|
8
8
|
|
|
9
|
-
- Updated dependencies [[`
|
|
10
|
-
- @mastra/core@0.
|
|
9
|
+
- Updated dependencies [[`21a15de`](https://github.com/mastra-ai/mastra/commit/21a15de369fe82aac26bb642ed7be73505475e8b), [`feb7ee4`](https://github.com/mastra-ai/mastra/commit/feb7ee4d09a75edb46c6669a3beaceec78811747), [`b0e2ea5`](https://github.com/mastra-ai/mastra/commit/b0e2ea5b52c40fae438b9e2f7baee6f0f89c5442), [`c456e01`](https://github.com/mastra-ai/mastra/commit/c456e0149e3c176afcefdbd9bb1d2c5917723725), [`ab035c2`](https://github.com/mastra-ai/mastra/commit/ab035c2ef6d8cc7bb25f06f1a38508bd9e6f126b), [`1a46a56`](https://github.com/mastra-ai/mastra/commit/1a46a566f45a3fcbadc1cf36bf86d351f264bfa3), [`3cf540b`](https://github.com/mastra-ai/mastra/commit/3cf540b9fbfea8f4fc8d3a2319a4e6c0b0cbfd52), [`1c6ce51`](https://github.com/mastra-ai/mastra/commit/1c6ce51f875915ab57fd36873623013699a2a65d), [`898a972`](https://github.com/mastra-ai/mastra/commit/898a9727d286c2510d6b702dfd367e6aaf5c6b0f), [`a97003a`](https://github.com/mastra-ai/mastra/commit/a97003aa1cf2f4022a41912324a1e77263b326b8), [`ccc141e`](https://github.com/mastra-ai/mastra/commit/ccc141ed27da0abc3a3fc28e9e5128152e8e37f4), [`fe3b897`](https://github.com/mastra-ai/mastra/commit/fe3b897c2ccbcd2b10e81b099438c7337feddf89), [`00123ba`](https://github.com/mastra-ai/mastra/commit/00123ba96dc9e5cd0b110420ebdba56d8f237b25), [`29c4309`](https://github.com/mastra-ai/mastra/commit/29c4309f818b24304c041bcb4a8f19b5f13f6b62), [`16785ce`](https://github.com/mastra-ai/mastra/commit/16785ced928f6f22638f4488cf8a125d99211799), [`de8239b`](https://github.com/mastra-ai/mastra/commit/de8239bdcb1d8c0cfa06da21f1569912a66bbc8a), [`b5e6cd7`](https://github.com/mastra-ai/mastra/commit/b5e6cd77fc8c8e64e0494c1d06cee3d84e795d1e), [`3759cb0`](https://github.com/mastra-ai/mastra/commit/3759cb064935b5f74c65ac2f52a1145f7352899d), [`651e772`](https://github.com/mastra-ai/mastra/commit/651e772eb1475fb13e126d3fcc01751297a88214), [`b61b93f`](https://github.com/mastra-ai/mastra/commit/b61b93f9e058b11dd2eec169853175d31dbdd567), [`bae33d9`](https://github.com/mastra-ai/mastra/commit/bae33d91a63fbb64d1e80519e1fc1acaed1e9013), [`c0b731f`](https://github.com/mastra-ai/mastra/commit/c0b731fb27d712dc8582e846df5c0332a6a0c5ba), [`43ca8f2`](https://github.com/mastra-ai/mastra/commit/43ca8f2c7334851cc7b4d3d2f037d8784bfbdd5f), [`2ca67cc`](https://github.com/mastra-ai/mastra/commit/2ca67cc3bb1f6a617353fdcab197d9efebe60d6f), [`9e67002`](https://github.com/mastra-ai/mastra/commit/9e67002b52c9be19936c420a489dbee9c5fd6a78), [`35edc49`](https://github.com/mastra-ai/mastra/commit/35edc49ac0556db609189641d6341e76771b81fc)]:
|
|
10
|
+
- @mastra/core@1.0.0-beta.5
|
|
11
11
|
|
|
12
|
-
## 0.
|
|
12
|
+
## 1.0.0-beta.0
|
|
13
13
|
|
|
14
|
-
###
|
|
14
|
+
### Major Changes
|
|
15
15
|
|
|
16
|
-
-
|
|
16
|
+
- Every Mastra primitive (agent, MCPServer, workflow, tool, processor, scorer, and vector) now has a get, list, and add method associated with it. Each primitive also now requires an id to be set. ([#9675](https://github.com/mastra-ai/mastra/pull/9675))
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
- @mastra/core@0.24.0-alpha.0
|
|
18
|
+
Primitives that are added to other primitives are also automatically added to the Mastra instance
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
- Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
- Removed old tracing code based on OpenTelemetry ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
|
|
24
23
|
|
|
25
|
-
-
|
|
24
|
+
- Mark as stable ([`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc))
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
### Minor Changes
|
|
27
|
+
|
|
28
|
+
- Update peer dependencies to match core package version bump (1.0.0) ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
|
|
29
|
+
|
|
30
|
+
### Patch Changes
|
|
31
|
+
|
|
32
|
+
- Updated dependencies [[`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
|
|
33
|
+
- @mastra/core@1.0.0-beta.0
|
|
29
34
|
|
|
30
35
|
## 0.11.17
|
|
31
36
|
|
package/README.md
CHANGED
|
@@ -72,6 +72,9 @@ The following distance metrics are supported:
|
|
|
72
72
|
- `createIndex({ indexName, dimension, metric? })`: Create a new collection
|
|
73
73
|
- `upsert({ indexName, vectors, metadata?, ids? })`: Add or update vectors
|
|
74
74
|
- `query({ indexName, queryVector, topK?, filter?, includeVector? })`: Search for similar vectors
|
|
75
|
+
- `updateVector({ indexName, id?, filter?, update })`: Update a single vector by ID or metadata filter
|
|
76
|
+
- `deleteVector({ indexName, id })`: Delete a single vector by ID
|
|
77
|
+
- `deleteVectors({ indexName, ids?, filter? })`: Delete multiple vectors by IDs or metadata filter
|
|
75
78
|
- `listIndexes()`: List all collections
|
|
76
79
|
- `describeIndex(indexName)`: Get collection statistics
|
|
77
80
|
- `deleteIndex(indexName)`: Delete a collection
|
package/dist/index.cjs
CHANGED
|
@@ -242,25 +242,14 @@ var QdrantVector = class extends vector.MastraVector {
|
|
|
242
242
|
client;
|
|
243
243
|
/**
|
|
244
244
|
* Creates a new QdrantVector client.
|
|
245
|
+
* @param id - The unique identifier for this vector store instance.
|
|
245
246
|
* @param url - The URL of the Qdrant server.
|
|
246
247
|
* @param apiKey - The API key for Qdrant.
|
|
247
248
|
* @param https - Whether to use HTTPS.
|
|
248
249
|
*/
|
|
249
|
-
constructor({
|
|
250
|
-
super();
|
|
251
|
-
|
|
252
|
-
url,
|
|
253
|
-
apiKey,
|
|
254
|
-
https,
|
|
255
|
-
...rest
|
|
256
|
-
});
|
|
257
|
-
const telemetry = this.__getTelemetry();
|
|
258
|
-
this.client = telemetry?.traceClass(baseClient, {
|
|
259
|
-
spanNamePrefix: "qdrant-vector",
|
|
260
|
-
attributes: {
|
|
261
|
-
"vector.type": "qdrant"
|
|
262
|
-
}
|
|
263
|
-
}) ?? baseClient;
|
|
250
|
+
constructor({ id, ...qdrantParams }) {
|
|
251
|
+
super({ id });
|
|
252
|
+
this.client = new jsClientRest.QdrantClient(qdrantParams);
|
|
264
253
|
}
|
|
265
254
|
async upsert({ indexName, vectors, metadata, ids }) {
|
|
266
255
|
const pointIds = ids || vectors.map(() => crypto.randomUUID());
|
|
@@ -429,6 +418,11 @@ var QdrantVector = class extends vector.MastraVector {
|
|
|
429
418
|
try {
|
|
430
419
|
await this.client.deleteCollection(indexName);
|
|
431
420
|
} catch (error$1) {
|
|
421
|
+
const errorMessage = error$1?.message || error$1?.toString() || "";
|
|
422
|
+
if (error$1?.status === 404 || errorMessage.toLowerCase().includes("not found") || errorMessage.toLowerCase().includes("not exist")) {
|
|
423
|
+
this.logger.info(`Collection ${indexName} does not exist, treating as already deleted`);
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
432
426
|
throw new error.MastraError(
|
|
433
427
|
{
|
|
434
428
|
id: "STORAGE_QDRANT_VECTOR_DELETE_INDEX_FAILED",
|
|
@@ -441,66 +435,143 @@ var QdrantVector = class extends vector.MastraVector {
|
|
|
441
435
|
}
|
|
442
436
|
}
|
|
443
437
|
/**
|
|
444
|
-
* Updates a vector by its ID
|
|
445
|
-
* @param indexName - The name of the index containing the vector.
|
|
446
|
-
* @param id - The ID of the vector to update.
|
|
438
|
+
* Updates a vector by its ID or multiple vectors matching a filter.
|
|
439
|
+
* @param indexName - The name of the index containing the vector(s).
|
|
440
|
+
* @param id - The ID of the vector to update (mutually exclusive with filter).
|
|
441
|
+
* @param filter - Filter to match multiple vectors to update (mutually exclusive with id).
|
|
447
442
|
* @param update - An object containing the vector and/or metadata to update.
|
|
448
443
|
* @param update.vector - An optional array of numbers representing the new vector.
|
|
449
444
|
* @param update.metadata - An optional record containing the new metadata.
|
|
450
445
|
* @returns A promise that resolves when the update is complete.
|
|
451
446
|
* @throws Will throw an error if no updates are provided or if the update operation fails.
|
|
452
447
|
*/
|
|
453
|
-
async updateVector({ indexName, id, update }) {
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
{
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
448
|
+
async updateVector({ indexName, id, filter, update }) {
|
|
449
|
+
if (id && filter) {
|
|
450
|
+
throw new error.MastraError({
|
|
451
|
+
id: "STORAGE_QDRANT_VECTOR_UPDATE_MUTUALLY_EXCLUSIVE",
|
|
452
|
+
text: "Cannot specify both id and filter - they are mutually exclusive",
|
|
453
|
+
domain: error.ErrorDomain.STORAGE,
|
|
454
|
+
category: error.ErrorCategory.USER,
|
|
455
|
+
details: { indexName }
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
if (!id && !filter) {
|
|
459
|
+
throw new error.MastraError({
|
|
460
|
+
id: "STORAGE_QDRANT_VECTOR_UPDATE_NO_TARGET",
|
|
461
|
+
text: "Either id or filter must be provided",
|
|
462
|
+
domain: error.ErrorDomain.STORAGE,
|
|
463
|
+
category: error.ErrorCategory.USER,
|
|
464
|
+
details: { indexName }
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
if (!update.vector && !update.metadata) {
|
|
468
|
+
throw new error.MastraError({
|
|
469
|
+
id: "STORAGE_QDRANT_VECTOR_UPDATE_NO_PAYLOAD",
|
|
470
|
+
text: "No updates provided",
|
|
471
|
+
domain: error.ErrorDomain.STORAGE,
|
|
472
|
+
category: error.ErrorCategory.USER,
|
|
473
|
+
details: {
|
|
474
|
+
indexName,
|
|
475
|
+
...id && { id }
|
|
476
|
+
}
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
if (filter && Object.keys(filter).length === 0) {
|
|
480
|
+
throw new error.MastraError({
|
|
481
|
+
id: "STORAGE_QDRANT_VECTOR_UPDATE_EMPTY_FILTER",
|
|
482
|
+
text: "Filter cannot be an empty filter object",
|
|
483
|
+
domain: error.ErrorDomain.STORAGE,
|
|
484
|
+
category: error.ErrorCategory.USER,
|
|
485
|
+
details: { indexName }
|
|
486
|
+
});
|
|
468
487
|
}
|
|
469
|
-
const pointId = this.parsePointId(id);
|
|
470
488
|
try {
|
|
471
|
-
if (
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
489
|
+
if (id) {
|
|
490
|
+
const pointId = this.parsePointId(id);
|
|
491
|
+
if (update.metadata && !update.vector) {
|
|
492
|
+
await this.client.setPayload(indexName, { payload: update.metadata, points: [pointId] });
|
|
493
|
+
return;
|
|
494
|
+
}
|
|
495
|
+
if (update.vector && !update.metadata) {
|
|
496
|
+
await this.client.updateVectors(indexName, {
|
|
497
|
+
points: [
|
|
498
|
+
{
|
|
499
|
+
id: pointId,
|
|
500
|
+
vector: update.vector
|
|
501
|
+
}
|
|
502
|
+
]
|
|
503
|
+
});
|
|
504
|
+
return;
|
|
505
|
+
}
|
|
506
|
+
if (update.vector && update.metadata) {
|
|
507
|
+
const point = {
|
|
508
|
+
id: pointId,
|
|
509
|
+
vector: update.vector,
|
|
510
|
+
payload: update.metadata
|
|
511
|
+
};
|
|
512
|
+
await this.client.upsert(indexName, {
|
|
513
|
+
points: [point]
|
|
514
|
+
});
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
} else if (filter) {
|
|
518
|
+
const translatedFilter = this.transformFilter(filter);
|
|
519
|
+
const matchingPoints = [];
|
|
520
|
+
let offset = void 0;
|
|
521
|
+
do {
|
|
522
|
+
const scrollResult = await this.client.scroll(indexName, {
|
|
523
|
+
filter: translatedFilter,
|
|
524
|
+
limit: 100,
|
|
525
|
+
offset,
|
|
526
|
+
with_payload: false,
|
|
527
|
+
with_vector: update.vector ? false : true
|
|
528
|
+
// Only fetch vectors if not updating them
|
|
529
|
+
});
|
|
530
|
+
matchingPoints.push(
|
|
531
|
+
...scrollResult.points.map((point) => ({
|
|
532
|
+
id: point.id,
|
|
533
|
+
vector: Array.isArray(point.vector) ? point.vector : void 0
|
|
534
|
+
}))
|
|
535
|
+
);
|
|
536
|
+
const nextOffset = scrollResult.next_page_offset;
|
|
537
|
+
offset = typeof nextOffset === "string" || typeof nextOffset === "number" ? nextOffset : void 0;
|
|
538
|
+
} while (offset !== void 0);
|
|
539
|
+
if (matchingPoints.length === 0) {
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
const pointIds = matchingPoints.map((p) => p.id);
|
|
543
|
+
if (update.metadata && !update.vector) {
|
|
544
|
+
await this.client.setPayload(indexName, { payload: update.metadata, points: pointIds });
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
547
|
+
if (update.vector) {
|
|
548
|
+
const points = matchingPoints.map((p) => ({
|
|
549
|
+
id: p.id,
|
|
550
|
+
vector: update.vector,
|
|
551
|
+
payload: update.metadata || {}
|
|
552
|
+
}));
|
|
553
|
+
for (let i = 0; i < points.length; i += BATCH_SIZE) {
|
|
554
|
+
const batch = points.slice(i, i + BATCH_SIZE);
|
|
555
|
+
await this.client.upsert(indexName, {
|
|
556
|
+
points: batch,
|
|
557
|
+
wait: true
|
|
558
|
+
});
|
|
559
|
+
}
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
496
562
|
}
|
|
497
563
|
} catch (error$1) {
|
|
564
|
+
if (error$1 instanceof error.MastraError) throw error$1;
|
|
498
565
|
throw new error.MastraError(
|
|
499
566
|
{
|
|
500
567
|
id: "STORAGE_QDRANT_VECTOR_UPDATE_VECTOR_FAILED",
|
|
501
568
|
domain: error.ErrorDomain.STORAGE,
|
|
502
569
|
category: error.ErrorCategory.THIRD_PARTY,
|
|
503
|
-
details: {
|
|
570
|
+
details: {
|
|
571
|
+
indexName,
|
|
572
|
+
...id && { id },
|
|
573
|
+
...filter && { filter: JSON.stringify(filter) }
|
|
574
|
+
}
|
|
504
575
|
},
|
|
505
576
|
error$1
|
|
506
577
|
);
|
|
@@ -525,7 +596,10 @@ var QdrantVector = class extends vector.MastraVector {
|
|
|
525
596
|
id: "STORAGE_QDRANT_VECTOR_DELETE_VECTOR_FAILED",
|
|
526
597
|
domain: error.ErrorDomain.STORAGE,
|
|
527
598
|
category: error.ErrorCategory.THIRD_PARTY,
|
|
528
|
-
details: {
|
|
599
|
+
details: {
|
|
600
|
+
indexName,
|
|
601
|
+
...id && { id }
|
|
602
|
+
}
|
|
529
603
|
},
|
|
530
604
|
error$1
|
|
531
605
|
);
|
|
@@ -566,6 +640,90 @@ var QdrantVector = class extends vector.MastraVector {
|
|
|
566
640
|
}
|
|
567
641
|
return id;
|
|
568
642
|
}
|
|
643
|
+
/**
|
|
644
|
+
* Deletes multiple vectors by IDs or filter.
|
|
645
|
+
* @param indexName - The name of the index containing the vectors.
|
|
646
|
+
* @param ids - Array of vector IDs to delete (mutually exclusive with filter).
|
|
647
|
+
* @param filter - Filter to match vectors to delete (mutually exclusive with ids).
|
|
648
|
+
* @returns A promise that resolves when the deletion is complete.
|
|
649
|
+
* @throws Will throw an error if both ids and filter are provided, or if neither is provided.
|
|
650
|
+
*/
|
|
651
|
+
async deleteVectors({ indexName, filter, ids }) {
|
|
652
|
+
if (ids && filter) {
|
|
653
|
+
throw new error.MastraError({
|
|
654
|
+
id: "STORAGE_QDRANT_VECTOR_DELETE_VECTORS_MUTUALLY_EXCLUSIVE",
|
|
655
|
+
text: "Cannot specify both ids and filter - they are mutually exclusive",
|
|
656
|
+
domain: error.ErrorDomain.STORAGE,
|
|
657
|
+
category: error.ErrorCategory.USER,
|
|
658
|
+
details: { indexName }
|
|
659
|
+
});
|
|
660
|
+
}
|
|
661
|
+
if (!ids && !filter) {
|
|
662
|
+
throw new error.MastraError({
|
|
663
|
+
id: "STORAGE_QDRANT_VECTOR_DELETE_VECTORS_NO_TARGET",
|
|
664
|
+
text: "Either filter or ids must be provided",
|
|
665
|
+
domain: error.ErrorDomain.STORAGE,
|
|
666
|
+
category: error.ErrorCategory.USER,
|
|
667
|
+
details: { indexName }
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
if (ids && ids.length === 0) {
|
|
671
|
+
throw new error.MastraError({
|
|
672
|
+
id: "STORAGE_QDRANT_VECTOR_DELETE_VECTORS_EMPTY_IDS",
|
|
673
|
+
text: "Cannot delete with empty ids array",
|
|
674
|
+
domain: error.ErrorDomain.STORAGE,
|
|
675
|
+
category: error.ErrorCategory.USER,
|
|
676
|
+
details: { indexName }
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
if (filter && Object.keys(filter).length === 0) {
|
|
680
|
+
throw new error.MastraError({
|
|
681
|
+
id: "STORAGE_QDRANT_VECTOR_DELETE_VECTORS_EMPTY_FILTER",
|
|
682
|
+
text: "Cannot delete with empty filter object",
|
|
683
|
+
domain: error.ErrorDomain.STORAGE,
|
|
684
|
+
category: error.ErrorCategory.USER,
|
|
685
|
+
details: { indexName }
|
|
686
|
+
});
|
|
687
|
+
}
|
|
688
|
+
try {
|
|
689
|
+
if (ids) {
|
|
690
|
+
const pointIds = ids.map((id) => this.parsePointId(id));
|
|
691
|
+
try {
|
|
692
|
+
await this.client.delete(indexName, {
|
|
693
|
+
points: pointIds,
|
|
694
|
+
wait: true
|
|
695
|
+
});
|
|
696
|
+
} catch (error) {
|
|
697
|
+
const message = error?.message || error?.toString() || "";
|
|
698
|
+
if (message.toLowerCase().includes("bad request")) {
|
|
699
|
+
return;
|
|
700
|
+
}
|
|
701
|
+
throw error;
|
|
702
|
+
}
|
|
703
|
+
} else if (filter) {
|
|
704
|
+
const translatedFilter = this.transformFilter(filter) ?? {};
|
|
705
|
+
await this.client.delete(indexName, {
|
|
706
|
+
filter: translatedFilter,
|
|
707
|
+
wait: true
|
|
708
|
+
});
|
|
709
|
+
}
|
|
710
|
+
} catch (error$1) {
|
|
711
|
+
if (error$1 instanceof error.MastraError) throw error$1;
|
|
712
|
+
throw new error.MastraError(
|
|
713
|
+
{
|
|
714
|
+
id: "STORAGE_QDRANT_VECTOR_DELETE_VECTORS_FAILED",
|
|
715
|
+
domain: error.ErrorDomain.STORAGE,
|
|
716
|
+
category: error.ErrorCategory.THIRD_PARTY,
|
|
717
|
+
details: {
|
|
718
|
+
indexName,
|
|
719
|
+
...filter && { filter: JSON.stringify(filter) },
|
|
720
|
+
...ids && { idsCount: ids.length }
|
|
721
|
+
}
|
|
722
|
+
},
|
|
723
|
+
error$1
|
|
724
|
+
);
|
|
725
|
+
}
|
|
726
|
+
}
|
|
569
727
|
};
|
|
570
728
|
|
|
571
729
|
// src/vector/prompt.ts
|