@mastra/pinecone 1.0.0-beta.3 → 1.0.0-beta.5
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 +92 -0
- package/README.md +11 -8
- package/dist/docs/README.md +33 -0
- package/dist/docs/SKILL.md +34 -0
- package/dist/docs/SOURCE_MAP.json +6 -0
- package/dist/docs/memory/01-storage.md +215 -0
- package/dist/docs/memory/02-memory-processors.md +318 -0
- package/dist/docs/rag/01-vector-databases.md +643 -0
- package/dist/docs/rag/02-retrieval.md +548 -0
- package/dist/docs/vectors/01-reference.md +102 -0
- package/dist/index.cjs +5 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5 -17
- package/dist/index.js.map +1 -1
- package/dist/vector/index.d.ts +44 -13
- package/dist/vector/index.d.ts.map +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,97 @@
|
|
|
1
1
|
# @mastra/pinecone
|
|
2
2
|
|
|
3
|
+
## 1.0.0-beta.5
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Aligned vector store configuration with underlying library APIs, giving you access to all library options directly. ([#11742](https://github.com/mastra-ai/mastra/pull/11742))
|
|
8
|
+
|
|
9
|
+
**Why this change?**
|
|
10
|
+
|
|
11
|
+
Previously, each vector store defined its own configuration types that only exposed a subset of the underlying library's options. This meant users couldn't access advanced features like authentication, SSL, compression, or custom headers without creating their own client instances. Now, the configuration types extend the library types directly, so all options are available.
|
|
12
|
+
|
|
13
|
+
**@mastra/libsql** (Breaking)
|
|
14
|
+
|
|
15
|
+
Renamed `connectionUrl` to `url` to match the `@libsql/client` API and align with LibSQLStorage.
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// Before
|
|
19
|
+
new LibSQLVector({ id: 'my-vector', connectionUrl: 'file:./db.sqlite' });
|
|
20
|
+
|
|
21
|
+
// After
|
|
22
|
+
new LibSQLVector({ id: 'my-vector', url: 'file:./db.sqlite' });
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**@mastra/opensearch** (Breaking)
|
|
26
|
+
|
|
27
|
+
Renamed `url` to `node` and added support for all OpenSearch `ClientOptions` including authentication, SSL, and compression.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// Before
|
|
31
|
+
new OpenSearchVector({ id: 'my-vector', url: 'http://localhost:9200' });
|
|
32
|
+
|
|
33
|
+
// After
|
|
34
|
+
new OpenSearchVector({ id: 'my-vector', node: 'http://localhost:9200' });
|
|
35
|
+
|
|
36
|
+
// With authentication (now possible)
|
|
37
|
+
new OpenSearchVector({
|
|
38
|
+
id: 'my-vector',
|
|
39
|
+
node: 'https://localhost:9200',
|
|
40
|
+
auth: { username: 'admin', password: 'admin' },
|
|
41
|
+
ssl: { rejectUnauthorized: false },
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**@mastra/pinecone** (Breaking)
|
|
46
|
+
|
|
47
|
+
Removed `environment` parameter. Use `controllerHostUrl` instead (the actual Pinecone SDK field name). Added support for all `PineconeConfiguration` options.
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
// Before
|
|
51
|
+
new PineconeVector({ id: 'my-vector', apiKey: '...', environment: '...' });
|
|
52
|
+
|
|
53
|
+
// After
|
|
54
|
+
new PineconeVector({ id: 'my-vector', apiKey: '...' });
|
|
55
|
+
|
|
56
|
+
// With custom controller host (if needed)
|
|
57
|
+
new PineconeVector({ id: 'my-vector', apiKey: '...', controllerHostUrl: '...' });
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**@mastra/clickhouse**
|
|
61
|
+
|
|
62
|
+
Added support for all `ClickHouseClientConfigOptions` like `request_timeout`, `compression`, `keep_alive`, and `database`. Existing configurations continue to work unchanged.
|
|
63
|
+
|
|
64
|
+
**@mastra/cloudflare, @mastra/cloudflare-d1, @mastra/lance, @mastra/libsql, @mastra/mongodb, @mastra/pg, @mastra/upstash**
|
|
65
|
+
|
|
66
|
+
Improved logging by replacing `console.warn` with structured logger in workflow storage domains.
|
|
67
|
+
|
|
68
|
+
**@mastra/deployer-cloud**
|
|
69
|
+
|
|
70
|
+
Updated internal LibSQLVector configuration for compatibility with the new API.
|
|
71
|
+
|
|
72
|
+
### Patch Changes
|
|
73
|
+
|
|
74
|
+
- Updated dependencies [[`ebae12a`](https://github.com/mastra-ai/mastra/commit/ebae12a2dd0212e75478981053b148a2c246962d), [`c61a0a5`](https://github.com/mastra-ai/mastra/commit/c61a0a5de4904c88fd8b3718bc26d1be1c2ec6e7), [`69136e7`](https://github.com/mastra-ai/mastra/commit/69136e748e32f57297728a4e0f9a75988462f1a7), [`449aed2`](https://github.com/mastra-ai/mastra/commit/449aed2ba9d507b75bf93d427646ea94f734dfd1), [`eb648a2`](https://github.com/mastra-ai/mastra/commit/eb648a2cc1728f7678768dd70cd77619b448dab9), [`0131105`](https://github.com/mastra-ai/mastra/commit/0131105532e83bdcbb73352fc7d0879eebf140dc), [`9d5059e`](https://github.com/mastra-ai/mastra/commit/9d5059eae810829935fb08e81a9bb7ecd5b144a7), [`ef756c6`](https://github.com/mastra-ai/mastra/commit/ef756c65f82d16531c43f49a27290a416611e526), [`b00ccd3`](https://github.com/mastra-ai/mastra/commit/b00ccd325ebd5d9e37e34dd0a105caae67eb568f), [`3bdfa75`](https://github.com/mastra-ai/mastra/commit/3bdfa7507a91db66f176ba8221aa28dd546e464a), [`e770de9`](https://github.com/mastra-ai/mastra/commit/e770de941a287a49b1964d44db5a5763d19890a6), [`52e2716`](https://github.com/mastra-ai/mastra/commit/52e2716b42df6eff443de72360ae83e86ec23993), [`27b4040`](https://github.com/mastra-ai/mastra/commit/27b4040bfa1a95d92546f420a02a626b1419a1d6), [`610a70b`](https://github.com/mastra-ai/mastra/commit/610a70bdad282079f0c630e0d7bb284578f20151), [`8dc7f55`](https://github.com/mastra-ai/mastra/commit/8dc7f55900395771da851dc7d78d53ae84fe34ec), [`8379099`](https://github.com/mastra-ai/mastra/commit/8379099fc467af6bef54dd7f80c9bd75bf8bbddf), [`8c0ec25`](https://github.com/mastra-ai/mastra/commit/8c0ec25646c8a7df253ed1e5ff4863a0d3f1316c), [`ff4d9a6`](https://github.com/mastra-ai/mastra/commit/ff4d9a6704fc87b31a380a76ed22736fdedbba5a), [`69821ef`](https://github.com/mastra-ai/mastra/commit/69821ef806482e2c44e2197ac0b050c3fe3a5285), [`1ed5716`](https://github.com/mastra-ai/mastra/commit/1ed5716830867b3774c4a1b43cc0d82935f32b96), [`4186bdd`](https://github.com/mastra-ai/mastra/commit/4186bdd00731305726fa06adba0b076a1d50b49f), [`7aaf973`](https://github.com/mastra-ai/mastra/commit/7aaf973f83fbbe9521f1f9e7a4fd99b8de464617)]:
|
|
75
|
+
- @mastra/core@1.0.0-beta.22
|
|
76
|
+
|
|
77
|
+
## 1.0.0-beta.4
|
|
78
|
+
|
|
79
|
+
### Patch Changes
|
|
80
|
+
|
|
81
|
+
- Add embedded documentation support for Mastra packages ([#11472](https://github.com/mastra-ai/mastra/pull/11472))
|
|
82
|
+
|
|
83
|
+
Mastra packages now include embedded documentation in the published npm package under `dist/docs/`. This enables coding agents and AI assistants to understand and use the framework by reading documentation directly from `node_modules`.
|
|
84
|
+
|
|
85
|
+
Each package includes:
|
|
86
|
+
- **SKILL.md** - Entry point explaining the package's purpose and capabilities
|
|
87
|
+
- **SOURCE_MAP.json** - Machine-readable index mapping exports to types and implementation files
|
|
88
|
+
- **Topic folders** - Conceptual documentation organized by feature area
|
|
89
|
+
|
|
90
|
+
Documentation is driven by the `packages` frontmatter field in MDX files, which maps docs to their corresponding packages. CI validation ensures all docs include this field.
|
|
91
|
+
|
|
92
|
+
- Updated dependencies [[`d2d3e22`](https://github.com/mastra-ai/mastra/commit/d2d3e22a419ee243f8812a84e3453dd44365ecb0), [`bc72b52`](https://github.com/mastra-ai/mastra/commit/bc72b529ee4478fe89ecd85a8be47ce0127b82a0), [`05b8bee`](https://github.com/mastra-ai/mastra/commit/05b8bee9e50e6c2a4a2bf210eca25ee212ca24fa), [`c042bd0`](https://github.com/mastra-ai/mastra/commit/c042bd0b743e0e86199d0cb83344ca7690e34a9c), [`940a2b2`](https://github.com/mastra-ai/mastra/commit/940a2b27480626ed7e74f55806dcd2181c1dd0c2), [`e0941c3`](https://github.com/mastra-ai/mastra/commit/e0941c3d7fc75695d5d258e7008fd5d6e650800c), [`0c0580a`](https://github.com/mastra-ai/mastra/commit/0c0580a42f697cd2a7d5973f25bfe7da9055038a), [`28f5f89`](https://github.com/mastra-ai/mastra/commit/28f5f89705f2409921e3c45178796c0e0d0bbb64), [`e601b27`](https://github.com/mastra-ai/mastra/commit/e601b272c70f3a5ecca610373aa6223012704892), [`3d3366f`](https://github.com/mastra-ai/mastra/commit/3d3366f31683e7137d126a3a57174a222c5801fb), [`5a4953f`](https://github.com/mastra-ai/mastra/commit/5a4953f7d25bb15ca31ed16038092a39cb3f98b3), [`eb9e522`](https://github.com/mastra-ai/mastra/commit/eb9e522ce3070a405e5b949b7bf5609ca51d7fe2), [`20e6f19`](https://github.com/mastra-ai/mastra/commit/20e6f1971d51d3ff6dd7accad8aaaae826d540ed), [`4f0b3c6`](https://github.com/mastra-ai/mastra/commit/4f0b3c66f196c06448487f680ccbb614d281e2f7), [`74c4f22`](https://github.com/mastra-ai/mastra/commit/74c4f22ed4c71e72598eacc346ba95cdbc00294f), [`81b6a8f`](https://github.com/mastra-ai/mastra/commit/81b6a8ff79f49a7549d15d66624ac1a0b8f5f971), [`e4d366a`](https://github.com/mastra-ai/mastra/commit/e4d366aeb500371dd4210d6aa8361a4c21d87034), [`a4f010b`](https://github.com/mastra-ai/mastra/commit/a4f010b22e4355a5fdee70a1fe0f6e4a692cc29e), [`73b0bb3`](https://github.com/mastra-ai/mastra/commit/73b0bb394dba7c9482eb467a97ab283dbc0ef4db), [`5627a8c`](https://github.com/mastra-ai/mastra/commit/5627a8c6dc11fe3711b3fa7a6ffd6eb34100a306), [`3ff45d1`](https://github.com/mastra-ai/mastra/commit/3ff45d10e0c80c5335a957ab563da72feb623520), [`251df45`](https://github.com/mastra-ai/mastra/commit/251df4531407dfa46d805feb40ff3fb49769f455), [`f894d14`](https://github.com/mastra-ai/mastra/commit/f894d148946629af7b1f452d65a9cf864cec3765), [`c2b9547`](https://github.com/mastra-ai/mastra/commit/c2b9547bf435f56339f23625a743b2147ab1c7a6), [`580b592`](https://github.com/mastra-ai/mastra/commit/580b5927afc82fe460dfdf9a38a902511b6b7e7f), [`58e3931`](https://github.com/mastra-ai/mastra/commit/58e3931af9baa5921688566210f00fb0c10479fa), [`08bb631`](https://github.com/mastra-ai/mastra/commit/08bb631ae2b14684b2678e3549d0b399a6f0561e), [`4fba91b`](https://github.com/mastra-ai/mastra/commit/4fba91bec7c95911dc28e369437596b152b04cd0), [`12b0cc4`](https://github.com/mastra-ai/mastra/commit/12b0cc4077d886b1a552637dedb70a7ade93528c)]:
|
|
93
|
+
- @mastra/core@1.0.0-beta.20
|
|
94
|
+
|
|
3
95
|
## 1.0.0-beta.3
|
|
4
96
|
|
|
5
97
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -13,10 +13,10 @@ pnpm add @mastra/pinecone
|
|
|
13
13
|
```typescript
|
|
14
14
|
import { PineconeVector } from '@mastra/pinecone';
|
|
15
15
|
|
|
16
|
-
const vectorStore = new PineconeVector(
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
);
|
|
16
|
+
const vectorStore = new PineconeVector({
|
|
17
|
+
id: 'my-pinecone',
|
|
18
|
+
apiKey: 'your-api-key',
|
|
19
|
+
});
|
|
20
20
|
|
|
21
21
|
// Create a new index
|
|
22
22
|
await vectorStore.createIndex({ indexName: 'my-index', dimension: 1536, metric: 'cosine' });
|
|
@@ -30,9 +30,9 @@ const ids = await vectorStore.upsert({ indexName: 'my-index', vectors, metadata
|
|
|
30
30
|
const results = await vectorStore.query({
|
|
31
31
|
indexName: 'my-index',
|
|
32
32
|
queryVector: [0.1, 0.2, ...],
|
|
33
|
-
topK: 10,
|
|
34
|
-
filter: { text: { $eq: 'doc1' } },
|
|
35
|
-
includeVector: false,
|
|
33
|
+
topK: 10,
|
|
34
|
+
filter: { text: { $eq: 'doc1' } },
|
|
35
|
+
includeVector: false,
|
|
36
36
|
});
|
|
37
37
|
```
|
|
38
38
|
|
|
@@ -40,11 +40,14 @@ const results = await vectorStore.query({
|
|
|
40
40
|
|
|
41
41
|
Required:
|
|
42
42
|
|
|
43
|
+
- `id`: Unique identifier for this vector store instance
|
|
43
44
|
- `apiKey`: Your Pinecone API key
|
|
44
45
|
|
|
45
46
|
Optional:
|
|
46
47
|
|
|
47
|
-
- `
|
|
48
|
+
- `controllerHostUrl`: Custom Pinecone controller host URL
|
|
49
|
+
- `cloud`: Cloud provider for new index creation ('aws' | 'gcp' | 'azure', default: 'aws')
|
|
50
|
+
- `region`: Region for new index creation (default: 'us-east-1')
|
|
48
51
|
|
|
49
52
|
## Features
|
|
50
53
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# @mastra/pinecone Documentation
|
|
2
|
+
|
|
3
|
+
> Embedded documentation for coding agents
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Read the skill overview
|
|
9
|
+
cat docs/SKILL.md
|
|
10
|
+
|
|
11
|
+
# Get the source map
|
|
12
|
+
cat docs/SOURCE_MAP.json
|
|
13
|
+
|
|
14
|
+
# Read topic documentation
|
|
15
|
+
cat docs/<topic>/01-overview.md
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Structure
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
docs/
|
|
22
|
+
├── SKILL.md # Entry point
|
|
23
|
+
├── README.md # This file
|
|
24
|
+
├── SOURCE_MAP.json # Export index
|
|
25
|
+
├── memory/ (2 files)
|
|
26
|
+
├── rag/ (2 files)
|
|
27
|
+
├── vectors/ (1 files)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Version
|
|
31
|
+
|
|
32
|
+
Package: @mastra/pinecone
|
|
33
|
+
Version: 1.0.0-beta.5
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mastra-pinecone-docs
|
|
3
|
+
description: Documentation for @mastra/pinecone. Includes links to type definitions and readable implementation code in dist/.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# @mastra/pinecone Documentation
|
|
7
|
+
|
|
8
|
+
> **Version**: 1.0.0-beta.5
|
|
9
|
+
> **Package**: @mastra/pinecone
|
|
10
|
+
|
|
11
|
+
## Quick Navigation
|
|
12
|
+
|
|
13
|
+
Use SOURCE_MAP.json to find any export:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
cat docs/SOURCE_MAP.json
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Each export maps to:
|
|
20
|
+
- **types**: `.d.ts` file with JSDoc and API signatures
|
|
21
|
+
- **implementation**: `.js` chunk file with readable source
|
|
22
|
+
- **docs**: Conceptual documentation in `docs/`
|
|
23
|
+
|
|
24
|
+
## Top Exports
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
See SOURCE_MAP.json for the complete list.
|
|
29
|
+
|
|
30
|
+
## Available Topics
|
|
31
|
+
|
|
32
|
+
- [Memory](memory/) - 2 file(s)
|
|
33
|
+
- [Rag](rag/) - 2 file(s)
|
|
34
|
+
- [Vectors](vectors/) - 1 file(s)
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
> Configure storage for Mastra
|
|
2
|
+
|
|
3
|
+
# Storage
|
|
4
|
+
|
|
5
|
+
For Mastra to remember previous interactions, you must configure a storage adapter. Mastra is designed to work with your preferred database provider - choose from the [supported providers](#supported-providers) and pass it to your Mastra instance.
|
|
6
|
+
|
|
7
|
+
```typescript title="src/mastra/index.ts"
|
|
8
|
+
import { Mastra } from "@mastra/core";
|
|
9
|
+
import { LibSQLStore } from "@mastra/libsql";
|
|
10
|
+
|
|
11
|
+
export const mastra = new Mastra({
|
|
12
|
+
storage: new LibSQLStore({
|
|
13
|
+
id: 'mastra-storage',
|
|
14
|
+
url: "file:./mastra.db",
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
```
|
|
18
|
+
On first interaction, Mastra automatically creates the necessary tables following the [core schema](https://mastra.ai/reference/v1/storage/overview#core-schema). This includes tables for messages, threads, resources, workflows, traces, and evaluation datasets.
|
|
19
|
+
|
|
20
|
+
## Supported providers
|
|
21
|
+
|
|
22
|
+
Each provider page includes installation instructions, configuration parameters, and usage examples:
|
|
23
|
+
|
|
24
|
+
- [libSQL Storage](https://mastra.ai/reference/v1/storage/libsql)
|
|
25
|
+
- [PostgreSQL Storage](https://mastra.ai/reference/v1/storage/postgresql)
|
|
26
|
+
- [MongoDB Storage](https://mastra.ai/reference/v1/storage/mongodb)
|
|
27
|
+
- [Upstash Storage](https://mastra.ai/reference/v1/storage/upstash)
|
|
28
|
+
- [Cloudflare D1](https://mastra.ai/reference/v1/storage/cloudflare-d1)
|
|
29
|
+
- [Cloudflare Durable Objects](https://mastra.ai/reference/v1/storage/cloudflare)
|
|
30
|
+
- [Convex](https://mastra.ai/reference/v1/storage/convex)
|
|
31
|
+
- [DynamoDB](https://mastra.ai/reference/v1/storage/dynamodb)
|
|
32
|
+
- [LanceDB](https://mastra.ai/reference/v1/storage/lance)
|
|
33
|
+
- [Microsoft SQL Server](https://mastra.ai/reference/v1/storage/mssql)
|
|
34
|
+
|
|
35
|
+
> **Note:**
|
|
36
|
+
libSQL is the easiest way to get started because it doesn’t require running a separate database server
|
|
37
|
+
|
|
38
|
+
## Configuration scope
|
|
39
|
+
|
|
40
|
+
You can configure storage at two different scopes:
|
|
41
|
+
|
|
42
|
+
### Instance-level storage
|
|
43
|
+
|
|
44
|
+
Add storage to your Mastra instance so all agents, workflows, observability traces and scores share the same memory provider:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { Mastra } from "@mastra/core";
|
|
48
|
+
import { PostgresStore } from "@mastra/pg";
|
|
49
|
+
|
|
50
|
+
export const mastra = new Mastra({
|
|
51
|
+
storage: new PostgresStore({
|
|
52
|
+
id: 'mastra-storage',
|
|
53
|
+
connectionString: process.env.DATABASE_URL,
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// All agents automatically use this storage
|
|
58
|
+
const agent1 = new Agent({ id: "agent-1", memory: new Memory() });
|
|
59
|
+
const agent2 = new Agent({ id: "agent-2", memory: new Memory() });
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
This is useful when all primitives share the same storage backend and have similar performance, scaling, and operational requirements.
|
|
63
|
+
|
|
64
|
+
#### Composite storage
|
|
65
|
+
|
|
66
|
+
Add storage to your Mastra instance using `MastraStorage` and configure individual storage domains to use different storage providers.
|
|
67
|
+
|
|
68
|
+
```typescript title="src/mastra/index.ts"
|
|
69
|
+
import { Mastra } from "@mastra/core";
|
|
70
|
+
import { MastraStorage } from "@mastra/core/storage";
|
|
71
|
+
import { MemoryLibSQL } from "@mastra/libsql";
|
|
72
|
+
import { WorkflowsPG } from "@mastra/pg";
|
|
73
|
+
import { ObservabilityStorageClickhouse } from "@mastra/clickhouse";
|
|
74
|
+
|
|
75
|
+
export const mastra = new Mastra({
|
|
76
|
+
storage: new MastraStorage({
|
|
77
|
+
id: "composite",
|
|
78
|
+
domains: {
|
|
79
|
+
memory: new MemoryLibSQL({ url: "file:./memory.db" }),
|
|
80
|
+
workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
|
|
81
|
+
observability: new ObservabilityStorageClickhouse({
|
|
82
|
+
url: process.env.CLICKHOUSE_URL,
|
|
83
|
+
username: process.env.CLICKHOUSE_USERNAME,
|
|
84
|
+
password: process.env.CLICKHOUSE_PASSWORD,
|
|
85
|
+
}),
|
|
86
|
+
},
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
This is useful when different types of data have different performance or operational requirements, such as low-latency storage for memory, durable storage for workflows, and high-throughput storage for observability.
|
|
92
|
+
|
|
93
|
+
> **Note:**
|
|
94
|
+
See [Storage Domains](https://mastra.ai/reference/v1/storage/composite#storage-domains) for more information.
|
|
95
|
+
|
|
96
|
+
### Agent-level storage
|
|
97
|
+
|
|
98
|
+
Agent-level storage overrides storage configured at the instance-level. Add storage to a specific agent when you need data boundaries or compliance requirements:
|
|
99
|
+
|
|
100
|
+
```typescript title="src/mastra/agents/memory-agent.ts"
|
|
101
|
+
import { Agent } from "@mastra/core/agent";
|
|
102
|
+
import { Memory } from "@mastra/memory";
|
|
103
|
+
import { PostgresStore } from "@mastra/pg";
|
|
104
|
+
|
|
105
|
+
export const agent = new Agent({
|
|
106
|
+
id: "agent",
|
|
107
|
+
memory: new Memory({
|
|
108
|
+
storage: new PostgresStore({
|
|
109
|
+
id: 'agent-storage',
|
|
110
|
+
connectionString: process.env.AGENT_DATABASE_URL,
|
|
111
|
+
}),
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
This is useful when different agents need to store data in separate databases for security, compliance, or organizational reasons.
|
|
117
|
+
|
|
118
|
+
## Threads and resources
|
|
119
|
+
|
|
120
|
+
Mastra organizes memory into threads using two identifiers:
|
|
121
|
+
|
|
122
|
+
- **Thread**: A conversation session containing a sequence of messages (e.g., `convo_123`)
|
|
123
|
+
- **Resource**: An identifier for the entity the thread belongs to, typically a user (e.g., `user_123`)
|
|
124
|
+
|
|
125
|
+
Both identifiers are required for agents to store and recall information:
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
const stream = await agent.stream("message for agent", {
|
|
129
|
+
memory: {
|
|
130
|
+
thread: "convo_123",
|
|
131
|
+
resource: "user_123",
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
> **Note:**
|
|
137
|
+
[Studio](https://mastra.ai/docs/v1/getting-started/studio) automatically generates a thread and resource ID for you. Remember to to pass these explicitly when calling `stream` or `generate` yourself.
|
|
138
|
+
|
|
139
|
+
### Thread title generation
|
|
140
|
+
|
|
141
|
+
Mastra can automatically generate descriptive thread titles based on the user's first message.
|
|
142
|
+
|
|
143
|
+
Use this option when implementing a ChatGPT-style chat interface to render a title alongside each thread in the conversation list (for example, in a sidebar) derived from the thread’s initial user message.
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
export const testAgent = new Agent({
|
|
147
|
+
id: "test-agent",
|
|
148
|
+
memory: new Memory({
|
|
149
|
+
options: {
|
|
150
|
+
generateTitle: true,
|
|
151
|
+
},
|
|
152
|
+
}),
|
|
153
|
+
});
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Title generation runs asynchronously after the agent responds and does not affect response time.
|
|
157
|
+
|
|
158
|
+
To optimize cost or behavior, provide a smaller `model` and custom `instructions`:
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
export const testAgent = new Agent({
|
|
162
|
+
id: "test-agent",
|
|
163
|
+
memory: new Memory({
|
|
164
|
+
options: {
|
|
165
|
+
generateTitle: {
|
|
166
|
+
model: "openai/gpt-4o-mini",
|
|
167
|
+
instructions: "Generate a concise title based on the user's first message",
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
}),
|
|
171
|
+
});
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Semantic recall
|
|
175
|
+
|
|
176
|
+
Semantic recall uses vector embeddings to retrieve relevant past messages based on meaning rather than recency. This requires a vector database instance, which can be configured at the instance or agent level.
|
|
177
|
+
|
|
178
|
+
The vector database doesn't have to be the same as your storage provider. For example, you might use PostgreSQL for storage and Pinecone for vectors:
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { Mastra } from "@mastra/core";
|
|
182
|
+
import { Agent } from "@mastra/core/agent";
|
|
183
|
+
import { Memory } from "@mastra/memory";
|
|
184
|
+
import { PostgresStore } from "@mastra/pg";
|
|
185
|
+
import { PineconeVector } from "@mastra/pinecone";
|
|
186
|
+
|
|
187
|
+
// Instance-level vector configuration
|
|
188
|
+
export const mastra = new Mastra({
|
|
189
|
+
storage: new PostgresStore({
|
|
190
|
+
id: 'mastra-storage',
|
|
191
|
+
connectionString: process.env.DATABASE_URL,
|
|
192
|
+
}),
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
// Agent-level vector configuration
|
|
196
|
+
export const agent = new Agent({
|
|
197
|
+
id: "agent",
|
|
198
|
+
memory: new Memory({
|
|
199
|
+
vector: new PineconeVector({
|
|
200
|
+
id: 'agent-vector',
|
|
201
|
+
apiKey: process.env.PINECONE_API_KEY,
|
|
202
|
+
}),
|
|
203
|
+
options: {
|
|
204
|
+
semanticRecall: {
|
|
205
|
+
topK: 5,
|
|
206
|
+
messageRange: 2,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
}),
|
|
210
|
+
});
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
We support all popular vector providers including [Pinecone](https://mastra.ai/reference/v1/vectors/pinecone), [Chroma](https://mastra.ai/reference/v1/vectors/chroma), [Qdrant](https://mastra.ai/reference/v1/vectors/qdrant), and many more.
|
|
214
|
+
|
|
215
|
+
For more information on configuring semantic recall, see the [Semantic Recall](./semantic-recall) documentation.
|