@mastra/mcp-docs-server 1.0.0-beta.4 → 1.0.0-beta.6
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/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +29 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +411 -211
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fduckdb.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Felasticsearch.md +52 -0
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flance.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Frag.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Freact.md +89 -1
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +9 -0
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +92 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +67 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +201 -1
- package/.docs/organized/changelogs/create-mastra.md +201 -1
- package/.docs/organized/changelogs/mastra.md +201 -1
- package/.docs/organized/code-examples/agui.md +1 -0
- package/.docs/organized/code-examples/ai-sdk-v5.md +1 -0
- package/.docs/organized/code-examples/mcp-server-adapters.md +721 -0
- package/.docs/organized/code-examples/memory-with-processors.md +1 -1
- package/.docs/organized/code-examples/quick-start.md +1 -1
- package/.docs/organized/code-examples/server-app-access.md +342 -0
- package/.docs/raw/agents/adding-voice.mdx +7 -10
- package/.docs/raw/agents/agent-approval.mdx +189 -0
- package/.docs/raw/agents/guardrails.mdx +26 -23
- package/.docs/raw/agents/networks.mdx +2 -2
- package/.docs/raw/agents/overview.mdx +27 -62
- package/.docs/raw/agents/processors.mdx +279 -0
- package/.docs/raw/agents/using-tools.mdx +4 -5
- package/.docs/raw/course/01-first-agent/05-running-playground.md +5 -5
- package/.docs/raw/course/01-first-agent/09-testing-your-agent.md +3 -3
- package/.docs/raw/course/01-first-agent/13-testing-your-tool.md +3 -3
- package/.docs/raw/course/01-first-agent/17-testing-memory.md +2 -2
- package/.docs/raw/course/04-workflows/07-using-playground.md +1 -1
- package/.docs/raw/deployment/building-mastra.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/index.mdx +20 -27
- package/.docs/raw/deployment/cloud-providers/netlify-deployer.mdx +44 -13
- package/.docs/raw/deployment/mastra-cloud/observability.mdx +19 -17
- package/.docs/raw/deployment/mastra-cloud/setting-up.mdx +1 -1
- package/.docs/raw/deployment/overview.mdx +2 -2
- package/.docs/raw/deployment/web-framework.mdx +5 -5
- package/.docs/raw/evals/custom-scorers.mdx +3 -5
- package/.docs/raw/evals/overview.mdx +2 -3
- package/.docs/raw/evals/running-in-ci.mdx +0 -2
- package/.docs/raw/{guides/guide → getting-started}/manual-install.mdx +2 -2
- package/.docs/raw/getting-started/project-structure.mdx +1 -1
- package/.docs/raw/getting-started/start.mdx +72 -0
- package/.docs/raw/getting-started/studio.mdx +1 -1
- package/.docs/raw/{frameworks/agentic-uis/ai-sdk.mdx → guides/build-your-ui/ai-sdk-ui.mdx} +113 -11
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/astro.mdx +23 -25
- package/.docs/raw/{frameworks/servers → guides/getting-started}/express.mdx +3 -4
- package/.docs/raw/guides/{quickstarts/nextjs.mdx → getting-started/next-js.mdx} +11 -11
- package/.docs/raw/guides/{quickstarts/standalone-server.mdx → getting-started/quickstart.mdx} +7 -7
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/sveltekit.mdx +23 -25
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/vite-react.mdx +7 -7
- package/.docs/raw/guides/guide/ai-recruiter.mdx +2 -3
- package/.docs/raw/guides/guide/chef-michel.mdx +2 -3
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +2 -2
- package/.docs/raw/guides/guide/research-assistant.mdx +7 -8
- package/.docs/raw/guides/guide/stock-agent.mdx +4 -6
- package/.docs/raw/guides/guide/web-search.mdx +12 -10
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +421 -0
- package/.docs/raw/guides/index.mdx +3 -35
- package/.docs/raw/guides/migrations/agentnetwork.mdx +4 -4
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +1 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +40 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/tools.mdx +5 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +51 -0
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +2 -2
- package/.docs/raw/index.mdx +2 -2
- package/.docs/raw/mcp/overview.mdx +3 -5
- package/.docs/raw/memory/memory-processors.mdx +264 -79
- package/.docs/raw/memory/semantic-recall.mdx +7 -7
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +2 -4
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +2 -4
- package/.docs/raw/memory/storage/memory-with-pg.mdx +2 -4
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +2 -4
- package/.docs/raw/memory/threads-and-resources.mdx +3 -3
- package/.docs/raw/memory/working-memory.mdx +14 -7
- package/.docs/raw/{logging.mdx → observability/logging.mdx} +1 -1
- package/.docs/raw/observability/overview.mdx +2 -3
- package/.docs/raw/observability/tracing/bridges/otel.mdx +176 -0
- package/.docs/raw/observability/tracing/exporters/arize.mdx +17 -0
- package/.docs/raw/observability/tracing/exporters/braintrust.mdx +19 -0
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +20 -0
- package/.docs/raw/observability/tracing/exporters/langsmith.mdx +12 -0
- package/.docs/raw/observability/tracing/exporters/otel.mdx +25 -5
- package/.docs/raw/observability/tracing/exporters/posthog.mdx +107 -0
- package/.docs/raw/observability/tracing/overview.mdx +74 -8
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +0 -1
- package/.docs/raw/rag/chunking-and-embedding.mdx +16 -17
- package/.docs/raw/rag/overview.mdx +3 -2
- package/.docs/raw/rag/retrieval.mdx +43 -38
- package/.docs/raw/rag/vector-databases.mdx +93 -2
- package/.docs/raw/reference/agents/agent.mdx +7 -10
- package/.docs/raw/reference/agents/generate.mdx +55 -6
- package/.docs/raw/reference/agents/generateLegacy.mdx +2 -2
- package/.docs/raw/reference/agents/getLLM.mdx +1 -1
- package/.docs/raw/reference/agents/network.mdx +46 -3
- package/.docs/raw/reference/cli/mastra.mdx +2 -1
- package/.docs/raw/reference/client-js/agents.mdx +3 -3
- package/.docs/raw/reference/client-js/memory.mdx +43 -0
- package/.docs/raw/reference/client-js/workflows.mdx +92 -63
- package/.docs/raw/reference/core/getLogger.mdx +1 -1
- package/.docs/raw/reference/core/listLogs.mdx +1 -1
- package/.docs/raw/reference/core/listLogsByRunId.mdx +1 -1
- package/.docs/raw/reference/core/mastra-model-gateway.mdx +5 -19
- package/.docs/raw/reference/core/setLogger.mdx +1 -1
- package/.docs/raw/reference/core/setTelemetry.mdx +1 -1
- package/.docs/raw/reference/deployer/netlify.mdx +1 -2
- package/.docs/raw/reference/evals/answer-relevancy.mdx +28 -98
- package/.docs/raw/reference/evals/answer-similarity.mdx +12 -258
- package/.docs/raw/reference/evals/bias.mdx +29 -87
- package/.docs/raw/reference/evals/completeness.mdx +31 -90
- package/.docs/raw/reference/evals/content-similarity.mdx +28 -88
- package/.docs/raw/reference/evals/context-precision.mdx +28 -130
- package/.docs/raw/reference/evals/context-relevance.mdx +11 -11
- package/.docs/raw/reference/evals/faithfulness.mdx +28 -101
- package/.docs/raw/reference/evals/hallucination.mdx +28 -103
- package/.docs/raw/reference/evals/keyword-coverage.mdx +28 -107
- package/.docs/raw/reference/evals/noise-sensitivity.mdx +11 -11
- package/.docs/raw/reference/evals/prompt-alignment.mdx +15 -15
- package/.docs/raw/reference/evals/scorer-utils.mdx +362 -0
- package/.docs/raw/reference/evals/textual-difference.mdx +27 -100
- package/.docs/raw/reference/evals/tone-consistency.mdx +25 -98
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +7 -7
- package/.docs/raw/reference/evals/toxicity.mdx +29 -92
- package/.docs/raw/reference/index.mdx +1 -0
- package/.docs/raw/reference/memory/memory-class.mdx +5 -7
- package/.docs/raw/reference/observability/tracing/bridges/otel.mdx +150 -0
- package/.docs/raw/reference/observability/tracing/configuration.mdx +0 -4
- package/.docs/raw/reference/observability/tracing/exporters/arize.mdx +4 -0
- package/.docs/raw/reference/observability/tracing/exporters/langsmith.mdx +17 -1
- package/.docs/raw/reference/observability/tracing/exporters/otel.mdx +6 -0
- package/.docs/raw/reference/observability/tracing/exporters/posthog.mdx +132 -0
- package/.docs/raw/reference/observability/tracing/instances.mdx +0 -4
- package/.docs/raw/reference/observability/tracing/interfaces.mdx +29 -4
- package/.docs/raw/reference/observability/tracing/spans.mdx +0 -4
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +1 -1
- package/.docs/raw/reference/processors/language-detector.mdx +10 -3
- package/.docs/raw/reference/processors/message-history-processor.mdx +131 -0
- package/.docs/raw/reference/processors/moderation-processor.mdx +12 -5
- package/.docs/raw/reference/processors/pii-detector.mdx +12 -5
- package/.docs/raw/reference/processors/processor-interface.mdx +502 -0
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +10 -3
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +197 -0
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +3 -4
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +2 -2
- package/.docs/raw/reference/processors/tool-call-filter.mdx +125 -0
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +1 -1
- package/.docs/raw/reference/processors/working-memory-processor.mdx +221 -0
- package/.docs/raw/reference/rag/embeddings.mdx +5 -5
- package/.docs/raw/reference/rag/rerank.mdx +1 -2
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +0 -1
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +37 -0
- package/.docs/raw/reference/storage/convex.mdx +164 -0
- package/.docs/raw/reference/storage/lance.mdx +33 -0
- package/.docs/raw/reference/storage/libsql.mdx +37 -0
- package/.docs/raw/reference/storage/mongodb.mdx +39 -0
- package/.docs/raw/reference/storage/mssql.mdx +37 -0
- package/.docs/raw/reference/storage/postgresql.mdx +37 -0
- package/.docs/raw/reference/streaming/ChunkType.mdx +1 -1
- package/.docs/raw/reference/streaming/agents/stream.mdx +64 -2
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +7 -9
- package/.docs/raw/reference/streaming/workflows/{resumeStreamVNext.mdx → resumeStream.mdx} +51 -11
- package/.docs/raw/reference/streaming/workflows/stream.mdx +83 -24
- package/.docs/raw/reference/templates/overview.mdx +1 -4
- package/.docs/raw/reference/tools/client.mdx +1 -2
- package/.docs/raw/reference/tools/create-tool.mdx +132 -0
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +5 -5
- package/.docs/raw/reference/tools/mcp-client.mdx +76 -21
- package/.docs/raw/reference/tools/mcp-server.mdx +1 -2
- package/.docs/raw/reference/tools/vector-query-tool.mdx +14 -15
- package/.docs/raw/reference/vectors/chroma.mdx +81 -1
- package/.docs/raw/reference/vectors/convex.mdx +429 -0
- package/.docs/raw/reference/vectors/couchbase.mdx +24 -17
- package/.docs/raw/reference/vectors/duckdb.mdx +462 -0
- package/.docs/raw/reference/vectors/elasticsearch.mdx +310 -0
- package/.docs/raw/reference/vectors/lance.mdx +38 -22
- package/.docs/raw/reference/vectors/libsql.mdx +35 -2
- package/.docs/raw/reference/vectors/mongodb.mdx +35 -2
- package/.docs/raw/reference/vectors/opensearch.mdx +37 -16
- package/.docs/raw/reference/vectors/pg.mdx +43 -36
- package/.docs/raw/reference/vectors/pinecone.mdx +48 -1
- package/.docs/raw/reference/vectors/qdrant.mdx +36 -1
- package/.docs/raw/reference/vectors/turbopuffer.mdx +74 -0
- package/.docs/raw/reference/voice/google.mdx +159 -20
- package/.docs/raw/reference/voice/openai-realtime.mdx +2 -2
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +2 -3
- package/.docs/raw/reference/voice/voice.addTools.mdx +1 -1
- package/.docs/raw/reference/voice/voice.answer.mdx +1 -1
- package/.docs/raw/reference/voice/voice.close.mdx +1 -1
- package/.docs/raw/reference/voice/voice.connect.mdx +1 -1
- package/.docs/raw/reference/voice/voice.off.mdx +1 -1
- package/.docs/raw/reference/voice/voice.on.mdx +1 -1
- package/.docs/raw/reference/voice/voice.send.mdx +1 -1
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +142 -0
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +44 -0
- package/.docs/raw/reference/workflows/run-methods/start.mdx +44 -0
- package/.docs/raw/reference/workflows/run.mdx +13 -5
- package/.docs/raw/reference/workflows/step.mdx +13 -0
- package/.docs/raw/reference/workflows/workflow.mdx +19 -0
- package/.docs/raw/server-db/mastra-client.mdx +1 -2
- package/.docs/raw/server-db/mastra-server.mdx +30 -1
- package/.docs/raw/server-db/request-context.mdx +0 -1
- package/.docs/raw/server-db/storage.mdx +11 -0
- package/.docs/raw/streaming/overview.mdx +26 -15
- package/.docs/raw/streaming/tool-streaming.mdx +48 -5
- package/.docs/raw/streaming/workflow-streaming.mdx +5 -11
- package/.docs/raw/tools-mcp/advanced-usage.mdx +1 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +3 -5
- package/.docs/raw/voice/overview.mdx +21 -41
- package/.docs/raw/voice/speech-to-speech.mdx +4 -4
- package/.docs/raw/voice/speech-to-text.mdx +1 -2
- package/.docs/raw/voice/text-to-speech.mdx +1 -2
- package/.docs/raw/workflows/control-flow.mdx +180 -0
- package/.docs/raw/workflows/error-handling.mdx +1 -0
- package/.docs/raw/workflows/human-in-the-loop.mdx +4 -4
- package/.docs/raw/workflows/overview.mdx +56 -44
- package/.docs/raw/workflows/snapshots.mdx +1 -0
- package/.docs/raw/workflows/suspend-and-resume.mdx +85 -16
- package/.docs/raw/workflows/time-travel.mdx +313 -0
- package/.docs/raw/workflows/workflow-state.mdx +191 -0
- package/CHANGELOG.md +18 -0
- package/dist/{chunk-5NJC7NRO.js → chunk-4CM2BQNP.js} +24 -4
- package/dist/prepare-docs/package-changes.d.ts.map +1 -1
- package/dist/prepare-docs/prepare.js +1 -1
- package/dist/stdio.js +1 -1
- package/package.json +7 -7
- package/.docs/raw/agents/human-in-the-loop-with-tools.mdx +0 -90
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +0 -102
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +0 -179
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +0 -379
- package/.docs/raw/getting-started/quickstart.mdx +0 -27
- package/.docs/raw/getting-started/templates.mdx +0 -73
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +0 -47
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +0 -153
- /package/.docs/raw/{frameworks/agentic-uis → guides/build-your-ui}/assistant-ui.mdx +0 -0
- /package/.docs/raw/{frameworks/agentic-uis → guides/build-your-ui}/copilotkit.mdx +0 -0
|
@@ -83,12 +83,8 @@ The simplest way is to use Mastra's model router with `provider/model` strings:
|
|
|
83
83
|
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
84
84
|
import { embedMany } from "ai";
|
|
85
85
|
|
|
86
|
-
const embeddingModel = new ModelRouterEmbeddingModel(
|
|
87
|
-
"openai/text-embedding-3-small",
|
|
88
|
-
);
|
|
89
|
-
|
|
90
86
|
const { embeddings } = await embedMany({
|
|
91
|
-
model:
|
|
87
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
92
88
|
values: chunks.map((chunk) => chunk.text),
|
|
93
89
|
});
|
|
94
90
|
```
|
|
@@ -105,11 +101,11 @@ The model router automatically handles API key detection from environment variab
|
|
|
105
101
|
You can also use AI SDK embedding models directly:
|
|
106
102
|
|
|
107
103
|
```ts showLineNumbers copy
|
|
108
|
-
import { openai } from "@ai-sdk/openai";
|
|
109
104
|
import { embedMany } from "ai";
|
|
105
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
110
106
|
|
|
111
107
|
const { embeddings } = await embedMany({
|
|
112
|
-
model:
|
|
108
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
113
109
|
values: chunks.map((chunk) => chunk.text),
|
|
114
110
|
});
|
|
115
111
|
```
|
|
@@ -129,19 +125,22 @@ Here are some supported models:
|
|
|
129
125
|
OpenAI (text-embedding-3 models):
|
|
130
126
|
|
|
131
127
|
```ts
|
|
128
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
129
|
+
|
|
132
130
|
const { embeddings } = await embedMany({
|
|
133
|
-
model:
|
|
131
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
132
|
+
options: {
|
|
134
133
|
dimensions: 256, // Only supported in text-embedding-3 and later
|
|
135
|
-
}
|
|
134
|
+
},
|
|
136
135
|
values: chunks.map((chunk) => chunk.text),
|
|
137
136
|
});
|
|
138
137
|
```
|
|
139
138
|
|
|
140
|
-
Google (text-embedding-
|
|
139
|
+
Google (text-embedding-001):
|
|
141
140
|
|
|
142
141
|
```ts
|
|
143
142
|
const { embeddings } = await embedMany({
|
|
144
|
-
model: google
|
|
143
|
+
model: "google/gemini-embedding-001", {
|
|
145
144
|
outputDimensionality: 256, // Truncates excessive values from the end
|
|
146
145
|
}),
|
|
147
146
|
values: chunks.map((chunk) => chunk.text),
|
|
@@ -158,8 +157,6 @@ Here's an example showing document processing and embedding generation with both
|
|
|
158
157
|
|
|
159
158
|
```ts showLineNumbers copy
|
|
160
159
|
import { embedMany } from "ai";
|
|
161
|
-
import { openai } from "@ai-sdk/openai";
|
|
162
|
-
import { cohere } from "@ai-sdk/cohere";
|
|
163
160
|
|
|
164
161
|
import { MDocument } from "@mastra/rag";
|
|
165
162
|
|
|
@@ -177,16 +174,18 @@ const chunks = await doc.chunk({
|
|
|
177
174
|
});
|
|
178
175
|
|
|
179
176
|
// Generate embeddings with OpenAI
|
|
180
|
-
|
|
181
|
-
|
|
177
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
178
|
+
|
|
179
|
+
const { embeddings } = await embedMany({
|
|
180
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
182
181
|
values: chunks.map((chunk) => chunk.text),
|
|
183
182
|
});
|
|
184
183
|
|
|
185
184
|
// OR
|
|
186
185
|
|
|
187
186
|
// Generate embeddings with Cohere
|
|
188
|
-
const { embeddings
|
|
189
|
-
model: cohere
|
|
187
|
+
const { embeddings } = await embedMany({
|
|
188
|
+
model: "cohere/embed-english-v3.0",
|
|
190
189
|
values: chunks.map((chunk) => chunk.text),
|
|
191
190
|
});
|
|
192
191
|
|
|
@@ -20,7 +20,6 @@ To implement RAG, you process your documents into chunks, create embeddings, sto
|
|
|
20
20
|
|
|
21
21
|
```ts showLineNumbers copy
|
|
22
22
|
import { embedMany } from "ai";
|
|
23
|
-
import { openai } from "@ai-sdk/openai";
|
|
24
23
|
import { PgVector } from "@mastra/pg";
|
|
25
24
|
import { MDocument } from "@mastra/rag";
|
|
26
25
|
import { z } from "zod";
|
|
@@ -36,9 +35,11 @@ const chunks = await doc.chunk({
|
|
|
36
35
|
});
|
|
37
36
|
|
|
38
37
|
// 3. Generate embeddings; we need to pass the text of each chunk
|
|
38
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
39
|
+
|
|
39
40
|
const { embeddings } = await embedMany({
|
|
40
41
|
values: chunks.map((chunk) => chunk.text),
|
|
41
|
-
model:
|
|
42
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small")
|
|
42
43
|
});
|
|
43
44
|
|
|
44
45
|
// 4. Store in vector database
|
|
@@ -27,14 +27,14 @@ Mastra provides flexible retrieval options with support for semantic search, fil
|
|
|
27
27
|
The simplest approach is direct semantic search. This method uses vector similarity to find chunks that are semantically similar to the query:
|
|
28
28
|
|
|
29
29
|
```ts showLineNumbers copy
|
|
30
|
-
import { openai } from "@ai-sdk/openai";
|
|
31
30
|
import { embed } from "ai";
|
|
32
31
|
import { PgVector } from "@mastra/pg";
|
|
32
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
33
33
|
|
|
34
34
|
// Convert query to embedding
|
|
35
35
|
const { embedding } = await embed({
|
|
36
36
|
value: "What are the main points in the article?",
|
|
37
|
-
model:
|
|
37
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
// Query vector store
|
|
@@ -52,6 +52,8 @@ const results = await pgVector.query({
|
|
|
52
52
|
console.log(results);
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
+
The `topK` parameter specifies the maximum number of most similar results to return from the vector search.
|
|
56
|
+
|
|
55
57
|
Results include both the text content and a similarity score:
|
|
56
58
|
|
|
57
59
|
```ts showLineNumbers copy
|
|
@@ -70,8 +72,6 @@ Results include both the text content and a similarity score:
|
|
|
70
72
|
];
|
|
71
73
|
```
|
|
72
74
|
|
|
73
|
-
For an example of how to use the basic retrieval method, see the [Retrieve Results](/examples/v1/rag/query/retrieve-results) example.
|
|
74
|
-
|
|
75
75
|
## Advanced Retrieval options
|
|
76
76
|
|
|
77
77
|
### Metadata Filtering
|
|
@@ -156,7 +156,7 @@ Sometimes you want to give your agent the ability to query a vector database dir
|
|
|
156
156
|
const vectorQueryTool = createVectorQueryTool({
|
|
157
157
|
vectorStoreName: "pgVector",
|
|
158
158
|
indexName: "embeddings",
|
|
159
|
-
model:
|
|
159
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
160
160
|
});
|
|
161
161
|
```
|
|
162
162
|
|
|
@@ -170,14 +170,21 @@ This is particularly useful when:
|
|
|
170
170
|
|
|
171
171
|
#### Database-Specific Configurations
|
|
172
172
|
|
|
173
|
-
The Vector Query Tool supports database-specific configurations that enable you to leverage unique features and optimizations of different vector stores
|
|
173
|
+
The Vector Query Tool supports database-specific configurations that enable you to leverage unique features and optimizations of different vector stores.
|
|
174
|
+
|
|
175
|
+
:::note
|
|
176
|
+
These configurations are for **query-time options** like namespaces, performance tuning, and filtering—not for database connection setup.
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
Connection credentials (URLs, auth tokens) are configured when you instantiate the vector store class (e.g., `new LibSQLVector({ connectionUrl: '...' })`).
|
|
180
|
+
:::
|
|
174
181
|
|
|
175
182
|
```ts showLineNumbers copy
|
|
176
183
|
// Pinecone with namespace
|
|
177
184
|
const pineconeQueryTool = createVectorQueryTool({
|
|
178
185
|
vectorStoreName: "pinecone",
|
|
179
186
|
indexName: "docs",
|
|
180
|
-
model:
|
|
187
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
181
188
|
databaseConfig: {
|
|
182
189
|
pinecone: {
|
|
183
190
|
namespace: "production", // Isolate data by environment
|
|
@@ -189,7 +196,7 @@ const pineconeQueryTool = createVectorQueryTool({
|
|
|
189
196
|
const pgVectorQueryTool = createVectorQueryTool({
|
|
190
197
|
vectorStoreName: "postgres",
|
|
191
198
|
indexName: "embeddings",
|
|
192
|
-
model:
|
|
199
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
193
200
|
databaseConfig: {
|
|
194
201
|
pgvector: {
|
|
195
202
|
minScore: 0.7, // Filter low-quality results
|
|
@@ -203,7 +210,7 @@ const pgVectorQueryTool = createVectorQueryTool({
|
|
|
203
210
|
const chromaQueryTool = createVectorQueryTool({
|
|
204
211
|
vectorStoreName: "chroma",
|
|
205
212
|
indexName: "documents",
|
|
206
|
-
model:
|
|
213
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
207
214
|
databaseConfig: {
|
|
208
215
|
chroma: {
|
|
209
216
|
where: { category: "technical" },
|
|
@@ -216,7 +223,7 @@ const chromaQueryTool = createVectorQueryTool({
|
|
|
216
223
|
const lanceQueryTool = createVectorQueryTool({
|
|
217
224
|
vectorStoreName: "lance",
|
|
218
225
|
indexName: "documents",
|
|
219
|
-
model:
|
|
226
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
220
227
|
databaseConfig: {
|
|
221
228
|
lance: {
|
|
222
229
|
tableName: "myVectors", // Specify which table to query
|
|
@@ -272,13 +279,12 @@ When implementing filtering, these prompts are required in the agent's instructi
|
|
|
272
279
|
<TabItem value="pgvector" label="pgVector">
|
|
273
280
|
|
|
274
281
|
```ts showLineNumbers copy
|
|
275
|
-
import { openai } from "@ai-sdk/openai";
|
|
276
282
|
import { PGVECTOR_PROMPT } from "@mastra/pg";
|
|
277
283
|
|
|
278
284
|
export const ragAgent = new Agent({
|
|
279
285
|
id: "rag-agent",
|
|
280
286
|
name: "RAG Agent",
|
|
281
|
-
model: openai
|
|
287
|
+
model: "openai/gpt-5.1",
|
|
282
288
|
instructions: `
|
|
283
289
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
284
290
|
${PGVECTOR_PROMPT}
|
|
@@ -292,13 +298,12 @@ export const ragAgent = new Agent({
|
|
|
292
298
|
<TabItem value="pinecone" label="Pinecone">
|
|
293
299
|
|
|
294
300
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
295
|
-
import { openai } from "@ai-sdk/openai";
|
|
296
301
|
import { PINECONE_PROMPT } from "@mastra/pinecone";
|
|
297
302
|
|
|
298
303
|
export const ragAgent = new Agent({
|
|
299
304
|
id: "rag-agent",
|
|
300
305
|
name: "RAG Agent",
|
|
301
|
-
model: openai
|
|
306
|
+
model: "openai/gpt-5.1",
|
|
302
307
|
instructions: `
|
|
303
308
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
304
309
|
${PINECONE_PROMPT}
|
|
@@ -312,13 +317,12 @@ export const ragAgent = new Agent({
|
|
|
312
317
|
<TabItem value="qdrant" label="Qdrant">
|
|
313
318
|
|
|
314
319
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
315
|
-
import { openai } from "@ai-sdk/openai";
|
|
316
320
|
import { QDRANT_PROMPT } from "@mastra/qdrant";
|
|
317
321
|
|
|
318
322
|
export const ragAgent = new Agent({
|
|
319
323
|
id: "rag-agent",
|
|
320
324
|
name: "RAG Agent",
|
|
321
|
-
model: openai
|
|
325
|
+
model: "openai/gpt-5.1",
|
|
322
326
|
instructions: `
|
|
323
327
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
324
328
|
${QDRANT_PROMPT}
|
|
@@ -332,13 +336,12 @@ export const ragAgent = new Agent({
|
|
|
332
336
|
<TabItem value="chroma" label="Chroma">
|
|
333
337
|
|
|
334
338
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
335
|
-
import { openai } from "@ai-sdk/openai";
|
|
336
339
|
import { CHROMA_PROMPT } from "@mastra/chroma";
|
|
337
340
|
|
|
338
341
|
export const ragAgent = new Agent({
|
|
339
342
|
id: "rag-agent",
|
|
340
343
|
name: "RAG Agent",
|
|
341
|
-
model: openai
|
|
344
|
+
model: "openai/gpt-5.1",
|
|
342
345
|
instructions: `
|
|
343
346
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
344
347
|
${CHROMA_PROMPT}
|
|
@@ -352,13 +355,12 @@ export const ragAgent = new Agent({
|
|
|
352
355
|
<TabItem value="astra" label="Astra">
|
|
353
356
|
|
|
354
357
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
355
|
-
import { openai } from "@ai-sdk/openai";
|
|
356
358
|
import { ASTRA_PROMPT } from "@mastra/astra";
|
|
357
359
|
|
|
358
360
|
export const ragAgent = new Agent({
|
|
359
361
|
id: "rag-agent",
|
|
360
362
|
name: "RAG Agent",
|
|
361
|
-
model: openai
|
|
363
|
+
model: "openai/gpt-5.1",
|
|
362
364
|
instructions: `
|
|
363
365
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
364
366
|
${ASTRA_PROMPT}
|
|
@@ -372,13 +374,12 @@ export const ragAgent = new Agent({
|
|
|
372
374
|
<TabItem value="libsql" label="LibSQL">
|
|
373
375
|
|
|
374
376
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
375
|
-
import { openai } from "@ai-sdk/openai";
|
|
376
377
|
import { LIBSQL_PROMPT } from "@mastra/libsql";
|
|
377
378
|
|
|
378
379
|
export const ragAgent = new Agent({
|
|
379
380
|
id: "rag-agent",
|
|
380
381
|
name: "RAG Agent",
|
|
381
|
-
model: openai
|
|
382
|
+
model: "openai/gpt-5.1",
|
|
382
383
|
instructions: `
|
|
383
384
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
384
385
|
${LIBSQL_PROMPT}
|
|
@@ -392,13 +393,12 @@ export const ragAgent = new Agent({
|
|
|
392
393
|
<TabItem value="upstash" label="Upstash">
|
|
393
394
|
|
|
394
395
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
395
|
-
import { openai } from "@ai-sdk/openai";
|
|
396
396
|
import { UPSTASH_PROMPT } from "@mastra/upstash";
|
|
397
397
|
|
|
398
398
|
export const ragAgent = new Agent({
|
|
399
399
|
id: "rag-agent",
|
|
400
400
|
name: "RAG Agent",
|
|
401
|
-
model: openai
|
|
401
|
+
model: "openai/gpt-5.1",
|
|
402
402
|
instructions: `
|
|
403
403
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
404
404
|
${UPSTASH_PROMPT}
|
|
@@ -412,13 +412,12 @@ export const ragAgent = new Agent({
|
|
|
412
412
|
<TabItem value="vectorize" label="Vectorize">
|
|
413
413
|
|
|
414
414
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
415
|
-
import { openai } from "@ai-sdk/openai";
|
|
416
415
|
import { VECTORIZE_PROMPT } from "@mastra/vectorize";
|
|
417
416
|
|
|
418
417
|
export const ragAgent = new Agent({
|
|
419
418
|
id: "rag-agent",
|
|
420
419
|
name: "RAG Agent",
|
|
421
|
-
model: openai
|
|
420
|
+
model: "openai/gpt-5.1",
|
|
422
421
|
instructions: `
|
|
423
422
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
424
423
|
${VECTORIZE_PROMPT}
|
|
@@ -432,13 +431,12 @@ export const ragAgent = new Agent({
|
|
|
432
431
|
<TabItem value="mongodb" label="MongoDB">
|
|
433
432
|
|
|
434
433
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
435
|
-
import { openai } from "@ai-sdk/openai";
|
|
436
434
|
import { MONGODB_PROMPT } from "@mastra/mongodb";
|
|
437
435
|
|
|
438
436
|
export const ragAgent = new Agent({
|
|
439
437
|
id: "rag-agent",
|
|
440
438
|
name: "RAG Agent",
|
|
441
|
-
model: openai
|
|
439
|
+
model: "openai/gpt-5.1",
|
|
442
440
|
instructions: `
|
|
443
441
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
444
442
|
${MONGODB_PROMPT}
|
|
@@ -452,13 +450,12 @@ export const ragAgent = new Agent({
|
|
|
452
450
|
<TabItem value="opensearch" label="OpenSearch">
|
|
453
451
|
|
|
454
452
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
455
|
-
import { openai } from "@ai-sdk/openai";
|
|
456
453
|
import { OPENSEARCH_PROMPT } from "@mastra/opensearch";
|
|
457
454
|
|
|
458
455
|
export const ragAgent = new Agent({
|
|
459
456
|
id: "rag-agent",
|
|
460
457
|
name: "RAG Agent",
|
|
461
|
-
model: openai
|
|
458
|
+
model: "openai/gpt-5.1",
|
|
462
459
|
instructions: `
|
|
463
460
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
464
461
|
${OPENSEARCH_PROMPT}
|
|
@@ -472,13 +469,12 @@ export const ragAgent = new Agent({
|
|
|
472
469
|
<TabItem value="s3vectors" label="S3Vectors">
|
|
473
470
|
|
|
474
471
|
```ts title="vector-store.ts" showLineNumbers copy
|
|
475
|
-
import { openai } from "@ai-sdk/openai";
|
|
476
472
|
import { S3VECTORS_PROMPT } from "@mastra/s3vectors";
|
|
477
473
|
|
|
478
474
|
export const ragAgent = new Agent({
|
|
479
475
|
id: "rag-agent",
|
|
480
476
|
name: "RAG Agent",
|
|
481
|
-
model: openai
|
|
477
|
+
model: "openai/gpt-5.1",
|
|
482
478
|
instructions: `
|
|
483
479
|
Process queries using the provided context. Structure responses to be concise and relevant.
|
|
484
480
|
${S3VECTORS_PROMPT}
|
|
@@ -502,7 +498,6 @@ Initial vector similarity search can sometimes miss nuanced relevance. Re-rankin
|
|
|
502
498
|
Here's how to use re-ranking:
|
|
503
499
|
|
|
504
500
|
```ts showLineNumbers copy
|
|
505
|
-
import { openai } from "@ai-sdk/openai";
|
|
506
501
|
import {
|
|
507
502
|
rerankWithScorer as rerank,
|
|
508
503
|
MastraAgentRelevanceScorer
|
|
@@ -516,19 +511,31 @@ const initialResults = await pgVector.query({
|
|
|
516
511
|
});
|
|
517
512
|
|
|
518
513
|
// Create a relevance scorer
|
|
519
|
-
const relevanceProvider = new MastraAgentRelevanceScorer('relevance-scorer', openai
|
|
514
|
+
const relevanceProvider = new MastraAgentRelevanceScorer('relevance-scorer', "openai/gpt-5.1");
|
|
520
515
|
|
|
521
516
|
// Re-rank the results
|
|
522
517
|
const rerankedResults = await rerank({
|
|
523
518
|
results: initialResults,
|
|
524
519
|
query,
|
|
525
|
-
|
|
520
|
+
scorer: relevanceProvider,
|
|
526
521
|
options: {
|
|
522
|
+
weights: {
|
|
523
|
+
semantic: 0.5, // How well the content matches the query semantically
|
|
524
|
+
vector: 0.3, // Original vector similarity score
|
|
525
|
+
position: 0.2, // Preserves original result ordering
|
|
526
|
+
},
|
|
527
527
|
topK: 10,
|
|
528
528
|
},
|
|
529
529
|
);
|
|
530
530
|
```
|
|
531
531
|
|
|
532
|
+
The weights control how different factors influence the final ranking:
|
|
533
|
+
|
|
534
|
+
- `semantic`: Higher values prioritize semantic understanding and relevance to the query
|
|
535
|
+
- `vector`: Higher values favor the original vector similarity scores
|
|
536
|
+
- `position`: Higher values help maintain the original ordering of results
|
|
537
|
+
|
|
538
|
+
|
|
532
539
|
> **Note:** For semantic scoring to work properly during re-ranking, each result must include the text content in its `metadata.text` field.
|
|
533
540
|
|
|
534
541
|
You can also use other relevance score providers like Cohere or ZeroEntropy:
|
|
@@ -545,8 +552,6 @@ The re-ranked results combine vector similarity with semantic understanding to i
|
|
|
545
552
|
|
|
546
553
|
For more details about re-ranking, see the [rerank()](/reference/v1/rag/rerankWithScorer) method.
|
|
547
554
|
|
|
548
|
-
For an example of how to use the re-ranking method, see the Re-ranking Results example in the examples section.
|
|
549
|
-
|
|
550
555
|
### Graph-based Retrieval
|
|
551
556
|
|
|
552
557
|
For documents with complex relationships, graph-based retrieval can follow connections between chunks. This helps when:
|
|
@@ -561,7 +566,7 @@ Example setup:
|
|
|
561
566
|
const graphQueryTool = createGraphQueryTool({
|
|
562
567
|
vectorStoreName: "pgVector",
|
|
563
568
|
indexName: "embeddings",
|
|
564
|
-
model:
|
|
569
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
565
570
|
graphOptions: {
|
|
566
571
|
threshold: 0.7,
|
|
567
572
|
},
|
|
@@ -252,6 +252,27 @@ await store.createIndex({
|
|
|
252
252
|
dimension: 1536,
|
|
253
253
|
});
|
|
254
254
|
|
|
255
|
+
await store.upsert({
|
|
256
|
+
indexName: "my-collection",
|
|
257
|
+
vectors: embeddings,
|
|
258
|
+
metadata: chunks.map((chunk) => ({ text: chunk.text })),
|
|
259
|
+
});
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
</TabItem>
|
|
263
|
+
|
|
264
|
+
<TabItem value="elasticsearch" label="ElasticSearch">
|
|
265
|
+
|
|
266
|
+
```ts title="vector-store.ts" showLineNumbers copy
|
|
267
|
+
import { ElasticSearchVector } from "@mastra/elasticsearch";
|
|
268
|
+
|
|
269
|
+
const store = new ElasticSearchVector({ url: process.env.ELASTICSEARCH_URL });
|
|
270
|
+
|
|
271
|
+
await store.createIndex({
|
|
272
|
+
indexName: "my-collection",
|
|
273
|
+
dimension: 1536,
|
|
274
|
+
});
|
|
275
|
+
|
|
255
276
|
await store.upsert({
|
|
256
277
|
indexName: "my-collection",
|
|
257
278
|
vectors: embeddings,
|
|
@@ -459,6 +480,20 @@ Each vector database enforces specific naming conventions for indexes and collec
|
|
|
459
480
|
- Example: `My_Index` is not valid (contains uppercase letters)
|
|
460
481
|
- Example: `_myindex` is not valid (begins with underscore)
|
|
461
482
|
</TabItem>
|
|
483
|
+
<TabItem value="elasticsearch" label="ElasticSearch">
|
|
484
|
+
Index names must:
|
|
485
|
+
- Use only lowercase letters
|
|
486
|
+
- Not exceed 255 bytes (counting multi-byte characters)
|
|
487
|
+
- Not begin with underscores, hyphens, or plus signs
|
|
488
|
+
- Not contain spaces, commas
|
|
489
|
+
- Not contain special characters (e.g. `:`, `"`, `*`, `+`, `/`, `\`, `|`, `?`, `#`, `>`, `<`)
|
|
490
|
+
- Not be "." or ".."
|
|
491
|
+
- Not start with "." (deprecated except for system/hidden indices)
|
|
492
|
+
- Example: `my-index-123` is valid
|
|
493
|
+
- Example: `My_Index` is not valid (contains uppercase letters)
|
|
494
|
+
- Example: `_myindex` is not valid (begins with underscore)
|
|
495
|
+
- Example: `.myindex` is not valid (begins with dot, deprecated)
|
|
496
|
+
</TabItem>
|
|
462
497
|
<TabItem value="s3vectors" label="S3 Vectors">
|
|
463
498
|
Index names must:
|
|
464
499
|
- Be unique within the same vector bucket
|
|
@@ -496,8 +531,6 @@ The upsert operation:
|
|
|
496
531
|
- Creates new vectors if they don't exist
|
|
497
532
|
- Automatically handles batching for large datasets
|
|
498
533
|
|
|
499
|
-
For complete examples of upserting embeddings in different vector stores, see the [Upsert Embeddings](/examples/v1/rag/upsert/upsert-embeddings) guide.
|
|
500
|
-
|
|
501
534
|
## Adding Metadata
|
|
502
535
|
|
|
503
536
|
Vector stores support rich metadata (any JSON-serializable fields) for filtering and organization. Since metadata is stored with no fixed schema, use consistent field naming to avoid unexpected query results.
|
|
@@ -536,6 +569,64 @@ Key metadata considerations:
|
|
|
536
569
|
- Only include fields you plan to filter or sort by - extra fields add overhead
|
|
537
570
|
- Add timestamps (e.g., 'createdAt', 'lastUpdated') to track content freshness
|
|
538
571
|
|
|
572
|
+
## Deleting Vectors
|
|
573
|
+
|
|
574
|
+
When building RAG applications, you often need to clean up stale vectors when documents are deleted or updated. Mastra provides the `deleteVectors` method that supports deleting vectors by metadata filters, making it easy to remove all embeddings associated with a specific document.
|
|
575
|
+
|
|
576
|
+
### Delete by Metadata Filter
|
|
577
|
+
|
|
578
|
+
The most common use case is deleting all vectors for a specific document when a user deletes it:
|
|
579
|
+
|
|
580
|
+
```ts title="delete-vectors.ts" showLineNumbers copy
|
|
581
|
+
// Delete all vectors for a specific document
|
|
582
|
+
await store.deleteVectors({
|
|
583
|
+
indexName: "myCollection",
|
|
584
|
+
filter: { docId: "document-123" },
|
|
585
|
+
});
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
This is particularly useful when:
|
|
589
|
+
- A user deletes a document and you need to remove all its chunks
|
|
590
|
+
- You're re-indexing a document and want to remove old vectors first
|
|
591
|
+
- You need to clean up vectors for a specific user or tenant
|
|
592
|
+
|
|
593
|
+
### Delete Multiple Documents
|
|
594
|
+
|
|
595
|
+
You can also use complex filters to delete vectors matching multiple conditions:
|
|
596
|
+
|
|
597
|
+
```ts title="delete-vectors-advanced.ts" showLineNumbers copy
|
|
598
|
+
// Delete all vectors for multiple documents
|
|
599
|
+
await store.deleteVectors({
|
|
600
|
+
indexName: "myCollection",
|
|
601
|
+
filter: {
|
|
602
|
+
docId: { $in: ["doc-1", "doc-2", "doc-3"] },
|
|
603
|
+
},
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
// Delete vectors for a specific user's documents
|
|
607
|
+
await store.deleteVectors({
|
|
608
|
+
indexName: "myCollection",
|
|
609
|
+
filter: {
|
|
610
|
+
$and: [
|
|
611
|
+
{ userId: "user-123" },
|
|
612
|
+
{ status: "archived" },
|
|
613
|
+
],
|
|
614
|
+
},
|
|
615
|
+
});
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
### Delete by Vector IDs
|
|
619
|
+
|
|
620
|
+
If you have specific vector IDs to delete, you can pass them directly:
|
|
621
|
+
|
|
622
|
+
```ts title="delete-by-ids.ts" showLineNumbers copy
|
|
623
|
+
// Delete specific vectors by their IDs
|
|
624
|
+
await store.deleteVectors({
|
|
625
|
+
indexName: "myCollection",
|
|
626
|
+
ids: ["vec-1", "vec-2", "vec-3"],
|
|
627
|
+
});
|
|
628
|
+
```
|
|
629
|
+
|
|
539
630
|
## Best Practices
|
|
540
631
|
|
|
541
632
|
- Create indexes before bulk insertions
|
|
@@ -12,7 +12,6 @@ The `Agent` class is the foundation for creating AI agents in Mastra. It provide
|
|
|
12
12
|
### Basic string instructions
|
|
13
13
|
|
|
14
14
|
```typescript title="src/mastra/agents/string-agent.ts" showLineNumbers copy
|
|
15
|
-
import { openai } from "@ai-sdk/openai";
|
|
16
15
|
import { Agent } from "@mastra/core/agent";
|
|
17
16
|
|
|
18
17
|
// String instructions
|
|
@@ -20,7 +19,7 @@ export const agent = new Agent({
|
|
|
20
19
|
id: "test-agent",
|
|
21
20
|
name: "Test Agent",
|
|
22
21
|
instructions: "You are a helpful assistant that provides concise answers.",
|
|
23
|
-
model: openai
|
|
22
|
+
model: "openai/gpt-5.1",
|
|
24
23
|
});
|
|
25
24
|
|
|
26
25
|
// System message object
|
|
@@ -31,7 +30,7 @@ export const agent2 = new Agent({
|
|
|
31
30
|
role: "system",
|
|
32
31
|
content: "You are an expert programmer",
|
|
33
32
|
},
|
|
34
|
-
model: openai
|
|
33
|
+
model: "openai/gpt-5.1",
|
|
35
34
|
});
|
|
36
35
|
|
|
37
36
|
// Array of system messages
|
|
@@ -42,7 +41,7 @@ export const agent3 = new Agent({
|
|
|
42
41
|
{ role: "system", content: "You are a helpful assistant" },
|
|
43
42
|
{ role: "system", content: "You have expertise in TypeScript" },
|
|
44
43
|
],
|
|
45
|
-
model: openai
|
|
44
|
+
model: "openai/gpt-5.1",
|
|
46
45
|
});
|
|
47
46
|
```
|
|
48
47
|
|
|
@@ -51,7 +50,6 @@ export const agent3 = new Agent({
|
|
|
51
50
|
Use CoreSystemMessage format to access additional properties like `providerOptions` for provider-specific configurations:
|
|
52
51
|
|
|
53
52
|
```typescript title="src/mastra/agents/core-message-agent.ts" showLineNumbers copy
|
|
54
|
-
import { openai } from "@ai-sdk/openai";
|
|
55
53
|
import { Agent } from "@mastra/core/agent";
|
|
56
54
|
|
|
57
55
|
export const agent = new Agent({
|
|
@@ -67,14 +65,13 @@ export const agent = new Agent({
|
|
|
67
65
|
},
|
|
68
66
|
},
|
|
69
67
|
},
|
|
70
|
-
model: openai
|
|
68
|
+
model: "openai/gpt-5.1",
|
|
71
69
|
});
|
|
72
70
|
```
|
|
73
71
|
|
|
74
72
|
### Multiple CoreSystemMessages
|
|
75
73
|
|
|
76
74
|
```typescript title="src/mastra/agents/multi-message-agent.ts" showLineNumbers copy
|
|
77
|
-
import { anthropic } from "@ai-sdk/anthropic";
|
|
78
75
|
import { Agent } from "@mastra/core/agent";
|
|
79
76
|
|
|
80
77
|
// This could be customizable based on the user
|
|
@@ -97,7 +94,7 @@ export const agent = new Agent({
|
|
|
97
94
|
},
|
|
98
95
|
},
|
|
99
96
|
],
|
|
100
|
-
model: anthropic
|
|
97
|
+
model: "anthropic/claude-sonnet-4-20250514",
|
|
101
98
|
});
|
|
102
99
|
```
|
|
103
100
|
|
|
@@ -129,8 +126,8 @@ export const agent = new Agent({
|
|
|
129
126
|
name: "instructions",
|
|
130
127
|
type: "SystemMessage | ({ requestContext: RequestContext }) => SystemMessage | Promise<SystemMessage>",
|
|
131
128
|
isOptional: false,
|
|
132
|
-
description: `Instructions that guide the agent's behavior. Can be a string, array of strings, system message object,
|
|
133
|
-
array of system messages, or a function that returns any of these types dynamically.
|
|
129
|
+
description: `Instructions that guide the agent's behavior. Can be a string, array of strings, system message object,
|
|
130
|
+
array of system messages, or a function that returns any of these types dynamically.
|
|
134
131
|
SystemMessage types: string | string[] | CoreSystemMessage | CoreSystemMessage[] | SystemModelMessage | SystemModelMessage[]`,
|
|
135
132
|
},
|
|
136
133
|
{
|