@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
|
@@ -13,13 +13,13 @@ The `createVectorQueryTool()` function creates a tool for semantic search over v
|
|
|
13
13
|
## Basic Usage
|
|
14
14
|
|
|
15
15
|
```typescript
|
|
16
|
-
import { openai } from "@ai-sdk/openai";
|
|
17
16
|
import { createVectorQueryTool } from "@mastra/rag";
|
|
17
|
+
import { ModelRouterEmbeddingModel } from "@mastra/core/llm";
|
|
18
18
|
|
|
19
19
|
const queryTool = createVectorQueryTool({
|
|
20
20
|
vectorStoreName: "pinecone",
|
|
21
21
|
indexName: "docs",
|
|
22
|
-
model:
|
|
22
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
23
23
|
});
|
|
24
24
|
```
|
|
25
25
|
|
|
@@ -303,7 +303,7 @@ The tool determines the number of results to return based on the user's query, w
|
|
|
303
303
|
const queryTool = createVectorQueryTool({
|
|
304
304
|
vectorStoreName: "pinecone",
|
|
305
305
|
indexName: "docs",
|
|
306
|
-
model:
|
|
306
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
307
307
|
enableFilter: true,
|
|
308
308
|
});
|
|
309
309
|
```
|
|
@@ -334,9 +334,9 @@ For an example of how agent-driven filtering works, see the [Agent-Driven Metada
|
|
|
334
334
|
const queryTool = createVectorQueryTool({
|
|
335
335
|
vectorStoreName: "milvus",
|
|
336
336
|
indexName: "documentation",
|
|
337
|
-
model:
|
|
337
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
338
338
|
reranker: {
|
|
339
|
-
model: openai
|
|
339
|
+
model: "openai/gpt-5.1",
|
|
340
340
|
options: {
|
|
341
341
|
weights: {
|
|
342
342
|
semantic: 0.5, // Semantic relevance weight
|
|
@@ -364,7 +364,7 @@ The reranker processes the initial vector search results and returns a reordered
|
|
|
364
364
|
const queryTool = createVectorQueryTool({
|
|
365
365
|
vectorStoreName: "pinecone",
|
|
366
366
|
indexName: "docs",
|
|
367
|
-
model:
|
|
367
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
368
368
|
description:
|
|
369
369
|
"Search through document archives to find relevant information for answering questions about company policies and procedures",
|
|
370
370
|
});
|
|
@@ -384,7 +384,7 @@ The `databaseConfig` parameter allows you to leverage unique features and optimi
|
|
|
384
384
|
const pineconeQueryTool = createVectorQueryTool({
|
|
385
385
|
vectorStoreName: "pinecone",
|
|
386
386
|
indexName: "docs",
|
|
387
|
-
model:
|
|
387
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
388
388
|
databaseConfig: {
|
|
389
389
|
pinecone: {
|
|
390
390
|
namespace: "production", // Organize vectors by environment
|
|
@@ -411,7 +411,7 @@ The `databaseConfig` parameter allows you to leverage unique features and optimi
|
|
|
411
411
|
const pgVectorQueryTool = createVectorQueryTool({
|
|
412
412
|
vectorStoreName: "postgres",
|
|
413
413
|
indexName: "embeddings",
|
|
414
|
-
model:
|
|
414
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
415
415
|
databaseConfig: {
|
|
416
416
|
pgvector: {
|
|
417
417
|
minScore: 0.7, // Only return results above 70% similarity
|
|
@@ -437,7 +437,7 @@ The `databaseConfig` parameter allows you to leverage unique features and optimi
|
|
|
437
437
|
const chromaQueryTool = createVectorQueryTool({
|
|
438
438
|
vectorStoreName: "chroma",
|
|
439
439
|
indexName: "documents",
|
|
440
|
-
model:
|
|
440
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
441
441
|
databaseConfig: {
|
|
442
442
|
chroma: {
|
|
443
443
|
where: { // Metadata filtering
|
|
@@ -467,7 +467,7 @@ The `databaseConfig` parameter allows you to leverage unique features and optimi
|
|
|
467
467
|
const multiDbQueryTool = createVectorQueryTool({
|
|
468
468
|
vectorStoreName: "dynamic-store", // Will be set at runtime
|
|
469
469
|
indexName: "docs",
|
|
470
|
-
model:
|
|
470
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
471
471
|
databaseConfig: {
|
|
472
472
|
pinecone: {
|
|
473
473
|
namespace: "default"
|
|
@@ -501,7 +501,7 @@ import { RequestContext } from "@mastra/core/request-context";
|
|
|
501
501
|
const queryTool = createVectorQueryTool({
|
|
502
502
|
vectorStoreName: "pinecone",
|
|
503
503
|
indexName: "docs",
|
|
504
|
-
|
|
504
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
505
505
|
databaseConfig: {
|
|
506
506
|
pinecone: {
|
|
507
507
|
namespace: "development",
|
|
@@ -534,7 +534,7 @@ This approach allows you to:
|
|
|
534
534
|
const queryTool = createVectorQueryTool({
|
|
535
535
|
vectorStoreName: "pinecone",
|
|
536
536
|
indexName: "docs",
|
|
537
|
-
|
|
537
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
538
538
|
});
|
|
539
539
|
```
|
|
540
540
|
|
|
@@ -555,7 +555,7 @@ requestContext.set("filter", { category: "docs" });
|
|
|
555
555
|
requestContext.set("databaseConfig", {
|
|
556
556
|
pinecone: { namespace: "runtime-namespace" },
|
|
557
557
|
});
|
|
558
|
-
requestContext.set("model", openai
|
|
558
|
+
requestContext.set("model", "openai/text-embedding-3-small");
|
|
559
559
|
|
|
560
560
|
const response = await agent.generate(
|
|
561
561
|
"Find documentation from the knowledge base.",
|
|
@@ -575,7 +575,6 @@ For more information on request context, please see:
|
|
|
575
575
|
The tool can be used by itself to retrieve documents matching a query:
|
|
576
576
|
|
|
577
577
|
```typescript copy showLineNumbers title="src/index.ts"
|
|
578
|
-
import { openai } from "@ai-sdk/openai";
|
|
579
578
|
import { RequestContext } from "@mastra/core/request-context";
|
|
580
579
|
import { createVectorQueryTool } from "@mastra/rag";
|
|
581
580
|
import { PgVector } from "@mastra/pg";
|
|
@@ -589,7 +588,7 @@ const vectorQueryTool = createVectorQueryTool({
|
|
|
589
588
|
vectorStoreName: "pgVector", // optional since we're passing in a store
|
|
590
589
|
vectorStore: pgVector,
|
|
591
590
|
indexName: "embeddings",
|
|
592
|
-
model:
|
|
591
|
+
model: new ModelRouterEmbeddingModel("openai/text-embedding-3-small"),
|
|
593
592
|
});
|
|
594
593
|
|
|
595
594
|
const requestContext = new RequestContext();
|
|
@@ -335,6 +335,8 @@ interface IndexStats {
|
|
|
335
335
|
|
|
336
336
|
### updateVector()
|
|
337
337
|
|
|
338
|
+
Update a single vector by ID or by metadata filter. Either `id` or `filter` must be provided, but not both.
|
|
339
|
+
|
|
338
340
|
<PropertiesTable
|
|
339
341
|
content={[
|
|
340
342
|
{
|
|
@@ -345,7 +347,14 @@ interface IndexStats {
|
|
|
345
347
|
{
|
|
346
348
|
name: "id",
|
|
347
349
|
type: "string",
|
|
348
|
-
|
|
350
|
+
isOptional: true,
|
|
351
|
+
description: "ID of the vector to update (mutually exclusive with filter)",
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
name: "filter",
|
|
355
|
+
type: "Record<string, any>",
|
|
356
|
+
isOptional: true,
|
|
357
|
+
description: "Metadata filter to identify vector(s) to update (mutually exclusive with id)",
|
|
349
358
|
},
|
|
350
359
|
{
|
|
351
360
|
name: "update",
|
|
@@ -374,6 +383,24 @@ The `update` object can contain:
|
|
|
374
383
|
]}
|
|
375
384
|
/>
|
|
376
385
|
|
|
386
|
+
Example:
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
// Update by ID
|
|
390
|
+
await vectorStore.updateVector({
|
|
391
|
+
indexName: 'docs',
|
|
392
|
+
id: 'vec_123',
|
|
393
|
+
update: { metadata: { status: 'reviewed' } }
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
// Update by filter
|
|
397
|
+
await vectorStore.updateVector({
|
|
398
|
+
indexName: 'docs',
|
|
399
|
+
filter: { source_id: 'manual.pdf' },
|
|
400
|
+
update: { metadata: { version: 2 } }
|
|
401
|
+
});
|
|
402
|
+
```
|
|
403
|
+
|
|
377
404
|
### deleteVector()
|
|
378
405
|
|
|
379
406
|
<PropertiesTable
|
|
@@ -391,6 +418,59 @@ The `update` object can contain:
|
|
|
391
418
|
]}
|
|
392
419
|
/>
|
|
393
420
|
|
|
421
|
+
### deleteVectors()
|
|
422
|
+
|
|
423
|
+
Delete multiple vectors by IDs or by metadata filter. This method enables bulk deletion and source-based vector management. Either `ids` or `filter` must be provided, but not both.
|
|
424
|
+
|
|
425
|
+
<PropertiesTable
|
|
426
|
+
content={[
|
|
427
|
+
{
|
|
428
|
+
name: "indexName",
|
|
429
|
+
type: "string",
|
|
430
|
+
description: "Name of the index containing the vectors to delete",
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
name: "ids",
|
|
434
|
+
type: "string[]",
|
|
435
|
+
isOptional: true,
|
|
436
|
+
description: "Array of vector IDs to delete (mutually exclusive with filter)",
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
name: "filter",
|
|
440
|
+
type: "Record<string, any>",
|
|
441
|
+
isOptional: true,
|
|
442
|
+
description: "Metadata filter to identify vectors to delete (mutually exclusive with ids)",
|
|
443
|
+
},
|
|
444
|
+
]}
|
|
445
|
+
/>
|
|
446
|
+
|
|
447
|
+
Example:
|
|
448
|
+
|
|
449
|
+
```typescript
|
|
450
|
+
// Delete all chunks from a document
|
|
451
|
+
await vectorStore.deleteVectors({
|
|
452
|
+
indexName: 'docs',
|
|
453
|
+
filter: { source_id: 'manual.pdf' }
|
|
454
|
+
});
|
|
455
|
+
|
|
456
|
+
// Delete multiple vectors by ID
|
|
457
|
+
await vectorStore.deleteVectors({
|
|
458
|
+
indexName: 'docs',
|
|
459
|
+
ids: ['vec_1', 'vec_2', 'vec_3']
|
|
460
|
+
});
|
|
461
|
+
|
|
462
|
+
// Delete old temporary documents
|
|
463
|
+
await vectorStore.deleteVectors({
|
|
464
|
+
indexName: 'docs',
|
|
465
|
+
filter: {
|
|
466
|
+
$and: [
|
|
467
|
+
{ bucket: 'temp' },
|
|
468
|
+
{ indexed_at: { $lt: '2025-01-01' } }
|
|
469
|
+
]
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
```
|
|
473
|
+
|
|
394
474
|
## Response Types
|
|
395
475
|
|
|
396
476
|
Query results are returned in this format:
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Reference: Convex Vector Store | Vectors"
|
|
3
|
+
description: Documentation for the ConvexVector class in Mastra, which provides vector search using Convex.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Convex Vector Store
|
|
7
|
+
|
|
8
|
+
The ConvexVector class provides vector storage and similarity search using [Convex](https://convex.dev). It stores embeddings inside Convex and performs cosine similarity search.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash copy
|
|
13
|
+
npm install @mastra/convex@beta
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Convex Setup
|
|
17
|
+
|
|
18
|
+
Before using `ConvexVector`, you need to set up the Convex schema and storage handler. See [Convex Storage Setup](../storage/convex#convex-setup) for setup instructions.
|
|
19
|
+
|
|
20
|
+
## Constructor Options
|
|
21
|
+
|
|
22
|
+
<PropertiesTable
|
|
23
|
+
content={[
|
|
24
|
+
{
|
|
25
|
+
name: "deploymentUrl",
|
|
26
|
+
type: "string",
|
|
27
|
+
description: "Convex deployment URL (e.g., https://your-project.convex.cloud)",
|
|
28
|
+
isOptional: false,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "adminAuthToken",
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "Convex admin authentication token",
|
|
34
|
+
isOptional: false,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "storageFunction",
|
|
38
|
+
type: "string",
|
|
39
|
+
description: "Path to the storage mutation function",
|
|
40
|
+
isOptional: true,
|
|
41
|
+
defaultValue: "mastra/storage:handle",
|
|
42
|
+
},
|
|
43
|
+
]}
|
|
44
|
+
/>
|
|
45
|
+
|
|
46
|
+
## Constructor Examples
|
|
47
|
+
|
|
48
|
+
### Basic Configuration
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
import { ConvexVector } from "@mastra/convex";
|
|
52
|
+
|
|
53
|
+
const vectorStore = new ConvexVector({
|
|
54
|
+
id: 'convex-vectors',
|
|
55
|
+
deploymentUrl: "https://your-project.convex.cloud",
|
|
56
|
+
adminAuthToken: "your-admin-token",
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Custom Storage Function
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
const vectorStore = new ConvexVector({
|
|
64
|
+
id: 'convex-vectors',
|
|
65
|
+
deploymentUrl: "https://your-project.convex.cloud",
|
|
66
|
+
adminAuthToken: "your-admin-token",
|
|
67
|
+
storageFunction: "custom/path:handler",
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Methods
|
|
72
|
+
|
|
73
|
+
### createIndex()
|
|
74
|
+
|
|
75
|
+
<PropertiesTable
|
|
76
|
+
content={[
|
|
77
|
+
{
|
|
78
|
+
name: "indexName",
|
|
79
|
+
type: "string",
|
|
80
|
+
description: "Name of the index to create",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "dimension",
|
|
84
|
+
type: "number",
|
|
85
|
+
description: "Vector dimension (must match your embedding model)",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: "metric",
|
|
89
|
+
type: "'cosine' | 'euclidean' | 'dotproduct'",
|
|
90
|
+
isOptional: true,
|
|
91
|
+
defaultValue: "cosine",
|
|
92
|
+
description: "Distance metric for similarity search (only cosine is currently supported)",
|
|
93
|
+
},
|
|
94
|
+
]}
|
|
95
|
+
/>
|
|
96
|
+
|
|
97
|
+
```typescript copy
|
|
98
|
+
await vectorStore.createIndex({
|
|
99
|
+
indexName: "my_vectors",
|
|
100
|
+
dimension: 1536,
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### upsert()
|
|
105
|
+
|
|
106
|
+
<PropertiesTable
|
|
107
|
+
content={[
|
|
108
|
+
{
|
|
109
|
+
name: "indexName",
|
|
110
|
+
type: "string",
|
|
111
|
+
description: "Name of the index to upsert vectors into",
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "vectors",
|
|
115
|
+
type: "number[][]",
|
|
116
|
+
description: "Array of embedding vectors",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: "metadata",
|
|
120
|
+
type: "Record<string, any>[]",
|
|
121
|
+
isOptional: true,
|
|
122
|
+
description: "Metadata for each vector",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "ids",
|
|
126
|
+
type: "string[]",
|
|
127
|
+
isOptional: true,
|
|
128
|
+
description: "Optional vector IDs (auto-generated if not provided)",
|
|
129
|
+
},
|
|
130
|
+
]}
|
|
131
|
+
/>
|
|
132
|
+
|
|
133
|
+
```typescript copy
|
|
134
|
+
await vectorStore.upsert({
|
|
135
|
+
indexName: "my_vectors",
|
|
136
|
+
vectors: [[0.1, 0.2, 0.3, ...]],
|
|
137
|
+
metadata: [{ label: "example" }],
|
|
138
|
+
ids: ["vec-1"],
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### query()
|
|
143
|
+
|
|
144
|
+
<PropertiesTable
|
|
145
|
+
content={[
|
|
146
|
+
{
|
|
147
|
+
name: "indexName",
|
|
148
|
+
type: "string",
|
|
149
|
+
description: "Name of the index to query",
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: "queryVector",
|
|
153
|
+
type: "number[]",
|
|
154
|
+
description: "Query vector",
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: "topK",
|
|
158
|
+
type: "number",
|
|
159
|
+
isOptional: true,
|
|
160
|
+
defaultValue: "10",
|
|
161
|
+
description: "Number of results to return",
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
name: "filter",
|
|
165
|
+
type: "Record<string, any>",
|
|
166
|
+
isOptional: true,
|
|
167
|
+
description: "Metadata filters",
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
name: "includeVector",
|
|
171
|
+
type: "boolean",
|
|
172
|
+
isOptional: true,
|
|
173
|
+
defaultValue: "false",
|
|
174
|
+
description: "Whether to include the vector in the result",
|
|
175
|
+
},
|
|
176
|
+
]}
|
|
177
|
+
/>
|
|
178
|
+
|
|
179
|
+
```typescript copy
|
|
180
|
+
const results = await vectorStore.query({
|
|
181
|
+
indexName: "my_vectors",
|
|
182
|
+
queryVector: [0.1, 0.2, 0.3, ...],
|
|
183
|
+
topK: 5,
|
|
184
|
+
filter: { category: "documents" },
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### listIndexes()
|
|
189
|
+
|
|
190
|
+
Returns an array of index names as strings.
|
|
191
|
+
|
|
192
|
+
```typescript copy
|
|
193
|
+
const indexes = await vectorStore.listIndexes();
|
|
194
|
+
// ["my_vectors", "embeddings", ...]
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### describeIndex()
|
|
198
|
+
|
|
199
|
+
<PropertiesTable
|
|
200
|
+
content={[
|
|
201
|
+
{
|
|
202
|
+
name: "indexName",
|
|
203
|
+
type: "string",
|
|
204
|
+
description: "Name of the index to describe",
|
|
205
|
+
},
|
|
206
|
+
]}
|
|
207
|
+
/>
|
|
208
|
+
|
|
209
|
+
Returns:
|
|
210
|
+
|
|
211
|
+
```typescript copy
|
|
212
|
+
interface IndexStats {
|
|
213
|
+
dimension: number;
|
|
214
|
+
count: number;
|
|
215
|
+
metric: "cosine" | "euclidean" | "dotproduct";
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### deleteIndex()
|
|
220
|
+
|
|
221
|
+
<PropertiesTable
|
|
222
|
+
content={[
|
|
223
|
+
{
|
|
224
|
+
name: "indexName",
|
|
225
|
+
type: "string",
|
|
226
|
+
description: "Name of the index to delete",
|
|
227
|
+
},
|
|
228
|
+
]}
|
|
229
|
+
/>
|
|
230
|
+
|
|
231
|
+
Deletes the index and all its vectors.
|
|
232
|
+
|
|
233
|
+
```typescript copy
|
|
234
|
+
await vectorStore.deleteIndex({ indexName: "my_vectors" });
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### updateVector()
|
|
238
|
+
|
|
239
|
+
Update a single vector by ID or by metadata filter. Either `id` or `filter` must be provided, but not both.
|
|
240
|
+
|
|
241
|
+
<PropertiesTable
|
|
242
|
+
content={[
|
|
243
|
+
{
|
|
244
|
+
name: "indexName",
|
|
245
|
+
type: "string",
|
|
246
|
+
description: "Name of the index containing the vector",
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
name: "id",
|
|
250
|
+
type: "string",
|
|
251
|
+
isOptional: true,
|
|
252
|
+
description: "ID of the vector to update (mutually exclusive with filter)",
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
name: "filter",
|
|
256
|
+
type: "Record<string, any>",
|
|
257
|
+
isOptional: true,
|
|
258
|
+
description: "Metadata filter to identify vector(s) to update (mutually exclusive with id)",
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
name: "update",
|
|
262
|
+
type: "{ vector?: number[]; metadata?: Record<string, any>; }",
|
|
263
|
+
description: "Object containing the vector and/or metadata to update",
|
|
264
|
+
},
|
|
265
|
+
]}
|
|
266
|
+
/>
|
|
267
|
+
|
|
268
|
+
```typescript copy
|
|
269
|
+
// Update by ID
|
|
270
|
+
await vectorStore.updateVector({
|
|
271
|
+
indexName: "my_vectors",
|
|
272
|
+
id: "vector123",
|
|
273
|
+
update: {
|
|
274
|
+
vector: [0.1, 0.2, 0.3],
|
|
275
|
+
metadata: { label: "updated" },
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
// Update by filter
|
|
280
|
+
await vectorStore.updateVector({
|
|
281
|
+
indexName: "my_vectors",
|
|
282
|
+
filter: { category: "product" },
|
|
283
|
+
update: {
|
|
284
|
+
metadata: { status: "reviewed" },
|
|
285
|
+
},
|
|
286
|
+
});
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### deleteVector()
|
|
290
|
+
|
|
291
|
+
<PropertiesTable
|
|
292
|
+
content={[
|
|
293
|
+
{
|
|
294
|
+
name: "indexName",
|
|
295
|
+
type: "string",
|
|
296
|
+
description: "Name of the index containing the vector",
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
name: "id",
|
|
300
|
+
type: "string",
|
|
301
|
+
description: "ID of the vector to delete",
|
|
302
|
+
},
|
|
303
|
+
]}
|
|
304
|
+
/>
|
|
305
|
+
|
|
306
|
+
```typescript copy
|
|
307
|
+
await vectorStore.deleteVector({ indexName: "my_vectors", id: "vector123" });
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### deleteVectors()
|
|
311
|
+
|
|
312
|
+
Delete multiple vectors by IDs or by metadata filter. Either `ids` or `filter` must be provided, but not both.
|
|
313
|
+
|
|
314
|
+
<PropertiesTable
|
|
315
|
+
content={[
|
|
316
|
+
{
|
|
317
|
+
name: "indexName",
|
|
318
|
+
type: "string",
|
|
319
|
+
description: "Name of the index containing the vectors to delete",
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
name: "ids",
|
|
323
|
+
type: "string[]",
|
|
324
|
+
isOptional: true,
|
|
325
|
+
description: "Array of vector IDs to delete (mutually exclusive with filter)",
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
name: "filter",
|
|
329
|
+
type: "Record<string, any>",
|
|
330
|
+
isOptional: true,
|
|
331
|
+
description: "Metadata filter to identify vectors to delete (mutually exclusive with ids)",
|
|
332
|
+
},
|
|
333
|
+
]}
|
|
334
|
+
/>
|
|
335
|
+
|
|
336
|
+
```typescript copy
|
|
337
|
+
// Delete by IDs
|
|
338
|
+
await vectorStore.deleteVectors({
|
|
339
|
+
indexName: "my_vectors",
|
|
340
|
+
ids: ["vec1", "vec2", "vec3"],
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
// Delete by filter
|
|
344
|
+
await vectorStore.deleteVectors({
|
|
345
|
+
indexName: "my_vectors",
|
|
346
|
+
filter: { status: "archived" },
|
|
347
|
+
});
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## Response Types
|
|
351
|
+
|
|
352
|
+
Query results are returned in this format:
|
|
353
|
+
|
|
354
|
+
```typescript copy
|
|
355
|
+
interface QueryResult {
|
|
356
|
+
id: string;
|
|
357
|
+
score: number;
|
|
358
|
+
metadata: Record<string, any>;
|
|
359
|
+
vector?: number[]; // Only included if includeVector is true
|
|
360
|
+
}
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Metadata Filtering
|
|
364
|
+
|
|
365
|
+
ConvexVector supports metadata filtering with various operators:
|
|
366
|
+
|
|
367
|
+
```typescript copy
|
|
368
|
+
// Simple equality
|
|
369
|
+
const results = await vectorStore.query({
|
|
370
|
+
indexName: "my_vectors",
|
|
371
|
+
queryVector: embedding,
|
|
372
|
+
filter: { category: "documents" },
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
// Comparison operators
|
|
376
|
+
const results = await vectorStore.query({
|
|
377
|
+
indexName: "my_vectors",
|
|
378
|
+
queryVector: embedding,
|
|
379
|
+
filter: {
|
|
380
|
+
price: { $gt: 100 },
|
|
381
|
+
status: { $in: ["active", "pending"] },
|
|
382
|
+
},
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
// Logical operators
|
|
386
|
+
const results = await vectorStore.query({
|
|
387
|
+
indexName: "my_vectors",
|
|
388
|
+
queryVector: embedding,
|
|
389
|
+
filter: {
|
|
390
|
+
$and: [
|
|
391
|
+
{ category: "electronics" },
|
|
392
|
+
{ price: { $lte: 500 } },
|
|
393
|
+
],
|
|
394
|
+
},
|
|
395
|
+
});
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### Supported Filter Operators
|
|
399
|
+
|
|
400
|
+
| Operator | Description |
|
|
401
|
+
| -------- | ----------- |
|
|
402
|
+
| `$eq` | Equal to |
|
|
403
|
+
| `$ne` | Not equal to |
|
|
404
|
+
| `$gt` | Greater than |
|
|
405
|
+
| `$gte` | Greater than or equal |
|
|
406
|
+
| `$lt` | Less than |
|
|
407
|
+
| `$lte` | Less than or equal |
|
|
408
|
+
| `$in` | In array |
|
|
409
|
+
| `$nin` | Not in array |
|
|
410
|
+
| `$and` | Logical AND |
|
|
411
|
+
| `$or` | Logical OR |
|
|
412
|
+
|
|
413
|
+
## Architecture
|
|
414
|
+
|
|
415
|
+
ConvexVector stores vectors in the `mastra_vectors` table with the following structure:
|
|
416
|
+
|
|
417
|
+
- `id`: Unique vector identifier
|
|
418
|
+
- `indexName`: Name of the index
|
|
419
|
+
- `embedding`: The vector data (array of floats)
|
|
420
|
+
- `metadata`: Optional JSON metadata
|
|
421
|
+
|
|
422
|
+
Vector similarity search is performed using cosine similarity, computed in the Convex function.
|
|
423
|
+
|
|
424
|
+
## Related
|
|
425
|
+
|
|
426
|
+
- [Convex Storage](../storage/convex)
|
|
427
|
+
- [Metadata Filters](../rag/metadata-filters)
|
|
428
|
+
- [Convex Documentation](https://docs.convex.dev/)
|
|
429
|
+
|