@mastra/mcp-docs-server 1.0.0-beta.11 → 1.0.0-beta.14
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/%40mastra%2Fagent-builder.md +29 -29
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +51 -51
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +180 -180
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +68 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +331 -331
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +31 -31
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +41 -41
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Flance.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +24 -24
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +24 -24
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +96 -96
- package/.docs/organized/changelogs/%40mastra%2Frag.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Freact.md +49 -2
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +122 -122
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +39 -39
- package/.docs/organized/changelogs/create-mastra.md +31 -31
- package/.docs/organized/changelogs/mastra.md +51 -51
- package/.docs/organized/code-examples/agent-v6.md +151 -0
- package/.docs/organized/code-examples/ai-elements.md +1 -1
- package/.docs/organized/code-examples/quick-start.md +0 -4
- package/.docs/organized/code-examples/stock-price-tool.md +21 -2
- package/.docs/raw/agents/adding-voice.mdx +2 -3
- package/.docs/raw/agents/agent-approval.mdx +139 -6
- package/.docs/raw/agents/agent-memory.mdx +24 -32
- package/.docs/raw/agents/guardrails.mdx +61 -51
- package/.docs/raw/agents/networks.mdx +9 -13
- package/.docs/raw/agents/overview.mdx +40 -24
- package/.docs/raw/agents/processors.mdx +20 -19
- package/.docs/raw/agents/structured-output.mdx +11 -7
- package/.docs/raw/agents/using-tools.mdx +5 -6
- package/.docs/raw/course/01-first-agent/07-creating-your-agent.md +1 -2
- package/.docs/raw/course/01-first-agent/12-connecting-tool-to-agent.md +1 -1
- package/.docs/raw/course/01-first-agent/16-adding-memory-to-agent.md +1 -2
- package/.docs/raw/course/02-agent-tools-mcp/05-updating-your-agent.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/10-updating-agent-instructions-zapier.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/16-updating-agent-instructions-github.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/21-updating-agent-instructions-hackernews.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/27-updating-agent-instructions-filesystem.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/31-enhancing-memory-configuration.md +2 -2
- package/.docs/raw/course/03-agent-memory/04-creating-basic-memory-agent.md +1 -2
- package/.docs/raw/course/03-agent-memory/08-configuring-conversation-history.md +1 -2
- package/.docs/raw/course/03-agent-memory/16-configuring-semantic-recall.md +3 -4
- package/.docs/raw/course/03-agent-memory/21-configuring-working-memory.md +2 -3
- package/.docs/raw/course/03-agent-memory/22-custom-working-memory-templates.md +2 -3
- package/.docs/raw/course/03-agent-memory/25-combining-memory-features.md +1 -2
- package/.docs/raw/course/03-agent-memory/27-creating-learning-assistant.md +2 -3
- package/.docs/raw/course/04-workflows/11-creating-an-ai-agent.md +2 -3
- package/.docs/raw/deployment/cloud-providers.mdx +20 -0
- package/.docs/raw/deployment/{building-mastra.mdx → mastra-server.mdx} +5 -5
- package/.docs/raw/deployment/monorepo.mdx +23 -44
- package/.docs/raw/deployment/overview.mdx +32 -50
- package/.docs/raw/deployment/web-framework.mdx +15 -19
- package/.docs/raw/evals/custom-scorers.mdx +9 -6
- package/.docs/raw/evals/overview.mdx +3 -6
- package/.docs/raw/evals/running-in-ci.mdx +2 -2
- package/.docs/raw/getting-started/manual-install.mdx +20 -20
- package/.docs/raw/getting-started/mcp-docs-server.mdx +2 -2
- package/.docs/raw/getting-started/start.mdx +10 -1
- package/.docs/raw/getting-started/studio.mdx +1 -1
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +4 -4
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +1033 -79
- package/.docs/raw/guides/build-your-ui/assistant-ui.mdx +8 -8
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +11 -11
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/amazon-ec2.mdx +9 -9
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/aws-lambda.mdx +13 -16
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/azure-app-services.mdx +5 -7
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/cloudflare-deployer.mdx +8 -5
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/digital-ocean.mdx +12 -15
- package/.docs/raw/guides/deployment/index.mdx +32 -0
- package/.docs/raw/guides/deployment/inngest.mdx +386 -0
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/netlify-deployer.mdx +7 -3
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/vercel-deployer.mdx +8 -5
- package/.docs/raw/guides/getting-started/astro.mdx +292 -451
- package/.docs/raw/guides/getting-started/express.mdx +72 -153
- package/.docs/raw/guides/getting-started/hono.mdx +227 -0
- package/.docs/raw/guides/getting-started/next-js.mdx +170 -61
- package/.docs/raw/guides/getting-started/quickstart.mdx +4 -4
- package/.docs/raw/guides/getting-started/sveltekit.mdx +238 -409
- package/.docs/raw/guides/getting-started/vite-react.mdx +317 -147
- package/.docs/raw/guides/guide/ai-recruiter.mdx +10 -10
- package/.docs/raw/guides/guide/chef-michel.mdx +9 -11
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +15 -15
- package/.docs/raw/guides/guide/research-assistant.mdx +17 -17
- package/.docs/raw/guides/guide/stock-agent.mdx +5 -5
- package/.docs/raw/guides/guide/web-search.mdx +8 -8
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +7 -7
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +2 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +1 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +17 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +6 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +0 -2
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +21 -23
- package/.docs/raw/index.mdx +2 -2
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/dashboard.mdx +2 -6
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/observability.mdx +1 -5
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/overview.mdx +2 -6
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/setting-up.mdx +8 -7
- package/.docs/raw/mcp/overview.mdx +31 -13
- package/.docs/raw/mcp/publishing-mcp-server.mdx +2 -2
- package/.docs/raw/memory/memory-processors.mdx +9 -9
- package/.docs/raw/memory/message-history.mdx +69 -0
- package/.docs/raw/memory/overview.mdx +34 -76
- package/.docs/raw/memory/semantic-recall.mdx +58 -49
- package/.docs/raw/memory/storage.mdx +188 -0
- package/.docs/raw/memory/working-memory.mdx +7 -7
- package/.docs/raw/observability/logging.mdx +10 -11
- package/.docs/raw/observability/overview.mdx +0 -1
- package/.docs/raw/observability/tracing/bridges/otel.mdx +2 -2
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +1 -1
- package/.docs/raw/observability/tracing/exporters/default.mdx +3 -3
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +1 -2
- package/.docs/raw/observability/tracing/overview.mdx +23 -25
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +3 -3
- package/.docs/raw/rag/chunking-and-embedding.mdx +18 -31
- package/.docs/raw/rag/graph-rag.mdx +220 -0
- package/.docs/raw/rag/overview.mdx +2 -3
- package/.docs/raw/rag/retrieval.mdx +34 -51
- package/.docs/raw/rag/vector-databases.mdx +29 -25
- package/.docs/raw/reference/agents/agent.mdx +3 -3
- package/.docs/raw/reference/agents/generate.mdx +1 -1
- package/.docs/raw/reference/agents/generateLegacy.mdx +2 -2
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +3 -3
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +3 -3
- package/.docs/raw/reference/agents/getLLM.mdx +3 -3
- package/.docs/raw/reference/agents/getMemory.mdx +3 -3
- package/.docs/raw/reference/agents/getModel.mdx +3 -3
- package/.docs/raw/reference/agents/getTools.mdx +2 -2
- package/.docs/raw/reference/agents/getVoice.mdx +2 -2
- package/.docs/raw/reference/agents/listAgents.mdx +2 -2
- package/.docs/raw/reference/agents/listScorers.mdx +3 -3
- package/.docs/raw/reference/agents/listTools.mdx +2 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +2 -2
- package/.docs/raw/reference/agents/network.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +3 -3
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/network-route.mdx +3 -3
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +6 -6
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v4-messages.mdx +127 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v5-messages.mdx +107 -0
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +3 -3
- package/.docs/raw/reference/auth/auth0.mdx +2 -3
- package/.docs/raw/reference/auth/clerk.mdx +2 -3
- package/.docs/raw/reference/auth/firebase.mdx +3 -5
- package/.docs/raw/reference/auth/jwt.mdx +2 -3
- package/.docs/raw/reference/auth/supabase.mdx +2 -3
- package/.docs/raw/reference/auth/workos.mdx +2 -3
- package/.docs/raw/reference/cli/create-mastra.mdx +10 -10
- package/.docs/raw/reference/cli/mastra.mdx +10 -10
- package/.docs/raw/reference/client-js/agents.mdx +1 -2
- package/.docs/raw/reference/client-js/mastra-client.mdx +2 -2
- package/.docs/raw/reference/client-js/workflows.mdx +20 -0
- package/.docs/raw/reference/core/getAgent.mdx +1 -1
- package/.docs/raw/reference/core/getAgentById.mdx +1 -1
- package/.docs/raw/reference/core/getDeployer.mdx +1 -1
- package/.docs/raw/reference/core/getLogger.mdx +1 -1
- package/.docs/raw/reference/core/getMCPServer.mdx +1 -1
- package/.docs/raw/reference/core/getMCPServerById.mdx +1 -1
- package/.docs/raw/reference/core/getMemory.mdx +2 -2
- package/.docs/raw/reference/core/getServer.mdx +3 -3
- package/.docs/raw/reference/core/getStorage.mdx +2 -2
- package/.docs/raw/reference/core/getStoredAgentById.mdx +3 -3
- package/.docs/raw/reference/core/getTelemetry.mdx +1 -1
- package/.docs/raw/reference/core/getVector.mdx +1 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +1 -1
- package/.docs/raw/reference/core/listAgents.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/listMCPServers.mdx +1 -1
- package/.docs/raw/reference/core/listMemory.mdx +2 -2
- package/.docs/raw/reference/core/listStoredAgents.mdx +4 -4
- package/.docs/raw/reference/core/listVectors.mdx +1 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/setLogger.mdx +1 -1
- package/.docs/raw/reference/core/setStorage.mdx +2 -2
- package/.docs/raw/reference/core/setTelemetry.mdx +1 -1
- package/.docs/raw/reference/deployer/cloudflare.mdx +1 -2
- package/.docs/raw/reference/deployer/deployer.mdx +0 -1
- package/.docs/raw/reference/deployer/netlify.mdx +1 -1
- package/.docs/raw/reference/deployer/vercel.mdx +2 -4
- package/.docs/raw/reference/evals/answer-relevancy.mdx +1 -1
- package/.docs/raw/reference/evals/answer-similarity.mdx +1 -1
- package/.docs/raw/reference/evals/bias.mdx +1 -1
- package/.docs/raw/reference/evals/completeness.mdx +1 -1
- package/.docs/raw/reference/evals/content-similarity.mdx +1 -1
- package/.docs/raw/reference/evals/context-precision.mdx +1 -1
- package/.docs/raw/reference/evals/faithfulness.mdx +1 -1
- package/.docs/raw/reference/evals/hallucination.mdx +1 -1
- package/.docs/raw/reference/evals/keyword-coverage.mdx +1 -1
- package/.docs/raw/reference/evals/prompt-alignment.mdx +7 -7
- package/.docs/raw/reference/evals/textual-difference.mdx +1 -1
- package/.docs/raw/reference/evals/tone-consistency.mdx +1 -1
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +10 -10
- package/.docs/raw/reference/evals/toxicity.mdx +1 -1
- package/.docs/raw/reference/logging/pino-logger.mdx +7 -8
- package/.docs/raw/reference/memory/createThread.mdx +2 -2
- package/.docs/raw/reference/memory/deleteMessages.mdx +2 -2
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +2 -2
- package/.docs/raw/reference/memory/memory-class.mdx +3 -3
- package/.docs/raw/reference/memory/query.mdx +2 -2
- package/.docs/raw/reference/memory/recall.mdx +2 -2
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +1 -1
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +2 -2
- package/.docs/raw/reference/processors/language-detector.mdx +2 -2
- package/.docs/raw/reference/processors/message-history-processor.mdx +2 -2
- package/.docs/raw/reference/processors/moderation-processor.mdx +3 -3
- package/.docs/raw/reference/processors/pii-detector.mdx +3 -3
- package/.docs/raw/reference/processors/processor-interface.mdx +13 -13
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +2 -2
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +2 -2
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +2 -2
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +2 -2
- package/.docs/raw/reference/processors/tool-call-filter.mdx +3 -3
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +2 -2
- package/.docs/raw/reference/processors/working-memory-processor.mdx +3 -3
- package/.docs/raw/reference/rag/chunk.mdx +1 -1
- package/.docs/raw/reference/rag/database-config.mdx +1 -1
- package/.docs/raw/reference/rag/extract-params.mdx +2 -2
- package/.docs/raw/reference/rag/metadata-filters.mdx +7 -7
- package/.docs/raw/reference/server/create-route.mdx +14 -14
- package/.docs/raw/reference/server/express-adapter.mdx +10 -11
- package/.docs/raw/reference/server/hono-adapter.mdx +10 -11
- package/.docs/raw/reference/server/mastra-server.mdx +22 -22
- package/.docs/raw/reference/server/routes.mdx +28 -1
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +3 -3
- package/.docs/raw/reference/storage/cloudflare.mdx +2 -2
- package/.docs/raw/reference/storage/convex.mdx +6 -6
- package/.docs/raw/reference/storage/dynamodb.mdx +4 -4
- package/.docs/raw/reference/storage/lance.mdx +3 -3
- package/.docs/raw/reference/storage/libsql.mdx +69 -54
- package/.docs/raw/reference/storage/mongodb.mdx +80 -7
- package/.docs/raw/reference/storage/mssql.mdx +4 -4
- package/.docs/raw/{server-db/storage.mdx → reference/storage/overview.mdx} +13 -111
- package/.docs/raw/reference/storage/postgresql.mdx +78 -7
- package/.docs/raw/reference/storage/upstash.mdx +74 -2
- package/.docs/raw/reference/streaming/agents/stream.mdx +27 -5
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +2 -2
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/resumeStream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/stream.mdx +35 -22
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +4 -4
- package/.docs/raw/reference/templates/overview.mdx +1 -2
- package/.docs/raw/reference/tools/create-tool.mdx +24 -5
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +3 -3
- package/.docs/raw/reference/tools/vector-query-tool.mdx +4 -4
- package/.docs/raw/reference/vectors/astra.mdx +3 -3
- package/.docs/raw/reference/vectors/chroma.mdx +3 -3
- package/.docs/raw/reference/vectors/convex.mdx +12 -12
- package/.docs/raw/reference/vectors/couchbase.mdx +5 -5
- package/.docs/raw/reference/vectors/duckdb.mdx +10 -10
- package/.docs/raw/reference/vectors/elasticsearch.mdx +4 -4
- package/.docs/raw/reference/vectors/lance.mdx +4 -4
- package/.docs/raw/reference/vectors/libsql.mdx +61 -11
- package/.docs/raw/reference/vectors/mongodb.mdx +58 -5
- package/.docs/raw/reference/vectors/pg.mdx +53 -6
- package/.docs/raw/reference/vectors/pinecone.mdx +3 -3
- package/.docs/raw/reference/vectors/qdrant.mdx +3 -3
- package/.docs/raw/reference/vectors/s3vectors.mdx +6 -6
- package/.docs/raw/reference/vectors/turbopuffer.mdx +4 -4
- package/.docs/raw/reference/vectors/upstash.mdx +55 -6
- package/.docs/raw/reference/vectors/vectorize.mdx +3 -3
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +1 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/start.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/startAsync.mdx +143 -0
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +5 -5
- package/.docs/raw/reference/workflows/run.mdx +1 -1
- package/.docs/raw/reference/workflows/step.mdx +3 -3
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +37 -2
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +6 -6
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +7 -7
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow.mdx +17 -3
- package/.docs/raw/{auth → server/auth}/auth0.mdx +20 -14
- package/.docs/raw/{auth → server/auth}/clerk.mdx +16 -9
- package/.docs/raw/{auth → server/auth}/firebase.mdx +21 -15
- package/.docs/raw/{auth → server/auth}/index.mdx +6 -6
- package/.docs/raw/{auth → server/auth}/jwt.mdx +14 -7
- package/.docs/raw/{auth → server/auth}/supabase.mdx +16 -9
- package/.docs/raw/{auth → server/auth}/workos.mdx +19 -13
- package/.docs/raw/{server-db → server}/custom-adapters.mdx +13 -13
- package/.docs/raw/{server-db → server}/custom-api-routes.mdx +3 -5
- package/.docs/raw/{server-db → server}/mastra-client.mdx +26 -15
- package/.docs/raw/{server-db → server}/mastra-server.mdx +8 -8
- package/.docs/raw/{server-db → server}/middleware.mdx +9 -9
- package/.docs/raw/{server-db → server}/request-context.mdx +33 -32
- package/.docs/raw/{server-db → server}/server-adapters.mdx +12 -12
- package/.docs/raw/streaming/events.mdx +14 -7
- package/.docs/raw/streaming/overview.mdx +21 -10
- package/.docs/raw/streaming/tool-streaming.mdx +6 -6
- package/.docs/raw/streaming/workflow-streaming.mdx +6 -8
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +31 -12
- package/.docs/raw/tools-mcp/overview.mdx +10 -11
- package/.docs/raw/voice/overview.mdx +1 -1
- package/.docs/raw/workflows/agents-and-tools.mdx +28 -19
- package/.docs/raw/workflows/control-flow.mdx +27 -40
- package/.docs/raw/workflows/error-handling.mdx +172 -18
- package/.docs/raw/workflows/human-in-the-loop.mdx +6 -7
- package/.docs/raw/workflows/inngest-workflow.mdx +8 -9
- package/.docs/raw/workflows/input-data-mapping.mdx +7 -7
- package/.docs/raw/workflows/overview.mdx +34 -23
- package/.docs/raw/workflows/snapshots.mdx +14 -44
- package/.docs/raw/workflows/suspend-and-resume.mdx +7 -7
- package/.docs/raw/workflows/time-travel.mdx +16 -16
- package/.docs/raw/workflows/workflow-state.mdx +5 -8
- package/CHANGELOG.md +23 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/stdio.js +53 -0
- package/package.json +4 -4
- package/.docs/organized/changelogs/%40internal%2Fai-sdk-v4.md +0 -1
- package/.docs/raw/deployment/cloud-providers/index.mdx +0 -55
- package/.docs/raw/memory/conversation-history.mdx +0 -24
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +0 -140
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -150
- package/.docs/raw/memory/storage/memory-with-pg.mdx +0 -138
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +0 -146
- package/.docs/raw/memory/threads-and-resources.mdx +0 -95
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "GraphRAG | RAG"
|
|
3
|
+
description: Guide on graph-based retrieval in Mastra's RAG systems for documents with complex relationships.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GraphRAG
|
|
7
|
+
|
|
8
|
+
Graph-based retrieval enhances traditional vector search by following relationships between chunks of information. This approach is useful when information is spread across multiple documents or when documents reference each other.
|
|
9
|
+
|
|
10
|
+
## When to use GraphRAG
|
|
11
|
+
|
|
12
|
+
GraphRAG is particularly effective when:
|
|
13
|
+
|
|
14
|
+
- Information is spread across multiple documents
|
|
15
|
+
- Documents reference each other
|
|
16
|
+
- You need to traverse relationships to find complete answers
|
|
17
|
+
- Understanding connections between concepts is important
|
|
18
|
+
- Simple vector similarity misses important contextual relationships
|
|
19
|
+
|
|
20
|
+
For straightforward semantic search without relationship traversal, use [standard retrieval methods](/docs/v1/rag/retrieval).
|
|
21
|
+
|
|
22
|
+
## How GraphRAG works
|
|
23
|
+
|
|
24
|
+
GraphRAG combines vector similarity with knowledge graph traversal:
|
|
25
|
+
|
|
26
|
+
1. Initial vector search retrieves relevant chunks based on semantic similarity
|
|
27
|
+
2. A knowledge graph is constructed from the retrieved chunks
|
|
28
|
+
3. The graph is traversed to find connected information
|
|
29
|
+
4. Results include both directly relevant chunks and related content
|
|
30
|
+
|
|
31
|
+
This process helps surface information that might not be semantically similar to the query but is contextually relevant through connections.
|
|
32
|
+
|
|
33
|
+
## Creating a graph query tool
|
|
34
|
+
|
|
35
|
+
The Graph Query Tool provides agents with the ability to perform graph-based retrieval:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
import { createGraphRAGTool } from "@mastra/rag";
|
|
39
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
40
|
+
|
|
41
|
+
const graphQueryTool = createGraphRAGTool({
|
|
42
|
+
vectorStoreName: "pgVector",
|
|
43
|
+
indexName: "embeddings",
|
|
44
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
45
|
+
graphOptions: {
|
|
46
|
+
threshold: 0.7,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Configuration options
|
|
52
|
+
|
|
53
|
+
The `graphOptions` parameter controls how the knowledge graph is built and traversed:
|
|
54
|
+
|
|
55
|
+
- `threshold`: Similarity threshold (0-1) for determining which chunks are related. Higher values create sparser graphs with stronger connections; lower values create denser graphs with more potential relationships.
|
|
56
|
+
- `dimension`: Vector embedding dimension. Must match the embedding model's output dimension (e.g., 1536 for OpenAI's text-embedding-3-small).
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
const graphQueryTool = createGraphRAGTool({
|
|
60
|
+
vectorStoreName: "pgVector",
|
|
61
|
+
indexName: "embeddings",
|
|
62
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
63
|
+
graphOptions: {
|
|
64
|
+
dimension: 1536,
|
|
65
|
+
threshold: 0.7,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Using GraphRAG with agents
|
|
71
|
+
|
|
72
|
+
Integrate the graph query tool with an agent to enable graph-based retrieval:
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
import { Agent } from "@mastra/core/agent";
|
|
76
|
+
|
|
77
|
+
const ragAgent = new Agent({
|
|
78
|
+
id: "rag-agent",
|
|
79
|
+
name: "GraphRAG Agent",
|
|
80
|
+
instructions: `You are a helpful assistant that answers questions based on the provided context.
|
|
81
|
+
When answering questions, use the graph query tool to find relevant information and relationships.
|
|
82
|
+
Base your answers on the context provided by the tool, and clearly state if the context doesn't contain enough information.`,
|
|
83
|
+
model: "openai/gpt-5.1",
|
|
84
|
+
tools: {
|
|
85
|
+
graphQueryTool,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Document processing and storage
|
|
91
|
+
|
|
92
|
+
Before using graph-based retrieval, process documents into chunks and store their embeddings:
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
import { MDocument } from "@mastra/rag";
|
|
96
|
+
import { embedMany } from "ai";
|
|
97
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
98
|
+
|
|
99
|
+
// Create and chunk document
|
|
100
|
+
const doc = MDocument.fromText("Your document content here...");
|
|
101
|
+
|
|
102
|
+
const chunks = await doc.chunk({
|
|
103
|
+
strategy: "recursive",
|
|
104
|
+
size: 512,
|
|
105
|
+
overlap: 50,
|
|
106
|
+
separator: "\n",
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
// Generate embeddings
|
|
110
|
+
const { embeddings } = await embedMany({
|
|
111
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
112
|
+
values: chunks.map((chunk) => chunk.text),
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Store in vector database
|
|
116
|
+
const vectorStore = mastra.getVector("pgVector");
|
|
117
|
+
await vectorStore.createIndex({
|
|
118
|
+
indexName: "embeddings",
|
|
119
|
+
dimension: 1536,
|
|
120
|
+
});
|
|
121
|
+
await vectorStore.upsert({
|
|
122
|
+
indexName: "embeddings",
|
|
123
|
+
vectors: embeddings,
|
|
124
|
+
metadata: chunks?.map((chunk) => ({ text: chunk.text })),
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Querying with GraphRAG
|
|
129
|
+
|
|
130
|
+
Once configured, the agent can perform graph-based queries:
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
const query = "What are the effects of infrastructure changes on local businesses?";
|
|
134
|
+
const response = await ragAgent.generate(query);
|
|
135
|
+
console.log(response.text);
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
The agent uses the graph query tool to:
|
|
139
|
+
|
|
140
|
+
1. Convert the query to an embedding
|
|
141
|
+
2. Find semantically similar chunks in the vector store
|
|
142
|
+
3. Build a knowledge graph from related chunks
|
|
143
|
+
4. Traverse the graph to find connected information
|
|
144
|
+
5. Return comprehensive context for generating the response
|
|
145
|
+
|
|
146
|
+
## Choosing the right threshold
|
|
147
|
+
|
|
148
|
+
The threshold parameter significantly impacts retrieval quality:
|
|
149
|
+
|
|
150
|
+
- **High threshold (0.8-0.9)**: Strict connections, fewer relationships, more precise but potentially incomplete results
|
|
151
|
+
- **Medium threshold (0.6-0.8)**: Balanced approach, good for most use cases
|
|
152
|
+
- **Low threshold (0.4-0.6)**: More connections, broader context, risk of including less relevant information
|
|
153
|
+
|
|
154
|
+
Start with 0.7 and adjust based on your specific use case:
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
// Strict connections for precise answers
|
|
158
|
+
const strictGraphTool = createGraphRAGTool({
|
|
159
|
+
vectorStoreName: "pgVector",
|
|
160
|
+
indexName: "embeddings",
|
|
161
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
162
|
+
graphOptions: {
|
|
163
|
+
threshold: 0.85,
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
// Broader connections for exploratory queries
|
|
168
|
+
const broadGraphTool = createGraphRAGTool({
|
|
169
|
+
vectorStoreName: "pgVector",
|
|
170
|
+
indexName: "embeddings",
|
|
171
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
172
|
+
graphOptions: {
|
|
173
|
+
threshold: 0.5,
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Combining with other retrieval methods
|
|
179
|
+
|
|
180
|
+
GraphRAG can be used alongside other retrieval approaches:
|
|
181
|
+
|
|
182
|
+
```ts
|
|
183
|
+
import { createVectorQueryTool } from "@mastra/rag";
|
|
184
|
+
|
|
185
|
+
const vectorQueryTool = createVectorQueryTool({
|
|
186
|
+
vectorStoreName: "pgVector",
|
|
187
|
+
indexName: "embeddings",
|
|
188
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
const graphQueryTool = createGraphRAGTool({
|
|
192
|
+
vectorStoreName: "pgVector",
|
|
193
|
+
indexName: "embeddings",
|
|
194
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
195
|
+
graphOptions: {
|
|
196
|
+
threshold: 0.7,
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
const agent = new Agent({
|
|
201
|
+
id: "rag-agent",
|
|
202
|
+
name: "RAG Agent",
|
|
203
|
+
instructions: `Use vector search for simple fact-finding queries.
|
|
204
|
+
Use graph search when you need to understand relationships or find connected information.`,
|
|
205
|
+
model: "openai/gpt-5.1",
|
|
206
|
+
tools: {
|
|
207
|
+
vectorQueryTool,
|
|
208
|
+
graphQueryTool,
|
|
209
|
+
},
|
|
210
|
+
});
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
This gives the agent flexibility to choose the appropriate retrieval method based on the query.
|
|
214
|
+
|
|
215
|
+
## Reference
|
|
216
|
+
|
|
217
|
+
For detailed API documentation, see:
|
|
218
|
+
|
|
219
|
+
- [GraphRAG Class](/reference/v1/rag/graph-rag)
|
|
220
|
+
- [createGraphRAGTool()](/reference/v1/tools/graph-rag-tool)
|
|
@@ -18,7 +18,7 @@ Mastra's RAG system provides:
|
|
|
18
18
|
|
|
19
19
|
To implement RAG, you process your documents into chunks, create embeddings, store them in a vector database, and then retrieve relevant context at query time.
|
|
20
20
|
|
|
21
|
-
```ts
|
|
21
|
+
```ts
|
|
22
22
|
import { embedMany } from "ai";
|
|
23
23
|
import { PgVector } from "@mastra/pg";
|
|
24
24
|
import { MDocument } from "@mastra/rag";
|
|
@@ -74,5 +74,4 @@ Mastra supports multiple vector stores for embedding persistence and similarity
|
|
|
74
74
|
|
|
75
75
|
## More resources
|
|
76
76
|
|
|
77
|
-
- [Chain of Thought RAG Example](/examples/
|
|
78
|
-
- [All RAG Examples](/examples/v1/) (including different chunking strategies, embedding models, and vector stores)
|
|
77
|
+
- [Chain of Thought RAG Example](https://github.com/mastra-ai/mastra/tree/main/examples/basics/rag/cot-rag)
|
|
@@ -26,7 +26,7 @@ Mastra provides flexible retrieval options with support for semantic search, fil
|
|
|
26
26
|
|
|
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
|
-
```ts
|
|
29
|
+
```ts
|
|
30
30
|
import { embed } from "ai";
|
|
31
31
|
import { PgVector } from "@mastra/pg";
|
|
32
32
|
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
@@ -56,7 +56,7 @@ The `topK` parameter specifies the maximum number of most similar results to ret
|
|
|
56
56
|
|
|
57
57
|
Results include both the text content and a similarity score:
|
|
58
58
|
|
|
59
|
-
```ts
|
|
59
|
+
```ts
|
|
60
60
|
[
|
|
61
61
|
{
|
|
62
62
|
text: "Climate change poses significant challenges...",
|
|
@@ -68,7 +68,6 @@ Results include both the text content and a similarity score:
|
|
|
68
68
|
score: 0.82,
|
|
69
69
|
metadata: { source: "article1.txt" },
|
|
70
70
|
},
|
|
71
|
-
// ... more results
|
|
72
71
|
];
|
|
73
72
|
```
|
|
74
73
|
|
|
@@ -76,13 +75,15 @@ Results include both the text content and a similarity score:
|
|
|
76
75
|
|
|
77
76
|
### Metadata Filtering
|
|
78
77
|
|
|
79
|
-
Filter results based on metadata fields to narrow down the search space. This
|
|
78
|
+
Filter results based on metadata fields to narrow down the search space. This approach - combining vector similarity search with metadata filters - is sometimes called hybrid vector search, as it merges semantic search with structured filtering criteria.
|
|
79
|
+
|
|
80
|
+
This is useful when you have documents from different sources, time periods, or with specific attributes. Mastra provides a unified MongoDB-style query syntax that works across all supported vector stores.
|
|
80
81
|
|
|
81
82
|
For detailed information about available operators and syntax, see the [Metadata Filters Reference](/reference/v1/rag/metadata-filters).
|
|
82
83
|
|
|
83
84
|
Basic filtering examples:
|
|
84
85
|
|
|
85
|
-
```ts
|
|
86
|
+
```ts
|
|
86
87
|
// Simple equality filter
|
|
87
88
|
const results = await pgVector.query({
|
|
88
89
|
indexName: "embeddings",
|
|
@@ -146,13 +147,14 @@ Common use cases for metadata filtering:
|
|
|
146
147
|
- Combine multiple conditions for precise querying
|
|
147
148
|
- Filter by document attributes (e.g., language, author)
|
|
148
149
|
|
|
149
|
-
For an example of how to use metadata filtering, see the [Hybrid Vector Search](/examples/v1/rag/query/hybrid-vector-search) example.
|
|
150
|
-
|
|
151
150
|
### Vector Query Tool
|
|
152
151
|
|
|
153
152
|
Sometimes you want to give your agent the ability to query a vector database directly. The Vector Query Tool allows your agent to be in charge of retrieval decisions, combining semantic search with optional filtering and reranking based on the agent's understanding of the user's needs.
|
|
154
153
|
|
|
155
|
-
```ts
|
|
154
|
+
```ts
|
|
155
|
+
import { createVectorQueryTool } from "@mastra/rag";
|
|
156
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
157
|
+
|
|
156
158
|
const vectorQueryTool = createVectorQueryTool({
|
|
157
159
|
vectorStoreName: "pgVector",
|
|
158
160
|
indexName: "embeddings",
|
|
@@ -179,7 +181,10 @@ These configurations are for **query-time options** like namespaces, performance
|
|
|
179
181
|
Connection credentials (URLs, auth tokens) are configured when you instantiate the vector store class (e.g., `new LibSQLVector({ connectionUrl: '...' })`).
|
|
180
182
|
:::
|
|
181
183
|
|
|
182
|
-
```ts
|
|
184
|
+
```ts
|
|
185
|
+
import { createVectorQueryTool } from "@mastra/rag";
|
|
186
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
187
|
+
|
|
183
188
|
// Pinecone with namespace
|
|
184
189
|
const pineconeQueryTool = createVectorQueryTool({
|
|
185
190
|
vectorStoreName: "pinecone",
|
|
@@ -251,7 +256,7 @@ const lanceQueryTool = createVectorQueryTool({
|
|
|
251
256
|
|
|
252
257
|
You can also override these configurations at runtime using the request context:
|
|
253
258
|
|
|
254
|
-
```ts
|
|
259
|
+
```ts
|
|
255
260
|
import { RequestContext } from "@mastra/core/request-context";
|
|
256
261
|
|
|
257
262
|
const requestContext = new RequestContext();
|
|
@@ -278,7 +283,7 @@ When implementing filtering, these prompts are required in the agent's instructi
|
|
|
278
283
|
<Tabs>
|
|
279
284
|
<TabItem value="pgvector" label="pgVector">
|
|
280
285
|
|
|
281
|
-
```ts
|
|
286
|
+
```ts
|
|
282
287
|
import { PGVECTOR_PROMPT } from "@mastra/pg";
|
|
283
288
|
|
|
284
289
|
export const ragAgent = new Agent({
|
|
@@ -297,7 +302,7 @@ export const ragAgent = new Agent({
|
|
|
297
302
|
|
|
298
303
|
<TabItem value="pinecone" label="Pinecone">
|
|
299
304
|
|
|
300
|
-
```ts title="vector-store.ts"
|
|
305
|
+
```ts title="vector-store.ts"
|
|
301
306
|
import { PINECONE_PROMPT } from "@mastra/pinecone";
|
|
302
307
|
|
|
303
308
|
export const ragAgent = new Agent({
|
|
@@ -316,7 +321,7 @@ export const ragAgent = new Agent({
|
|
|
316
321
|
|
|
317
322
|
<TabItem value="qdrant" label="Qdrant">
|
|
318
323
|
|
|
319
|
-
```ts title="vector-store.ts"
|
|
324
|
+
```ts title="vector-store.ts"
|
|
320
325
|
import { QDRANT_PROMPT } from "@mastra/qdrant";
|
|
321
326
|
|
|
322
327
|
export const ragAgent = new Agent({
|
|
@@ -335,7 +340,7 @@ export const ragAgent = new Agent({
|
|
|
335
340
|
|
|
336
341
|
<TabItem value="chroma" label="Chroma">
|
|
337
342
|
|
|
338
|
-
```ts title="vector-store.ts"
|
|
343
|
+
```ts title="vector-store.ts"
|
|
339
344
|
import { CHROMA_PROMPT } from "@mastra/chroma";
|
|
340
345
|
|
|
341
346
|
export const ragAgent = new Agent({
|
|
@@ -354,7 +359,7 @@ export const ragAgent = new Agent({
|
|
|
354
359
|
|
|
355
360
|
<TabItem value="astra" label="Astra">
|
|
356
361
|
|
|
357
|
-
```ts title="vector-store.ts"
|
|
362
|
+
```ts title="vector-store.ts"
|
|
358
363
|
import { ASTRA_PROMPT } from "@mastra/astra";
|
|
359
364
|
|
|
360
365
|
export const ragAgent = new Agent({
|
|
@@ -371,9 +376,9 @@ export const ragAgent = new Agent({
|
|
|
371
376
|
|
|
372
377
|
</TabItem>
|
|
373
378
|
|
|
374
|
-
<TabItem value="libsql" label="
|
|
379
|
+
<TabItem value="libsql" label="libSQL">
|
|
375
380
|
|
|
376
|
-
```ts title="vector-store.ts"
|
|
381
|
+
```ts title="vector-store.ts"
|
|
377
382
|
import { LIBSQL_PROMPT } from "@mastra/libsql";
|
|
378
383
|
|
|
379
384
|
export const ragAgent = new Agent({
|
|
@@ -392,7 +397,7 @@ export const ragAgent = new Agent({
|
|
|
392
397
|
|
|
393
398
|
<TabItem value="upstash" label="Upstash">
|
|
394
399
|
|
|
395
|
-
```ts title="vector-store.ts"
|
|
400
|
+
```ts title="vector-store.ts"
|
|
396
401
|
import { UPSTASH_PROMPT } from "@mastra/upstash";
|
|
397
402
|
|
|
398
403
|
export const ragAgent = new Agent({
|
|
@@ -411,7 +416,7 @@ export const ragAgent = new Agent({
|
|
|
411
416
|
|
|
412
417
|
<TabItem value="vectorize" label="Vectorize">
|
|
413
418
|
|
|
414
|
-
```ts title="vector-store.ts"
|
|
419
|
+
```ts title="vector-store.ts"
|
|
415
420
|
import { VECTORIZE_PROMPT } from "@mastra/vectorize";
|
|
416
421
|
|
|
417
422
|
export const ragAgent = new Agent({
|
|
@@ -430,7 +435,7 @@ export const ragAgent = new Agent({
|
|
|
430
435
|
|
|
431
436
|
<TabItem value="mongodb" label="MongoDB">
|
|
432
437
|
|
|
433
|
-
```ts title="vector-store.ts"
|
|
438
|
+
```ts title="vector-store.ts"
|
|
434
439
|
import { MONGODB_PROMPT } from "@mastra/mongodb";
|
|
435
440
|
|
|
436
441
|
export const ragAgent = new Agent({
|
|
@@ -449,7 +454,7 @@ export const ragAgent = new Agent({
|
|
|
449
454
|
|
|
450
455
|
<TabItem value="opensearch" label="OpenSearch">
|
|
451
456
|
|
|
452
|
-
```ts title="vector-store.ts"
|
|
457
|
+
```ts title="vector-store.ts"
|
|
453
458
|
import { OPENSEARCH_PROMPT } from "@mastra/opensearch";
|
|
454
459
|
|
|
455
460
|
export const ragAgent = new Agent({
|
|
@@ -468,7 +473,7 @@ export const ragAgent = new Agent({
|
|
|
468
473
|
|
|
469
474
|
<TabItem value="s3vectors" label="S3Vectors">
|
|
470
475
|
|
|
471
|
-
```ts title="vector-store.ts"
|
|
476
|
+
```ts title="vector-store.ts"
|
|
472
477
|
import { S3VECTORS_PROMPT } from "@mastra/s3vectors";
|
|
473
478
|
|
|
474
479
|
export const ragAgent = new Agent({
|
|
@@ -497,7 +502,7 @@ Initial vector similarity search can sometimes miss nuanced relevance. Re-rankin
|
|
|
497
502
|
|
|
498
503
|
Here's how to use re-ranking:
|
|
499
504
|
|
|
500
|
-
```ts
|
|
505
|
+
```ts
|
|
501
506
|
import {
|
|
502
507
|
rerankWithScorer as rerank,
|
|
503
508
|
MastraAgentRelevanceScorer
|
|
@@ -535,16 +540,17 @@ The weights control how different factors influence the final ranking:
|
|
|
535
540
|
- `vector`: Higher values favor the original vector similarity scores
|
|
536
541
|
- `position`: Higher values help maintain the original ordering of results
|
|
537
542
|
|
|
538
|
-
|
|
539
|
-
|
|
543
|
+
:::note
|
|
544
|
+
For semantic scoring to work properly during re-ranking, each result must include the text content in its `metadata.text` field.
|
|
545
|
+
:::
|
|
540
546
|
|
|
541
547
|
You can also use other relevance score providers like Cohere or ZeroEntropy:
|
|
542
548
|
|
|
543
|
-
```ts
|
|
549
|
+
```ts
|
|
544
550
|
const relevanceProvider = new CohereRelevanceScorer("rerank-v3.5");
|
|
545
551
|
```
|
|
546
552
|
|
|
547
|
-
```ts
|
|
553
|
+
```ts
|
|
548
554
|
const relevanceProvider = new ZeroEntropyRelevanceScorer("zerank-1");
|
|
549
555
|
```
|
|
550
556
|
|
|
@@ -552,27 +558,4 @@ The re-ranked results combine vector similarity with semantic understanding to i
|
|
|
552
558
|
|
|
553
559
|
For more details about re-ranking, see the [rerank()](/reference/v1/rag/rerankWithScorer) method.
|
|
554
560
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
For documents with complex relationships, graph-based retrieval can follow connections between chunks. This helps when:
|
|
558
|
-
|
|
559
|
-
- Information is spread across multiple documents
|
|
560
|
-
- Documents reference each other
|
|
561
|
-
- You need to traverse relationships to find complete answers
|
|
562
|
-
|
|
563
|
-
Example setup:
|
|
564
|
-
|
|
565
|
-
```ts showLineNumbers copy
|
|
566
|
-
const graphQueryTool = createGraphQueryTool({
|
|
567
|
-
vectorStoreName: "pgVector",
|
|
568
|
-
indexName: "embeddings",
|
|
569
|
-
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
570
|
-
graphOptions: {
|
|
571
|
-
threshold: 0.7,
|
|
572
|
-
},
|
|
573
|
-
});
|
|
574
|
-
```
|
|
575
|
-
|
|
576
|
-
For more details about graph-based retrieval, see the [GraphRAG](/reference/v1/rag/graph-rag) class and the [createGraphQueryTool()](/reference/v1/tools/graph-rag-tool) function.
|
|
577
|
-
|
|
578
|
-
For an example of how to use the graph-based retrieval method, see the [Graph-based Retrieval](/examples/v1/rag/usage/graph-rag) example.
|
|
561
|
+
For graph-based retrieval that follows connections between chunks, see the [GraphRAG](/docs/v1/rag/graph-rag) documentation.
|
|
@@ -15,7 +15,7 @@ After generating embeddings, you need to store them in a database that supports
|
|
|
15
15
|
<Tabs>
|
|
16
16
|
<TabItem value="mongodb" label="MongoDB">
|
|
17
17
|
|
|
18
|
-
```ts title="vector-store.ts"
|
|
18
|
+
```ts title="vector-store.ts"
|
|
19
19
|
import { MongoDBVector } from "@mastra/mongodb";
|
|
20
20
|
|
|
21
21
|
const store = new MongoDBVector({
|
|
@@ -41,7 +41,7 @@ For detailed setup instructions and best practices, see the [official MongoDB At
|
|
|
41
41
|
|
|
42
42
|
<TabItem value="pg-vector" label="PgVector">
|
|
43
43
|
|
|
44
|
-
```ts title="vector-store.ts"
|
|
44
|
+
```ts title="vector-store.ts"
|
|
45
45
|
import { PgVector } from "@mastra/pg";
|
|
46
46
|
|
|
47
47
|
const store = new PgVector({
|
|
@@ -70,7 +70,7 @@ For detailed setup instructions and best practices, see the [official pgvector r
|
|
|
70
70
|
|
|
71
71
|
<TabItem value="pinecone" label="Pinecone">
|
|
72
72
|
|
|
73
|
-
```ts title="vector-store.ts"
|
|
73
|
+
```ts title="vector-store.ts"
|
|
74
74
|
import { PineconeVector } from "@mastra/pinecone";
|
|
75
75
|
|
|
76
76
|
const store = new PineconeVector({
|
|
@@ -92,7 +92,7 @@ await store.upsert({
|
|
|
92
92
|
|
|
93
93
|
<TabItem value="qdrant" label="Qdrant">
|
|
94
94
|
|
|
95
|
-
```ts title="vector-store.ts"
|
|
95
|
+
```ts title="vector-store.ts"
|
|
96
96
|
import { QdrantVector } from "@mastra/qdrant";
|
|
97
97
|
|
|
98
98
|
const store = new QdrantVector({
|
|
@@ -117,7 +117,7 @@ await store.upsert({
|
|
|
117
117
|
|
|
118
118
|
<TabItem value="chroma" label="Chroma">
|
|
119
119
|
|
|
120
|
-
```ts title="vector-store.ts"
|
|
120
|
+
```ts title="vector-store.ts"
|
|
121
121
|
import { ChromaVector } from "@mastra/chroma";
|
|
122
122
|
|
|
123
123
|
// Running Chroma locally
|
|
@@ -147,7 +147,7 @@ await store.upsert({
|
|
|
147
147
|
|
|
148
148
|
<TabItem value="astra" label="Astra">
|
|
149
149
|
|
|
150
|
-
```ts title="vector-store.ts"
|
|
150
|
+
```ts title="vector-store.ts"
|
|
151
151
|
import { AstraVector } from "@mastra/astra";
|
|
152
152
|
|
|
153
153
|
const store = new AstraVector({
|
|
@@ -170,9 +170,9 @@ await store.upsert({
|
|
|
170
170
|
|
|
171
171
|
</TabItem>
|
|
172
172
|
|
|
173
|
-
<TabItem value="libsql" label="
|
|
173
|
+
<TabItem value="libsql" label="libSQL">
|
|
174
174
|
|
|
175
|
-
```ts title="vector-store.ts"
|
|
175
|
+
```ts title="vector-store.ts"
|
|
176
176
|
import { LibSQLVector } from "@mastra/core/vector/libsql";
|
|
177
177
|
|
|
178
178
|
const store = new LibSQLVector({
|
|
@@ -197,7 +197,7 @@ await store.upsert({
|
|
|
197
197
|
|
|
198
198
|
<TabItem value="upstash" label="Upstash">
|
|
199
199
|
|
|
200
|
-
```ts title="vector-store.ts"
|
|
200
|
+
```ts title="vector-store.ts"
|
|
201
201
|
import { UpstashVector } from "@mastra/upstash";
|
|
202
202
|
|
|
203
203
|
// In upstash they refer to the store as an index
|
|
@@ -220,7 +220,7 @@ await store.upsert({
|
|
|
220
220
|
|
|
221
221
|
<TabItem value="cloudflare" label="Cloudflare">
|
|
222
222
|
|
|
223
|
-
```ts title="vector-store.ts"
|
|
223
|
+
```ts title="vector-store.ts"
|
|
224
224
|
import { CloudflareVector } from "@mastra/vectorize";
|
|
225
225
|
|
|
226
226
|
const store = new CloudflareVector({
|
|
@@ -242,7 +242,7 @@ await store.upsert({
|
|
|
242
242
|
|
|
243
243
|
<TabItem value="opensearch" label="OpenSearch">
|
|
244
244
|
|
|
245
|
-
```ts title="vector-store.ts"
|
|
245
|
+
```ts title="vector-store.ts"
|
|
246
246
|
import { OpenSearchVector } from "@mastra/opensearch";
|
|
247
247
|
|
|
248
248
|
const store = new OpenSearchVector({ url: process.env.OPENSEARCH_URL });
|
|
@@ -263,7 +263,7 @@ await store.upsert({
|
|
|
263
263
|
|
|
264
264
|
<TabItem value="elasticsearch" label="ElasticSearch">
|
|
265
265
|
|
|
266
|
-
```ts title="vector-store.ts"
|
|
266
|
+
```ts title="vector-store.ts"
|
|
267
267
|
import { ElasticSearchVector } from "@mastra/elasticsearch";
|
|
268
268
|
|
|
269
269
|
const store = new ElasticSearchVector({ url: process.env.ELASTICSEARCH_URL });
|
|
@@ -283,7 +283,7 @@ await store.upsert({
|
|
|
283
283
|
</TabItem>
|
|
284
284
|
<TabItem value="couchbase" label="Couchbase">
|
|
285
285
|
|
|
286
|
-
```ts title="vector-store.ts"
|
|
286
|
+
```ts title="vector-store.ts"
|
|
287
287
|
import { CouchbaseVector } from "@mastra/couchbase";
|
|
288
288
|
|
|
289
289
|
const store = new CouchbaseVector({
|
|
@@ -308,7 +308,7 @@ await store.upsert({
|
|
|
308
308
|
</TabItem>
|
|
309
309
|
<TabItem value="lancedb" label="Lance">
|
|
310
310
|
|
|
311
|
-
```ts title="vector-store.ts"
|
|
311
|
+
```ts title="vector-store.ts"
|
|
312
312
|
import { LanceVectorStore } from "@mastra/lance";
|
|
313
313
|
|
|
314
314
|
const store = await LanceVectorStore.create("/path/to/db");
|
|
@@ -334,7 +334,7 @@ For detailed setup instructions and best practices, see the [official LanceDB do
|
|
|
334
334
|
</TabItem>
|
|
335
335
|
<TabItem value="s3vectors" label="S3 Vectors">
|
|
336
336
|
|
|
337
|
-
```ts title="vector-store.ts"
|
|
337
|
+
```ts title="vector-store.ts"
|
|
338
338
|
import { S3Vectors } from "@mastra/s3vectors";
|
|
339
339
|
|
|
340
340
|
const store = new S3Vectors({
|
|
@@ -368,7 +368,7 @@ Once initialized, all vector stores share the same interface for creating indexe
|
|
|
368
368
|
|
|
369
369
|
Before storing embeddings, you need to create an index with the appropriate dimension size for your embedding model:
|
|
370
370
|
|
|
371
|
-
```ts title="store-embeddings.ts"
|
|
371
|
+
```ts title="store-embeddings.ts"
|
|
372
372
|
// Create an index with dimension 1536 (for text-embedding-3-small)
|
|
373
373
|
await store.createIndex({
|
|
374
374
|
indexName: "myCollection",
|
|
@@ -380,9 +380,11 @@ The dimension size must match the output dimension of your chosen embedding mode
|
|
|
380
380
|
|
|
381
381
|
- OpenAI text-embedding-3-small: 1536 dimensions (or custom, e.g., 256)
|
|
382
382
|
- Cohere embed-multilingual-v3: 1024 dimensions
|
|
383
|
-
- Google
|
|
383
|
+
- Google text-embedding-004: 768 dimensions (or custom)
|
|
384
384
|
|
|
385
|
-
|
|
385
|
+
:::important
|
|
386
|
+
Index dimensions cannot be changed after creation. To use a different model, delete and recreate the index with the new dimension size.
|
|
387
|
+
:::
|
|
386
388
|
|
|
387
389
|
### Naming Rules for Databases
|
|
388
390
|
|
|
@@ -443,7 +445,7 @@ Each vector database enforces specific naming conventions for indexes and collec
|
|
|
443
445
|
- Example: `my_collection_123` is valid
|
|
444
446
|
- Example: `my-collection` is not valid (contains hyphen)
|
|
445
447
|
</TabItem>
|
|
446
|
-
<TabItem value="libsql" label="
|
|
448
|
+
<TabItem value="libsql" label="libSQL">
|
|
447
449
|
Index names must:
|
|
448
450
|
- Start with a letter or underscore
|
|
449
451
|
- Contain only letters, numbers, and underscores
|
|
@@ -512,7 +514,7 @@ Each vector database enforces specific naming conventions for indexes and collec
|
|
|
512
514
|
|
|
513
515
|
After creating an index, you can store embeddings along with their basic metadata:
|
|
514
516
|
|
|
515
|
-
```ts title="store-embeddings.ts"
|
|
517
|
+
```ts title="store-embeddings.ts"
|
|
516
518
|
// Store embeddings with their corresponding metadata
|
|
517
519
|
await store.upsert({
|
|
518
520
|
indexName: "myCollection", // index name
|
|
@@ -535,9 +537,11 @@ The upsert operation:
|
|
|
535
537
|
|
|
536
538
|
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.
|
|
537
539
|
|
|
538
|
-
|
|
540
|
+
:::important
|
|
541
|
+
Metadata is crucial for vector storage - without it, you'd only have numerical embeddings with no way to return the original text or filter results. Always store at least the source text as metadata.
|
|
542
|
+
:::
|
|
539
543
|
|
|
540
|
-
```ts
|
|
544
|
+
```ts
|
|
541
545
|
// Store embeddings with rich metadata for better organization and filtering
|
|
542
546
|
await store.upsert({
|
|
543
547
|
indexName: "myCollection",
|
|
@@ -577,7 +581,7 @@ When building RAG applications, you often need to clean up stale vectors when do
|
|
|
577
581
|
|
|
578
582
|
The most common use case is deleting all vectors for a specific document when a user deletes it:
|
|
579
583
|
|
|
580
|
-
```ts title="delete-vectors.ts"
|
|
584
|
+
```ts title="delete-vectors.ts"
|
|
581
585
|
// Delete all vectors for a specific document
|
|
582
586
|
await store.deleteVectors({
|
|
583
587
|
indexName: "myCollection",
|
|
@@ -594,7 +598,7 @@ This is particularly useful when:
|
|
|
594
598
|
|
|
595
599
|
You can also use complex filters to delete vectors matching multiple conditions:
|
|
596
600
|
|
|
597
|
-
```ts title="delete-vectors-advanced.ts"
|
|
601
|
+
```ts title="delete-vectors-advanced.ts"
|
|
598
602
|
// Delete all vectors for multiple documents
|
|
599
603
|
await store.deleteVectors({
|
|
600
604
|
indexName: "myCollection",
|
|
@@ -619,7 +623,7 @@ await store.deleteVectors({
|
|
|
619
623
|
|
|
620
624
|
If you have specific vector IDs to delete, you can pass them directly:
|
|
621
625
|
|
|
622
|
-
```ts title="delete-by-ids.ts"
|
|
626
|
+
```ts title="delete-by-ids.ts"
|
|
623
627
|
// Delete specific vectors by their IDs
|
|
624
628
|
await store.deleteVectors({
|
|
625
629
|
indexName: "myCollection",
|