@mastra/mcp-docs-server 0.0.0-default-storage-virtual-file-20250410035748

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.
Files changed (252) hide show
  1. package/.docs/organized/changelogs/%40mastra%2Fastra.md +302 -0
  2. package/.docs/organized/changelogs/%40mastra%2Fchroma.md +302 -0
  3. package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +131 -0
  4. package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +302 -0
  5. package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +80 -0
  6. package/.docs/organized/changelogs/%40mastra%2Fcore.md +302 -0
  7. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +302 -0
  8. package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +302 -0
  9. package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +302 -0
  10. package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +302 -0
  11. package/.docs/organized/changelogs/%40mastra%2Fevals.md +302 -0
  12. package/.docs/organized/changelogs/%40mastra%2Ffirecrawl.md +302 -0
  13. package/.docs/organized/changelogs/%40mastra%2Fgithub.md +302 -0
  14. package/.docs/organized/changelogs/%40mastra%2Floggers.md +302 -0
  15. package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +302 -0
  16. package/.docs/organized/changelogs/%40mastra%2Fmcp.md +302 -0
  17. package/.docs/organized/changelogs/%40mastra%2Fmem0.md +166 -0
  18. package/.docs/organized/changelogs/%40mastra%2Fmemory.md +302 -0
  19. package/.docs/organized/changelogs/%40mastra%2Fpg.md +302 -0
  20. package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +302 -0
  21. package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +302 -0
  22. package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +302 -0
  23. package/.docs/organized/changelogs/%40mastra%2Frag.md +302 -0
  24. package/.docs/organized/changelogs/%40mastra%2Fragie.md +302 -0
  25. package/.docs/organized/changelogs/%40mastra%2Fserver.md +302 -0
  26. package/.docs/organized/changelogs/%40mastra%2Fspeech-azure.md +302 -0
  27. package/.docs/organized/changelogs/%40mastra%2Fspeech-deepgram.md +302 -0
  28. package/.docs/organized/changelogs/%40mastra%2Fspeech-elevenlabs.md +302 -0
  29. package/.docs/organized/changelogs/%40mastra%2Fspeech-google.md +302 -0
  30. package/.docs/organized/changelogs/%40mastra%2Fspeech-ibm.md +302 -0
  31. package/.docs/organized/changelogs/%40mastra%2Fspeech-murf.md +302 -0
  32. package/.docs/organized/changelogs/%40mastra%2Fspeech-openai.md +302 -0
  33. package/.docs/organized/changelogs/%40mastra%2Fspeech-playai.md +302 -0
  34. package/.docs/organized/changelogs/%40mastra%2Fspeech-replicate.md +302 -0
  35. package/.docs/organized/changelogs/%40mastra%2Fspeech-speechify.md +302 -0
  36. package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +302 -0
  37. package/.docs/organized/changelogs/%40mastra%2Fupstash.md +302 -0
  38. package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +302 -0
  39. package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +220 -0
  40. package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +220 -0
  41. package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +302 -0
  42. package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +302 -0
  43. package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +302 -0
  44. package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +302 -0
  45. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +302 -0
  46. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +302 -0
  47. package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +302 -0
  48. package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +299 -0
  49. package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +302 -0
  50. package/.docs/organized/changelogs/create-mastra.md +302 -0
  51. package/.docs/organized/changelogs/mastra.md +302 -0
  52. package/.docs/organized/code-examples/agent-network.md +282 -0
  53. package/.docs/organized/code-examples/agent.md +390 -0
  54. package/.docs/organized/code-examples/ai-sdk-useChat.md +378 -0
  55. package/.docs/organized/code-examples/assistant-ui.md +37 -0
  56. package/.docs/organized/code-examples/bird-checker-with-express.md +235 -0
  57. package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +360 -0
  58. package/.docs/organized/code-examples/bird-checker-with-nextjs.md +250 -0
  59. package/.docs/organized/code-examples/crypto-chatbot.md +96 -0
  60. package/.docs/organized/code-examples/fireworks-r1.md +159 -0
  61. package/.docs/organized/code-examples/memory-todo-agent.md +164 -0
  62. package/.docs/organized/code-examples/memory-with-context.md +167 -0
  63. package/.docs/organized/code-examples/memory-with-libsql.md +204 -0
  64. package/.docs/organized/code-examples/memory-with-mem0.md +121 -0
  65. package/.docs/organized/code-examples/memory-with-pg.md +224 -0
  66. package/.docs/organized/code-examples/memory-with-upstash.md +268 -0
  67. package/.docs/organized/code-examples/quick-start.md +129 -0
  68. package/.docs/organized/code-examples/stock-price-tool.md +124 -0
  69. package/.docs/organized/code-examples/weather-agent.md +353 -0
  70. package/.docs/organized/code-examples/workflow-ai-recruiter.md +159 -0
  71. package/.docs/organized/code-examples/workflow-with-inline-steps.md +111 -0
  72. package/.docs/organized/code-examples/workflow-with-memory.md +393 -0
  73. package/.docs/organized/code-examples/workflow-with-separate-steps.md +131 -0
  74. package/.docs/raw/agents/adding-tools.mdx +239 -0
  75. package/.docs/raw/agents/adding-voice.mdx +175 -0
  76. package/.docs/raw/agents/agent-memory.mdx +62 -0
  77. package/.docs/raw/agents/mcp-guide.mdx +192 -0
  78. package/.docs/raw/agents/overview.mdx +303 -0
  79. package/.docs/raw/community/discord.mdx +12 -0
  80. package/.docs/raw/community/licensing.mdx +63 -0
  81. package/.docs/raw/deployment/client.mdx +120 -0
  82. package/.docs/raw/deployment/deployment.mdx +119 -0
  83. package/.docs/raw/deployment/server.mdx +276 -0
  84. package/.docs/raw/evals/custom-eval.mdx +22 -0
  85. package/.docs/raw/evals/overview.mdx +95 -0
  86. package/.docs/raw/evals/running-in-ci.mdx +81 -0
  87. package/.docs/raw/evals/textual-evals.mdx +54 -0
  88. package/.docs/raw/faq/index.mdx +63 -0
  89. package/.docs/raw/frameworks/ai-sdk.mdx +296 -0
  90. package/.docs/raw/frameworks/next-js.mdx +238 -0
  91. package/.docs/raw/getting-started/installation.mdx +436 -0
  92. package/.docs/raw/getting-started/mcp-docs-server.mdx +141 -0
  93. package/.docs/raw/getting-started/project-structure.mdx +80 -0
  94. package/.docs/raw/index.mdx +22 -0
  95. package/.docs/raw/integrations/index.mdx +213 -0
  96. package/.docs/raw/local-dev/add-to-existing-project.mdx +48 -0
  97. package/.docs/raw/local-dev/creating-a-new-project.mdx +54 -0
  98. package/.docs/raw/local-dev/mastra-dev.mdx +108 -0
  99. package/.docs/raw/memory/memory-processors.mdx +131 -0
  100. package/.docs/raw/memory/overview.mdx +119 -0
  101. package/.docs/raw/memory/semantic-recall.mdx +122 -0
  102. package/.docs/raw/memory/working-memory.mdx +87 -0
  103. package/.docs/raw/observability/logging.mdx +38 -0
  104. package/.docs/raw/observability/nextjs-tracing.mdx +108 -0
  105. package/.docs/raw/observability/tracing.mdx +115 -0
  106. package/.docs/raw/rag/chunking-and-embedding.mdx +156 -0
  107. package/.docs/raw/rag/overview.mdx +85 -0
  108. package/.docs/raw/rag/retrieval.mdx +365 -0
  109. package/.docs/raw/rag/vector-databases.mdx +340 -0
  110. package/.docs/raw/reference/agents/createTool.mdx +229 -0
  111. package/.docs/raw/reference/agents/generate.mdx +327 -0
  112. package/.docs/raw/reference/agents/getAgent.mdx +54 -0
  113. package/.docs/raw/reference/agents/stream.mdx +362 -0
  114. package/.docs/raw/reference/cli/build.mdx +48 -0
  115. package/.docs/raw/reference/cli/deploy.mdx +22 -0
  116. package/.docs/raw/reference/cli/dev.mdx +134 -0
  117. package/.docs/raw/reference/cli/init.mdx +43 -0
  118. package/.docs/raw/reference/client-js/agents.mdx +107 -0
  119. package/.docs/raw/reference/client-js/error-handling.mdx +38 -0
  120. package/.docs/raw/reference/client-js/logs.mdx +24 -0
  121. package/.docs/raw/reference/client-js/memory.mdx +97 -0
  122. package/.docs/raw/reference/client-js/telemetry.mdx +20 -0
  123. package/.docs/raw/reference/client-js/tools.mdx +44 -0
  124. package/.docs/raw/reference/client-js/vectors.mdx +79 -0
  125. package/.docs/raw/reference/client-js/workflows.mdx +136 -0
  126. package/.docs/raw/reference/core/mastra-class.mdx +232 -0
  127. package/.docs/raw/reference/deployer/cloudflare.mdx +176 -0
  128. package/.docs/raw/reference/deployer/deployer.mdx +159 -0
  129. package/.docs/raw/reference/deployer/netlify.mdx +88 -0
  130. package/.docs/raw/reference/deployer/vercel.mdx +97 -0
  131. package/.docs/raw/reference/evals/answer-relevancy.mdx +186 -0
  132. package/.docs/raw/reference/evals/bias.mdx +186 -0
  133. package/.docs/raw/reference/evals/completeness.mdx +174 -0
  134. package/.docs/raw/reference/evals/content-similarity.mdx +183 -0
  135. package/.docs/raw/reference/evals/context-position.mdx +190 -0
  136. package/.docs/raw/reference/evals/context-precision.mdx +189 -0
  137. package/.docs/raw/reference/evals/context-relevancy.mdx +188 -0
  138. package/.docs/raw/reference/evals/contextual-recall.mdx +191 -0
  139. package/.docs/raw/reference/evals/faithfulness.mdx +193 -0
  140. package/.docs/raw/reference/evals/hallucination.mdx +219 -0
  141. package/.docs/raw/reference/evals/keyword-coverage.mdx +176 -0
  142. package/.docs/raw/reference/evals/prompt-alignment.mdx +238 -0
  143. package/.docs/raw/reference/evals/summarization.mdx +205 -0
  144. package/.docs/raw/reference/evals/textual-difference.mdx +161 -0
  145. package/.docs/raw/reference/evals/tone-consistency.mdx +181 -0
  146. package/.docs/raw/reference/evals/toxicity.mdx +165 -0
  147. package/.docs/raw/reference/index.mdx +8 -0
  148. package/.docs/raw/reference/memory/Memory.mdx +212 -0
  149. package/.docs/raw/reference/memory/createThread.mdx +95 -0
  150. package/.docs/raw/reference/memory/getThreadById.mdx +46 -0
  151. package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +48 -0
  152. package/.docs/raw/reference/memory/query.mdx +167 -0
  153. package/.docs/raw/reference/networks/agent-network.mdx +159 -0
  154. package/.docs/raw/reference/observability/create-logger.mdx +106 -0
  155. package/.docs/raw/reference/observability/logger.mdx +55 -0
  156. package/.docs/raw/reference/observability/otel-config.mdx +120 -0
  157. package/.docs/raw/reference/observability/providers/braintrust.mdx +40 -0
  158. package/.docs/raw/reference/observability/providers/dash0.mdx +40 -0
  159. package/.docs/raw/reference/observability/providers/index.mdx +16 -0
  160. package/.docs/raw/reference/observability/providers/laminar.mdx +41 -0
  161. package/.docs/raw/reference/observability/providers/langfuse.mdx +51 -0
  162. package/.docs/raw/reference/observability/providers/langsmith.mdx +48 -0
  163. package/.docs/raw/reference/observability/providers/langwatch.mdx +45 -0
  164. package/.docs/raw/reference/observability/providers/new-relic.mdx +40 -0
  165. package/.docs/raw/reference/observability/providers/signoz.mdx +40 -0
  166. package/.docs/raw/reference/observability/providers/traceloop.mdx +40 -0
  167. package/.docs/raw/reference/rag/astra.mdx +258 -0
  168. package/.docs/raw/reference/rag/chroma.mdx +281 -0
  169. package/.docs/raw/reference/rag/chunk.mdx +235 -0
  170. package/.docs/raw/reference/rag/document.mdx +127 -0
  171. package/.docs/raw/reference/rag/embeddings.mdx +160 -0
  172. package/.docs/raw/reference/rag/extract-params.mdx +226 -0
  173. package/.docs/raw/reference/rag/graph-rag.mdx +182 -0
  174. package/.docs/raw/reference/rag/libsql.mdx +357 -0
  175. package/.docs/raw/reference/rag/metadata-filters.mdx +298 -0
  176. package/.docs/raw/reference/rag/pg.mdx +477 -0
  177. package/.docs/raw/reference/rag/pinecone.mdx +281 -0
  178. package/.docs/raw/reference/rag/qdrant.mdx +236 -0
  179. package/.docs/raw/reference/rag/rerank.mdx +212 -0
  180. package/.docs/raw/reference/rag/turbopuffer.mdx +249 -0
  181. package/.docs/raw/reference/rag/upstash.mdx +247 -0
  182. package/.docs/raw/reference/rag/vectorize.mdx +298 -0
  183. package/.docs/raw/reference/storage/libsql.mdx +74 -0
  184. package/.docs/raw/reference/storage/postgresql.mdx +48 -0
  185. package/.docs/raw/reference/storage/upstash.mdx +86 -0
  186. package/.docs/raw/reference/tools/client.mdx +188 -0
  187. package/.docs/raw/reference/tools/document-chunker-tool.mdx +141 -0
  188. package/.docs/raw/reference/tools/graph-rag-tool.mdx +154 -0
  189. package/.docs/raw/reference/tools/mcp-configuration.mdx +206 -0
  190. package/.docs/raw/reference/tools/vector-query-tool.mdx +212 -0
  191. package/.docs/raw/reference/voice/composite-voice.mdx +140 -0
  192. package/.docs/raw/reference/voice/deepgram.mdx +164 -0
  193. package/.docs/raw/reference/voice/elevenlabs.mdx +216 -0
  194. package/.docs/raw/reference/voice/google.mdx +198 -0
  195. package/.docs/raw/reference/voice/mastra-voice.mdx +394 -0
  196. package/.docs/raw/reference/voice/murf.mdx +251 -0
  197. package/.docs/raw/reference/voice/openai-realtime.mdx +431 -0
  198. package/.docs/raw/reference/voice/openai.mdx +168 -0
  199. package/.docs/raw/reference/voice/playai.mdx +159 -0
  200. package/.docs/raw/reference/voice/sarvam.mdx +260 -0
  201. package/.docs/raw/reference/voice/speechify.mdx +145 -0
  202. package/.docs/raw/reference/voice/voice.answer.mdx +122 -0
  203. package/.docs/raw/reference/voice/voice.connect.mdx +124 -0
  204. package/.docs/raw/reference/voice/voice.listen.mdx +195 -0
  205. package/.docs/raw/reference/voice/voice.on.mdx +189 -0
  206. package/.docs/raw/reference/voice/voice.send.mdx +118 -0
  207. package/.docs/raw/reference/voice/voice.speak.mdx +203 -0
  208. package/.docs/raw/reference/workflows/after.mdx +88 -0
  209. package/.docs/raw/reference/workflows/afterEvent.mdx +76 -0
  210. package/.docs/raw/reference/workflows/commit.mdx +37 -0
  211. package/.docs/raw/reference/workflows/createRun.mdx +77 -0
  212. package/.docs/raw/reference/workflows/else.mdx +72 -0
  213. package/.docs/raw/reference/workflows/events.mdx +305 -0
  214. package/.docs/raw/reference/workflows/execute.mdx +110 -0
  215. package/.docs/raw/reference/workflows/if.mdx +107 -0
  216. package/.docs/raw/reference/workflows/resume.mdx +155 -0
  217. package/.docs/raw/reference/workflows/resumeWithEvent.mdx +133 -0
  218. package/.docs/raw/reference/workflows/snapshots.mdx +207 -0
  219. package/.docs/raw/reference/workflows/start.mdx +84 -0
  220. package/.docs/raw/reference/workflows/step-class.mdx +100 -0
  221. package/.docs/raw/reference/workflows/step-condition.mdx +134 -0
  222. package/.docs/raw/reference/workflows/step-function.mdx +92 -0
  223. package/.docs/raw/reference/workflows/step-options.mdx +69 -0
  224. package/.docs/raw/reference/workflows/step-retries.mdx +203 -0
  225. package/.docs/raw/reference/workflows/suspend.mdx +70 -0
  226. package/.docs/raw/reference/workflows/then.mdx +74 -0
  227. package/.docs/raw/reference/workflows/until.mdx +165 -0
  228. package/.docs/raw/reference/workflows/watch.mdx +118 -0
  229. package/.docs/raw/reference/workflows/while.mdx +168 -0
  230. package/.docs/raw/reference/workflows/workflow.mdx +233 -0
  231. package/.docs/raw/storage/overview.mdx +378 -0
  232. package/.docs/raw/voice/overview.mdx +135 -0
  233. package/.docs/raw/voice/speech-to-text.mdx +45 -0
  234. package/.docs/raw/voice/text-to-speech.mdx +52 -0
  235. package/.docs/raw/voice/voice-to-voice.mdx +310 -0
  236. package/.docs/raw/workflows/control-flow.mdx +778 -0
  237. package/.docs/raw/workflows/dynamic-workflows.mdx +236 -0
  238. package/.docs/raw/workflows/error-handling.mdx +183 -0
  239. package/.docs/raw/workflows/nested-workflows.mdx +352 -0
  240. package/.docs/raw/workflows/overview.mdx +167 -0
  241. package/.docs/raw/workflows/steps.mdx +108 -0
  242. package/.docs/raw/workflows/suspend-and-resume.mdx +404 -0
  243. package/.docs/raw/workflows/variables.mdx +313 -0
  244. package/LICENSE +44 -0
  245. package/README.md +129 -0
  246. package/dist/_tsup-dts-rollup.d.ts +149 -0
  247. package/dist/chunk-QWYMT5LP.js +194 -0
  248. package/dist/prepare-docs/prepare.d.ts +1 -0
  249. package/dist/prepare-docs/prepare.js +1 -0
  250. package/dist/stdio.d.ts +1 -0
  251. package/dist/stdio.js +518 -0
  252. package/package.json +60 -0
@@ -0,0 +1,85 @@
1
+ ---
2
+ title: RAG (Retrieval-Augmented Generation) in Mastra | Mastra Docs
3
+ description: Overview of Retrieval-Augmented Generation (RAG) in Mastra, detailing its capabilities for enhancing LLM outputs with relevant context.
4
+ ---
5
+
6
+ # RAG (Retrieval-Augmented Generation) in Mastra
7
+
8
+ RAG in Mastra helps you enhance LLM outputs by incorporating relevant context from your own data sources, improving accuracy and grounding responses in real information.
9
+
10
+ Mastra's RAG system provides:
11
+
12
+ - Standardized APIs to process and embed documents
13
+ - Support for multiple vector stores
14
+ - Chunking and embedding strategies for optimal retrieval
15
+ - Observability for tracking embedding and retrieval performance
16
+
17
+ ## Example
18
+
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
+
21
+ ```ts showLineNumbers copy
22
+ import { embedMany } from "ai";
23
+ import { openai } from "@ai-sdk/openai";
24
+ import { PgVector } from "@mastra/pg";
25
+ import { MDocument } from "@mastra/rag";
26
+ import { z } from "zod";
27
+
28
+ // 1. Initialize document
29
+ const doc = MDocument.fromText(`Your document text here...`);
30
+
31
+ // 2. Create chunks
32
+ const chunks = await doc.chunk({
33
+ strategy: "recursive",
34
+ size: 512,
35
+ overlap: 50,
36
+ });
37
+
38
+ // 3. Generate embeddings; we need to pass the text of each chunk
39
+ const { embeddings } = await embedMany({
40
+ values: chunks.map(chunk => chunk.text),
41
+ model: openai.embedding("text-embedding-3-small"),
42
+ });
43
+
44
+ // 4. Store in vector database
45
+ const pgVector = new PgVector(process.env.POSTGRES_CONNECTION_STRING);
46
+ await pgVector.upsert({
47
+ indexName: "embeddings",
48
+ vectors: embeddings,
49
+ }); // using an index name of 'embeddings'
50
+
51
+ // 5. Query similar chunks
52
+ const results = await pgVector.query({
53
+ indexName: "embeddings",
54
+ queryVector: queryVector,
55
+ topK: 3,
56
+ }); // queryVector is the embedding of the query
57
+
58
+ console.log("Similar chunks:", results);
59
+ ```
60
+
61
+ This example shows the essentials: initialize a document, create chunks, generate embeddings, store them, and query for similar content.
62
+
63
+ ## Document Processing
64
+
65
+ The basic building block of RAG is document processing. Documents can be chunked using various strategies (recursive, sliding window, etc.) and enriched with metadata. See the [chunking and embedding doc](./chunking-and-embedding.mdx).
66
+
67
+ ## Vector Storage
68
+
69
+ Mastra supports multiple vector stores for embedding persistence and similarity search, including pgvector, Pinecone, and Qdrant. See the [vector database doc](./vector-databases.mdx).
70
+
71
+ ## Observability and Debugging
72
+
73
+ Mastra's RAG system includes observability features to help you optimize your retrieval pipeline:
74
+
75
+ - Track embedding generation performance and costs
76
+ - Monitor chunk quality and retrieval relevance
77
+ - Analyze query patterns and cache hit rates
78
+ - Export metrics to your observability platform
79
+
80
+ See the [OTel Configuration](../reference/observability/otel-config.mdx) page for more details.
81
+
82
+ ## More resources
83
+
84
+ - [Chain of Thought RAG Example](../../examples/rag/usage/cot-rag.mdx)
85
+ - [All RAG Examples](../../examples/) (including different chunking strategies, embedding models, and vector stores)
@@ -0,0 +1,365 @@
1
+ ---
2
+ title: "Retrieval, Semantic Search, Reranking | RAG | Mastra Docs"
3
+ description: Guide on retrieval processes in Mastra's RAG systems, including semantic search, filtering, and re-ranking.
4
+ ---
5
+
6
+ import { Tabs } from "nextra/components";
7
+
8
+ ## Retrieval in RAG Systems
9
+
10
+ After storing embeddings, you need to retrieve relevant chunks to answer user queries.
11
+
12
+ Mastra provides flexible retrieval options with support for semantic search, filtering, and re-ranking.
13
+
14
+ ## How Retrieval Works
15
+
16
+ 1. The user's query is converted to an embedding using the same model used for document embeddings
17
+ 2. This embedding is compared to stored embeddings using vector similarity
18
+ 3. The most similar chunks are retrieved and can be optionally:
19
+ - Filtered by metadata
20
+ - Re-ranked for better relevance
21
+ - Processed through a knowledge graph
22
+
23
+ ## Basic Retrieval
24
+
25
+ The simplest approach is direct semantic search. This method uses vector similarity to find chunks that are semantically similar to the query:
26
+
27
+ ```ts showLineNumbers copy
28
+ import { openai } from "@ai-sdk/openai";
29
+ import { embed } from "ai";
30
+ import { PgVector } from "@mastra/pg";
31
+
32
+ // Convert query to embedding
33
+ const { embedding } = await embed({
34
+ value: "What are the main points in the article?",
35
+ model: openai.embedding('text-embedding-3-small'),
36
+ });
37
+
38
+ // Query vector store
39
+ const pgVector = new PgVector(process.env.POSTGRES_CONNECTION_STRING);
40
+ const results = await pgVector.query({
41
+ indexName: "embeddings",
42
+ queryVector: embedding,
43
+ topK: 10,
44
+ });
45
+
46
+ // Display results
47
+ console.log(results);
48
+ ```
49
+
50
+ Results include both the text content and a similarity score:
51
+
52
+ ```ts showLineNumbers copy
53
+ [
54
+ {
55
+ text: "Climate change poses significant challenges...",
56
+ score: 0.89,
57
+ metadata: { source: "article1.txt" }
58
+ },
59
+ {
60
+ text: "Rising temperatures affect crop yields...",
61
+ score: 0.82,
62
+ metadata: { source: "article1.txt" }
63
+ }
64
+ // ... more results
65
+ ]
66
+ ```
67
+
68
+ For an example of how to use the basic retrieval method, see the [Retrieve Results](../../examples/rag/query/retrieve-results.mdx) example.
69
+
70
+ ## Advanced Retrieval options
71
+
72
+ ### Metadata Filtering
73
+
74
+ Filter results based on metadata fields to narrow down the search space. 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.
75
+
76
+ For detailed information about available operators and syntax, see the [Metadata Filters Reference](/docs/reference/rag/metadata-filters).
77
+
78
+ Basic filtering examples:
79
+
80
+ ```ts showLineNumbers copy
81
+ // Simple equality filter
82
+ const results = await pgVector.query({
83
+ indexName: "embeddings",
84
+ queryVector: embedding,
85
+ topK: 10,
86
+ filter: {
87
+ source: "article1.txt"
88
+ }
89
+ });
90
+
91
+ // Numeric comparison
92
+ const results = await pgVector.query({
93
+ indexName: "embeddings",
94
+ queryVector: embedding,
95
+ topK: 10,
96
+ filter: {
97
+ price: { $gt: 100 }
98
+ }
99
+ });
100
+
101
+ // Multiple conditions
102
+ const results = await pgVector.query({
103
+ indexName: "embeddings",
104
+ queryVector: embedding,
105
+ topK: 10,
106
+ filter: {
107
+ category: "electronics",
108
+ price: { $lt: 1000 },
109
+ inStock: true
110
+ }
111
+ });
112
+
113
+ // Array operations
114
+ const results = await pgVector.query({
115
+ indexName: "embeddings",
116
+ queryVector: embedding,
117
+ topK: 10,
118
+ filter: {
119
+ tags: { $in: ["sale", "new"] }
120
+ }
121
+ });
122
+
123
+ // Logical operators
124
+ const results = await pgVector.query({
125
+ indexName: "embeddings",
126
+ queryVector: embedding,
127
+ topK: 10,
128
+ filter: {
129
+ $or: [
130
+ { category: "electronics" },
131
+ { category: "accessories" }
132
+ ],
133
+ $and: [
134
+ { price: { $gt: 50 } },
135
+ { price: { $lt: 200 } }
136
+ ]
137
+ }
138
+ });
139
+ ```
140
+
141
+ Common use cases for metadata filtering:
142
+ - Filter by document source or type
143
+ - Filter by date ranges
144
+ - Filter by specific categories or tags
145
+ - Filter by numerical ranges (e.g., price, rating)
146
+ - Combine multiple conditions for precise querying
147
+ - Filter by document attributes (e.g., language, author)
148
+
149
+ For an example of how to use metadata filtering, see the [Hybrid Vector Search](../../examples/rag/query/hybrid-vector-search.mdx) example.
150
+
151
+ ### Vector Query Tool
152
+
153
+ 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
+
155
+ ```ts showLineNumbers copy
156
+ const vectorQueryTool = createVectorQueryTool({
157
+ vectorStoreName: 'pgVector',
158
+ indexName: 'embeddings',
159
+ model: openai.embedding('text-embedding-3-small'),
160
+ });
161
+ ```
162
+
163
+ When creating the tool, pay special attention to the tool's name and description - these help the agent understand when and how to use the retrieval capabilities. For example, you might name it "SearchKnowledgeBase" and describe it as "Search through our documentation to find relevant information about X topic."
164
+
165
+ This is particularly useful when:
166
+ - Your agent needs to dynamically decide what information to retrieve
167
+ - The retrieval process requires complex decision-making
168
+ - You want the agent to combine multiple retrieval strategies based on context
169
+
170
+ For detailed configuration options and advanced usage, see the [Vector Query Tool Reference](/docs/reference/tools/vector-query-tool).
171
+
172
+ ### Vector Store Prompts
173
+
174
+ Vector store prompts define query patterns and filtering capabilities for each vector database implementation.
175
+ When implementing filtering, these prompts are required in the agent's instructions to specify valid operators and syntax for each vector store implementation.
176
+
177
+ <Tabs items={['Pg Vector', 'Pinecone', 'Qdrant', 'Chroma', 'Astra', 'LibSQL', 'Upstash', 'Cloudflare']}>
178
+ <Tabs.Tab>
179
+ ```ts showLineNumbers copy
180
+ import { openai } from '@ai-sdk/openai';
181
+ import { PGVECTOR_PROMPT } from "@mastra/rag";
182
+
183
+ export const ragAgent = new Agent({
184
+ name: 'RAG Agent',
185
+ model: openai('gpt-4o-mini'),
186
+ instructions: `
187
+ Process queries using the provided context. Structure responses to be concise and relevant.
188
+ ${PGVECTOR_PROMPT}
189
+ `,
190
+ tools: { vectorQueryTool },
191
+ });
192
+ ```
193
+
194
+ </Tabs.Tab>
195
+ <Tabs.Tab>
196
+ ```ts filename="vector-store.ts" showLineNumbers copy
197
+ import { openai } from '@ai-sdk/openai';
198
+ import { PINECONE_PROMPT } from "@mastra/rag";
199
+
200
+ export const ragAgent = new Agent({
201
+ name: 'RAG Agent',
202
+ model: openai('gpt-4o-mini'),
203
+ instructions: `
204
+ Process queries using the provided context. Structure responses to be concise and relevant.
205
+ ${PINECONE_PROMPT}
206
+ `,
207
+ tools: { vectorQueryTool },
208
+ });
209
+ ```
210
+ </Tabs.Tab>
211
+ <Tabs.Tab>
212
+ ```ts filename="vector-store.ts" showLineNumbers copy
213
+ import { openai } from '@ai-sdk/openai';
214
+ import { QDRANT_PROMPT } from "@mastra/rag";
215
+
216
+ export const ragAgent = new Agent({
217
+ name: 'RAG Agent',
218
+ model: openai('gpt-4o-mini'),
219
+ instructions: `
220
+ Process queries using the provided context. Structure responses to be concise and relevant.
221
+ ${QDRANT_PROMPT}
222
+ `,
223
+ tools: { vectorQueryTool },
224
+ });
225
+ ```
226
+ </Tabs.Tab>
227
+ <Tabs.Tab>
228
+ ```ts filename="vector-store.ts" showLineNumbers copy
229
+ import { openai } from '@ai-sdk/openai';
230
+ import { CHROMA_PROMPT } from "@mastra/rag";
231
+
232
+ export const ragAgent = new Agent({
233
+ name: 'RAG Agent',
234
+ model: openai('gpt-4o-mini'),
235
+ instructions: `
236
+ Process queries using the provided context. Structure responses to be concise and relevant.
237
+ ${CHROMA_PROMPT}
238
+ `,
239
+ tools: { vectorQueryTool },
240
+ });
241
+ ```
242
+ </Tabs.Tab>
243
+ <Tabs.Tab>
244
+ ```ts filename="vector-store.ts" showLineNumbers copy
245
+ import { openai } from '@ai-sdk/openai';
246
+ import { ASTRA_PROMPT } from "@mastra/rag";
247
+
248
+ export const ragAgent = new Agent({
249
+ name: 'RAG Agent',
250
+ model: openai('gpt-4o-mini'),
251
+ instructions: `
252
+ Process queries using the provided context. Structure responses to be concise and relevant.
253
+ ${ASTRA_PROMPT}
254
+ `,
255
+ tools: { vectorQueryTool },
256
+ });
257
+ ```
258
+ </Tabs.Tab>
259
+ <Tabs.Tab>
260
+ ```ts filename="vector-store.ts" showLineNumbers copy
261
+ import { openai } from '@ai-sdk/openai';
262
+ import { LIBSQL_PROMPT } from "@mastra/rag";
263
+
264
+ export const ragAgent = new Agent({
265
+ name: 'RAG Agent',
266
+ model: openai('gpt-4o-mini'),
267
+ instructions: `
268
+ Process queries using the provided context. Structure responses to be concise and relevant.
269
+ ${LIBSQL_PROMPT}
270
+ `,
271
+ tools: { vectorQueryTool },
272
+ });
273
+ ```
274
+ </Tabs.Tab>
275
+ <Tabs.Tab>
276
+ ```ts filename="vector-store.ts" showLineNumbers copy
277
+ import { openai } from '@ai-sdk/openai';
278
+ import { UPSTASH_PROMPT } from "@mastra/rag";
279
+
280
+ export const ragAgent = new Agent({
281
+ name: 'RAG Agent',
282
+ model: openai('gpt-4o-mini'),
283
+ instructions: `
284
+ Process queries using the provided context. Structure responses to be concise and relevant.
285
+ ${UPSTASH_PROMPT}
286
+ `,
287
+ tools: { vectorQueryTool },
288
+ });
289
+ ```
290
+ </Tabs.Tab>
291
+ <Tabs.Tab>
292
+ ```ts filename="vector-store.ts" showLineNumbers copy
293
+ import { openai } from '@ai-sdk/openai';
294
+ import { VECTORIZE_PROMPT } from "@mastra/rag";
295
+
296
+ export const ragAgent = new Agent({
297
+ name: 'RAG Agent',
298
+ model: openai('gpt-4o-mini'),
299
+ instructions: `
300
+ Process queries using the provided context. Structure responses to be concise and relevant.
301
+ ${VECTORIZE_PROMPT}
302
+ `,
303
+ tools: { vectorQueryTool },
304
+ });
305
+ ```
306
+ </Tabs.Tab>
307
+ </Tabs>
308
+
309
+ ### Re-ranking
310
+
311
+ Initial vector similarity search can sometimes miss nuanced relevance. Re-ranking is a more computationally expensive process, but more accurate algorithm that improves results by:
312
+
313
+ - Considering word order and exact matches
314
+ - Applying more sophisticated relevance scoring
315
+ - Using a method called cross-attention between query and documents
316
+
317
+ Here's how to use re-ranking:
318
+
319
+ ```ts showLineNumbers copy
320
+ import { openai } from "@ai-sdk/openai";
321
+ import { rerank } from "@mastra/rag";
322
+
323
+ // Get initial results from vector search
324
+ const initialResults = await pgVector.query({
325
+ indexName: "embeddings",
326
+ queryVector: queryEmbedding,
327
+ topK: 10,
328
+ });
329
+
330
+ // Re-rank the results
331
+ const rerankedResults = await rerank(initialResults, query, openai('gpt-4o-mini'));
332
+ ```
333
+
334
+ > **Note:** For semantic scoring to work properly during re-ranking, each result must include the text content in its `metadata.text` field.
335
+
336
+ The re-ranked results combine vector similarity with semantic understanding to improve retrieval quality.
337
+
338
+ For more details about re-ranking, see the [rerank()](/docs/reference/rag/rerank) method.
339
+
340
+ For an example of how to use the re-ranking method, see the [Re-ranking Results](../../examples/rag/rerank/rerank.mdx) example.
341
+
342
+ ### Graph-based Retrieval
343
+
344
+ For documents with complex relationships, graph-based retrieval can follow connections between chunks. This helps when:
345
+
346
+ - Information is spread across multiple documents
347
+ - Documents reference each other
348
+ - You need to traverse relationships to find complete answers
349
+
350
+ Example setup:
351
+
352
+ ```ts showLineNumbers copy
353
+ const graphQueryTool = createGraphQueryTool({
354
+ vectorStoreName: 'pgVector',
355
+ indexName: 'embeddings',
356
+ model: openai.embedding('text-embedding-3-small'),
357
+ graphOptions: {
358
+ threshold: 0.7,
359
+ }
360
+ });
361
+ ```
362
+
363
+ For more details about graph-based retrieval, see the [GraphRAG](/docs/reference/rag/graph-rag) class and the [createGraphQueryTool()](/docs/reference/tools/graph-rag-tool) function.
364
+
365
+ For an example of how to use the graph-based retrieval method, see the [Graph-based Retrieval](../../examples/rag/usage/graph-rag.mdx) example.