@mastra/mcp-docs-server 0.0.1-alpha.1

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 (246) 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%2Fclient-js.md +302 -0
  4. package/.docs/organized/changelogs/%40mastra%2Fcomposio.md +302 -0
  5. package/.docs/organized/changelogs/%40mastra%2Fcore.md +302 -0
  6. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +302 -0
  7. package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +302 -0
  8. package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +302 -0
  9. package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +302 -0
  10. package/.docs/organized/changelogs/%40mastra%2Fevals.md +302 -0
  11. package/.docs/organized/changelogs/%40mastra%2Ffirecrawl.md +302 -0
  12. package/.docs/organized/changelogs/%40mastra%2Fgithub.md +302 -0
  13. package/.docs/organized/changelogs/%40mastra%2Floggers.md +302 -0
  14. package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +11 -0
  15. package/.docs/organized/changelogs/%40mastra%2Fmcp.md +302 -0
  16. package/.docs/organized/changelogs/%40mastra%2Fmemory.md +302 -0
  17. package/.docs/organized/changelogs/%40mastra%2Fpg.md +302 -0
  18. package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +302 -0
  19. package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +302 -0
  20. package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +302 -0
  21. package/.docs/organized/changelogs/%40mastra%2Frag.md +302 -0
  22. package/.docs/organized/changelogs/%40mastra%2Fragie.md +302 -0
  23. package/.docs/organized/changelogs/%40mastra%2Fspeech-azure.md +302 -0
  24. package/.docs/organized/changelogs/%40mastra%2Fspeech-deepgram.md +302 -0
  25. package/.docs/organized/changelogs/%40mastra%2Fspeech-elevenlabs.md +302 -0
  26. package/.docs/organized/changelogs/%40mastra%2Fspeech-google.md +302 -0
  27. package/.docs/organized/changelogs/%40mastra%2Fspeech-ibm.md +302 -0
  28. package/.docs/organized/changelogs/%40mastra%2Fspeech-murf.md +302 -0
  29. package/.docs/organized/changelogs/%40mastra%2Fspeech-openai.md +302 -0
  30. package/.docs/organized/changelogs/%40mastra%2Fspeech-playai.md +302 -0
  31. package/.docs/organized/changelogs/%40mastra%2Fspeech-replicate.md +302 -0
  32. package/.docs/organized/changelogs/%40mastra%2Fspeech-speechify.md +302 -0
  33. package/.docs/organized/changelogs/%40mastra%2Fstabilityai.md +302 -0
  34. package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +59 -0
  35. package/.docs/organized/changelogs/%40mastra%2Fupstash.md +302 -0
  36. package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +302 -0
  37. package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +302 -0
  38. package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +302 -0
  39. package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +302 -0
  40. package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +302 -0
  41. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +24 -0
  42. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +302 -0
  43. package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +302 -0
  44. package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +12 -0
  45. package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +302 -0
  46. package/.docs/organized/changelogs/create-mastra.md +302 -0
  47. package/.docs/organized/changelogs/mastra.md +302 -0
  48. package/.docs/organized/code-examples/agent.md +385 -0
  49. package/.docs/organized/code-examples/ai-sdk-useChat.md +377 -0
  50. package/.docs/organized/code-examples/assistant-ui.md +37 -0
  51. package/.docs/organized/code-examples/bird-checker-with-express.md +235 -0
  52. package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +360 -0
  53. package/.docs/organized/code-examples/bird-checker-with-nextjs.md +250 -0
  54. package/.docs/organized/code-examples/crypto-chatbot.md +96 -0
  55. package/.docs/organized/code-examples/fireworks-r1.md +159 -0
  56. package/.docs/organized/code-examples/integrations.md +184 -0
  57. package/.docs/organized/code-examples/mcp-configuration.md +341 -0
  58. package/.docs/organized/code-examples/memory-todo-agent.md +161 -0
  59. package/.docs/organized/code-examples/memory-with-context.md +167 -0
  60. package/.docs/organized/code-examples/memory-with-libsql.md +204 -0
  61. package/.docs/organized/code-examples/memory-with-pg.md +224 -0
  62. package/.docs/organized/code-examples/memory-with-upstash.md +268 -0
  63. package/.docs/organized/code-examples/quick-start.md +127 -0
  64. package/.docs/organized/code-examples/stock-price-tool.md +124 -0
  65. package/.docs/organized/code-examples/weather-agent.md +352 -0
  66. package/.docs/organized/code-examples/workflow-ai-recruiter.md +159 -0
  67. package/.docs/organized/code-examples/workflow-with-inline-steps.md +111 -0
  68. package/.docs/organized/code-examples/workflow-with-memory.md +393 -0
  69. package/.docs/organized/code-examples/workflow-with-separate-steps.md +131 -0
  70. package/.docs/raw/agents/00-overview.mdx +185 -0
  71. package/.docs/raw/agents/01-agent-memory.mdx +610 -0
  72. package/.docs/raw/agents/02-adding-tools.mdx +224 -0
  73. package/.docs/raw/agents/03-adding-voice.mdx +170 -0
  74. package/.docs/raw/deployment/deployment.mdx +156 -0
  75. package/.docs/raw/deployment/logging-and-tracing.mdx +242 -0
  76. package/.docs/raw/deployment/server.mdx +114 -0
  77. package/.docs/raw/evals/00-overview.mdx +106 -0
  78. package/.docs/raw/evals/01-supported-evals.mdx +31 -0
  79. package/.docs/raw/evals/02-custom-eval.mdx +187 -0
  80. package/.docs/raw/faq/index.mdx +63 -0
  81. package/.docs/raw/frameworks/01-next-js.mdx +238 -0
  82. package/.docs/raw/frameworks/02-ai-sdk.mdx +218 -0
  83. package/.docs/raw/getting-started/installation.mdx +436 -0
  84. package/.docs/raw/getting-started/project-structure.mdx +80 -0
  85. package/.docs/raw/guides/01-chef-michel.mdx +242 -0
  86. package/.docs/raw/guides/02-stock-agent.mdx +182 -0
  87. package/.docs/raw/guides/03-recruiter.mdx +187 -0
  88. package/.docs/raw/index.mdx +22 -0
  89. package/.docs/raw/local-dev/creating-projects.mdx +74 -0
  90. package/.docs/raw/local-dev/integrations.mdx +127 -0
  91. package/.docs/raw/local-dev/mastra-dev.mdx +65 -0
  92. package/.docs/raw/rag/chunking-and-embedding.mdx +128 -0
  93. package/.docs/raw/rag/overview.mdx +85 -0
  94. package/.docs/raw/rag/retrieval.mdx +362 -0
  95. package/.docs/raw/rag/vector-databases.mdx +271 -0
  96. package/.docs/raw/reference/agents/createTool.mdx +190 -0
  97. package/.docs/raw/reference/agents/generate.mdx +327 -0
  98. package/.docs/raw/reference/agents/getAgent.mdx +54 -0
  99. package/.docs/raw/reference/agents/stream.mdx +361 -0
  100. package/.docs/raw/reference/cli/build.mdx +48 -0
  101. package/.docs/raw/reference/cli/deploy.mdx +22 -0
  102. package/.docs/raw/reference/cli/dev.mdx +97 -0
  103. package/.docs/raw/reference/cli/init.mdx +43 -0
  104. package/.docs/raw/reference/client-js/agents.mdx +90 -0
  105. package/.docs/raw/reference/client-js/error-handling.mdx +38 -0
  106. package/.docs/raw/reference/client-js/index.mdx +127 -0
  107. package/.docs/raw/reference/client-js/logs.mdx +24 -0
  108. package/.docs/raw/reference/client-js/memory.mdx +94 -0
  109. package/.docs/raw/reference/client-js/telemetry.mdx +20 -0
  110. package/.docs/raw/reference/client-js/tools.mdx +44 -0
  111. package/.docs/raw/reference/client-js/vectors.mdx +79 -0
  112. package/.docs/raw/reference/client-js/workflows.mdx +137 -0
  113. package/.docs/raw/reference/core/mastra-class.mdx +232 -0
  114. package/.docs/raw/reference/deployer/cloudflare.mdx +176 -0
  115. package/.docs/raw/reference/deployer/deployer.mdx +159 -0
  116. package/.docs/raw/reference/deployer/netlify.mdx +88 -0
  117. package/.docs/raw/reference/deployer/vercel.mdx +97 -0
  118. package/.docs/raw/reference/evals/answer-relevancy.mdx +186 -0
  119. package/.docs/raw/reference/evals/bias.mdx +186 -0
  120. package/.docs/raw/reference/evals/completeness.mdx +174 -0
  121. package/.docs/raw/reference/evals/content-similarity.mdx +183 -0
  122. package/.docs/raw/reference/evals/context-position.mdx +190 -0
  123. package/.docs/raw/reference/evals/context-precision.mdx +189 -0
  124. package/.docs/raw/reference/evals/context-relevancy.mdx +188 -0
  125. package/.docs/raw/reference/evals/contextual-recall.mdx +191 -0
  126. package/.docs/raw/reference/evals/faithfulness.mdx +193 -0
  127. package/.docs/raw/reference/evals/hallucination.mdx +219 -0
  128. package/.docs/raw/reference/evals/keyword-coverage.mdx +176 -0
  129. package/.docs/raw/reference/evals/prompt-alignment.mdx +238 -0
  130. package/.docs/raw/reference/evals/summarization.mdx +205 -0
  131. package/.docs/raw/reference/evals/textual-difference.mdx +161 -0
  132. package/.docs/raw/reference/evals/tone-consistency.mdx +181 -0
  133. package/.docs/raw/reference/evals/toxicity.mdx +165 -0
  134. package/.docs/raw/reference/index.mdx +8 -0
  135. package/.docs/raw/reference/memory/Memory.mdx +186 -0
  136. package/.docs/raw/reference/memory/createThread.mdx +93 -0
  137. package/.docs/raw/reference/memory/getThreadById.mdx +43 -0
  138. package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +45 -0
  139. package/.docs/raw/reference/memory/query.mdx +164 -0
  140. package/.docs/raw/reference/observability/create-logger.mdx +106 -0
  141. package/.docs/raw/reference/observability/logger.mdx +55 -0
  142. package/.docs/raw/reference/observability/otel-config.mdx +120 -0
  143. package/.docs/raw/reference/observability/providers/braintrust.mdx +40 -0
  144. package/.docs/raw/reference/observability/providers/index.mdx +15 -0
  145. package/.docs/raw/reference/observability/providers/laminar.mdx +41 -0
  146. package/.docs/raw/reference/observability/providers/langfuse.mdx +51 -0
  147. package/.docs/raw/reference/observability/providers/langsmith.mdx +46 -0
  148. package/.docs/raw/reference/observability/providers/langwatch.mdx +45 -0
  149. package/.docs/raw/reference/observability/providers/new-relic.mdx +40 -0
  150. package/.docs/raw/reference/observability/providers/signoz.mdx +40 -0
  151. package/.docs/raw/reference/observability/providers/traceloop.mdx +40 -0
  152. package/.docs/raw/reference/rag/astra.mdx +258 -0
  153. package/.docs/raw/reference/rag/chroma.mdx +281 -0
  154. package/.docs/raw/reference/rag/chunk.mdx +237 -0
  155. package/.docs/raw/reference/rag/document.mdx +129 -0
  156. package/.docs/raw/reference/rag/embeddings.mdx +160 -0
  157. package/.docs/raw/reference/rag/extract-params.mdx +72 -0
  158. package/.docs/raw/reference/rag/graph-rag.mdx +182 -0
  159. package/.docs/raw/reference/rag/libsql.mdx +357 -0
  160. package/.docs/raw/reference/rag/metadata-filters.mdx +298 -0
  161. package/.docs/raw/reference/rag/pg.mdx +477 -0
  162. package/.docs/raw/reference/rag/pinecone.mdx +249 -0
  163. package/.docs/raw/reference/rag/qdrant.mdx +236 -0
  164. package/.docs/raw/reference/rag/rerank.mdx +212 -0
  165. package/.docs/raw/reference/rag/turbopuffer.mdx +249 -0
  166. package/.docs/raw/reference/rag/upstash.mdx +198 -0
  167. package/.docs/raw/reference/rag/vectorize.mdx +253 -0
  168. package/.docs/raw/reference/storage/libsql.mdx +74 -0
  169. package/.docs/raw/reference/storage/postgresql.mdx +48 -0
  170. package/.docs/raw/reference/storage/upstash.mdx +86 -0
  171. package/.docs/raw/reference/tools/client.mdx +180 -0
  172. package/.docs/raw/reference/tools/document-chunker-tool.mdx +141 -0
  173. package/.docs/raw/reference/tools/graph-rag-tool.mdx +154 -0
  174. package/.docs/raw/reference/tools/mcp-configuration.mdx +206 -0
  175. package/.docs/raw/reference/tools/vector-query-tool.mdx +212 -0
  176. package/.docs/raw/reference/voice/composite-voice.mdx +140 -0
  177. package/.docs/raw/reference/voice/deepgram.mdx +164 -0
  178. package/.docs/raw/reference/voice/elevenlabs.mdx +216 -0
  179. package/.docs/raw/reference/voice/google.mdx +198 -0
  180. package/.docs/raw/reference/voice/mastra-voice.mdx +394 -0
  181. package/.docs/raw/reference/voice/murf.mdx +251 -0
  182. package/.docs/raw/reference/voice/openai-realtime.mdx +431 -0
  183. package/.docs/raw/reference/voice/openai.mdx +168 -0
  184. package/.docs/raw/reference/voice/playai.mdx +159 -0
  185. package/.docs/raw/reference/voice/speechify.mdx +145 -0
  186. package/.docs/raw/reference/workflows/after.mdx +88 -0
  187. package/.docs/raw/reference/workflows/commit.mdx +37 -0
  188. package/.docs/raw/reference/workflows/createRun.mdx +77 -0
  189. package/.docs/raw/reference/workflows/else.mdx +72 -0
  190. package/.docs/raw/reference/workflows/execute.mdx +110 -0
  191. package/.docs/raw/reference/workflows/if.mdx +107 -0
  192. package/.docs/raw/reference/workflows/resume.mdx +155 -0
  193. package/.docs/raw/reference/workflows/start.mdx +84 -0
  194. package/.docs/raw/reference/workflows/step-class.mdx +100 -0
  195. package/.docs/raw/reference/workflows/step-condition.mdx +134 -0
  196. package/.docs/raw/reference/workflows/step-function.mdx +92 -0
  197. package/.docs/raw/reference/workflows/step-options.mdx +69 -0
  198. package/.docs/raw/reference/workflows/suspend.mdx +80 -0
  199. package/.docs/raw/reference/workflows/then.mdx +74 -0
  200. package/.docs/raw/reference/workflows/until.mdx +165 -0
  201. package/.docs/raw/reference/workflows/watch.mdx +118 -0
  202. package/.docs/raw/reference/workflows/while.mdx +168 -0
  203. package/.docs/raw/reference/workflows/workflow.mdx +233 -0
  204. package/.docs/raw/workflows/00-overview.mdx +168 -0
  205. package/.docs/raw/workflows/control-flow.mdx +712 -0
  206. package/.docs/raw/workflows/dynamic-workflows.mdx +232 -0
  207. package/.docs/raw/workflows/steps.mdx +98 -0
  208. package/.docs/raw/workflows/suspend-and-resume.mdx +196 -0
  209. package/.docs/raw/workflows/variables.mdx +248 -0
  210. package/LICENSE +44 -0
  211. package/README.md +129 -0
  212. package/dist/index.d.ts +3 -0
  213. package/dist/index.js +19 -0
  214. package/dist/prepare-docs/code-examples.d.ts +4 -0
  215. package/dist/prepare-docs/code-examples.js +91 -0
  216. package/dist/prepare-docs/copy-raw.d.ts +1 -0
  217. package/dist/prepare-docs/copy-raw.js +41 -0
  218. package/dist/prepare-docs/index.d.ts +1 -0
  219. package/dist/prepare-docs/index.js +8 -0
  220. package/dist/prepare-docs/package-changes.d.ts +4 -0
  221. package/dist/prepare-docs/package-changes.js +92 -0
  222. package/dist/prepare-docs/prepare.d.ts +1 -0
  223. package/dist/prepare-docs/prepare.js +13 -0
  224. package/dist/sse.d.ts +1 -0
  225. package/dist/sse.js +9 -0
  226. package/dist/stdio.d.ts +1 -0
  227. package/dist/stdio.js +8 -0
  228. package/dist/tools/__tests__/blog.test.d.ts +1 -0
  229. package/dist/tools/__tests__/blog.test.js +48 -0
  230. package/dist/tools/__tests__/changes.test.d.ts +1 -0
  231. package/dist/tools/__tests__/changes.test.js +36 -0
  232. package/dist/tools/__tests__/docs.test.d.ts +1 -0
  233. package/dist/tools/__tests__/docs.test.js +46 -0
  234. package/dist/tools/__tests__/examples.test.d.ts +1 -0
  235. package/dist/tools/__tests__/examples.test.js +52 -0
  236. package/dist/tools/blog.d.ts +15 -0
  237. package/dist/tools/blog.js +73 -0
  238. package/dist/tools/changes.d.ts +11 -0
  239. package/dist/tools/changes.js +69 -0
  240. package/dist/tools/docs.d.ts +11 -0
  241. package/dist/tools/docs.js +176 -0
  242. package/dist/tools/examples.d.ts +11 -0
  243. package/dist/tools/examples.js +61 -0
  244. package/dist/utils.d.ts +6 -0
  245. package/dist/utils.js +9 -0
  246. package/package.json +66 -0
@@ -0,0 +1,298 @@
1
+ ---
2
+ title: "Reference: Metadata Filters | Metadata Filtering | RAG | Mastra Docs"
3
+ description: Documentation for metadata filtering capabilities in Mastra, which allow for precise querying of vector search results across different vector stores.
4
+ ---
5
+
6
+ # Metadata Filters
7
+
8
+ Mastra provides a unified metadata filtering syntax across all vector stores, based on MongoDB/Sift query syntax. Each vector store translates these filters into their native format.
9
+
10
+ ## Basic Example
11
+
12
+ ```typescript
13
+ import { PgVector } from '@mastra/pg';
14
+
15
+ const store = new PgVector(connectionString);
16
+
17
+ const results = await store.query({
18
+ indexName: "my_index",
19
+ queryVector: queryVector,
20
+ topK: 10,
21
+ filter: {
22
+ category: "electronics", // Simple equality
23
+ price: { $gt: 100 }, // Numeric comparison
24
+ tags: { $in: ["sale", "new"] } // Array membership
25
+ }
26
+ });
27
+ ```
28
+
29
+ ## Supported Operators
30
+
31
+ <OperatorsTable
32
+ title="Basic Comparison"
33
+ operators={[
34
+ {
35
+ name: "$eq",
36
+ description: "Matches values equal to specified value",
37
+ example: "{ age: { $eq: 25 } }",
38
+ supportedBy: ["All"]
39
+ },
40
+ {
41
+ name: "$ne",
42
+ description: "Matches values not equal",
43
+ example: "{ status: { $ne: 'inactive' } }",
44
+ supportedBy: ["All"]
45
+ },
46
+ {
47
+ name: "$gt",
48
+ description: "Greater than",
49
+ example: "{ price: { $gt: 100 } }",
50
+ supportedBy: ["All"]
51
+ },
52
+ {
53
+ name: "$gte",
54
+ description: "Greater than or equal",
55
+ example: "{ rating: { $gte: 4.5 } }",
56
+ supportedBy: ["All"]
57
+ },
58
+ {
59
+ name: "$lt",
60
+ description: "Less than",
61
+ example: "{ stock: { $lt: 20 } }",
62
+ supportedBy: ["All"]
63
+ },
64
+ {
65
+ name: "$lte",
66
+ description: "Less than or equal",
67
+ example: "{ priority: { $lte: 3 } }",
68
+ supportedBy: ["All"]
69
+ }
70
+ ]}
71
+ />
72
+
73
+ <OperatorsTable
74
+ title="Array Operators"
75
+ operators={[
76
+ {
77
+ name: "$in",
78
+ description: "Matches any value in array",
79
+ example: '{ category: { $in: ["A", "B"] } }',
80
+ supportedBy: ["All"]
81
+ },
82
+ {
83
+ name: "$nin",
84
+ description: "Matches none of the values",
85
+ example: '{ status: { $nin: ["deleted", "archived"] } }',
86
+ supportedBy: ["All"]
87
+ },
88
+ {
89
+ name: "$all",
90
+ description: "Matches arrays containing all elements",
91
+ example: '{ tags: { $all: ["urgent", "high"] } }',
92
+ supportedBy: ["Astra", "Pinecone", "Upstash"]
93
+ },
94
+ {
95
+ name: "$elemMatch",
96
+ description: "Matches array elements meeting criteria",
97
+ example: '{ scores: { $elemMatch: { $gt: 80 } } }',
98
+ supportedBy: ["LibSQL", "PgVector"]
99
+ }
100
+ ]}
101
+ />
102
+
103
+ <OperatorsTable
104
+ title="Logical Operators"
105
+ operators={[
106
+ {
107
+ name: "$and",
108
+ description: "Logical AND",
109
+ example: '{ $and: [{ price: { $gt: 100 } }, { stock: { $gt: 0 } }] }',
110
+ supportedBy: ["All except Vectorize"]
111
+ },
112
+ {
113
+ name: "$or",
114
+ description: "Logical OR",
115
+ example: '{ $or: [{ status: "active" }, { priority: "high" }] }',
116
+ supportedBy: ["All except Vectorize"]
117
+ },
118
+ {
119
+ name: "$not",
120
+ description: "Logical NOT",
121
+ example: '{ price: { $not: { $lt: 100 } } }',
122
+ supportedBy: ["Astra", "Qdrant", "Upstash", "PgVector", "LibSQL"]
123
+ },
124
+ {
125
+ name: "$nor",
126
+ description: "Logical NOR",
127
+ example: '{ $nor: [{ status: "deleted" }, { archived: true }] }',
128
+ supportedBy: ["Qdrant", "Upstash", "PgVector", "LibSQL"]
129
+ }
130
+ ]}
131
+ />
132
+
133
+ <OperatorsTable
134
+ title="Element Operators"
135
+ operators={[
136
+ {
137
+ name: "$exists",
138
+ description: "Matches documents with field",
139
+ example: '{ rating: { $exists: true } }',
140
+ supportedBy: ["All except Vectorize, Chroma"]
141
+ }
142
+ ]}
143
+ />
144
+
145
+ <OperatorsTable
146
+ title="Custom Operators"
147
+ operators={[
148
+ {
149
+ name: "$contains",
150
+ description: "Text contains substring",
151
+ example: '{ description: { $contains: "sale" } }',
152
+ supportedBy: ["Upstash", "LibSQL", "PgVector"]
153
+ },
154
+ {
155
+ name: "$regex",
156
+ description: "Regular expression match",
157
+ example: '{ name: { $regex: "^test" } }',
158
+ supportedBy: ["Qdrant", "PgVector", "Upstash"]
159
+ },
160
+ {
161
+ name: "$size",
162
+ description: "Array length check",
163
+ example: '{ tags: { $size: { $gt: 2 } } }',
164
+ supportedBy: ["Astra", "LibSQL", "PgVector"]
165
+ },
166
+ {
167
+ name: "$geo",
168
+ description: "Geospatial query",
169
+ example: '{ location: { $geo: { type: "radius", ... } } }',
170
+ supportedBy: ["Qdrant"]
171
+ },
172
+ {
173
+ name: "$datetime",
174
+ description: "Datetime range query",
175
+ example: '{ created: { $datetime: { range: { gt: "2024-01-01" } } } }',
176
+ supportedBy: ["Qdrant"]
177
+ },
178
+ {
179
+ name: "$hasId",
180
+ description: "Vector ID existence check",
181
+ example: '{ $hasId: ["id1", "id2"] }',
182
+ supportedBy: ["Qdrant"]
183
+ },
184
+ {
185
+ name: "$hasVector",
186
+ description: "Vector existence check",
187
+ example: '{ $hasVector: true }',
188
+ supportedBy: ["Qdrant"]
189
+ }
190
+ ]}
191
+ />
192
+
193
+ ## Common Rules and Restrictions
194
+
195
+ 1. Field names cannot:
196
+ - Contain dots (.) unless referring to nested fields
197
+ - Start with $ or contain null characters
198
+ - Be empty strings
199
+
200
+ 2. Values must be:
201
+ - Valid JSON types (string, number, boolean, object, array)
202
+ - Not undefined
203
+ - Properly typed for the operator (e.g., numbers for numeric comparisons)
204
+
205
+ 3. Logical operators:
206
+ - Must contain valid conditions
207
+ - Cannot be empty
208
+ - Must be properly nested
209
+ - Can only be used at top level or nested within other logical operators
210
+ - Cannot be used at field level or nested inside a field
211
+ - Cannot be used inside an operator
212
+ - Valid: `{ "$and": [{ "field": { "$gt": 100 } }] }`
213
+ - Valid: `{ "$or": [{ "$and": [{ "field": { "$gt": 100 } }] }] }`
214
+ - Invalid: `{ "field": { "$and": [{ "$gt": 100 }] } }`
215
+ - Invalid: `{ "field": { "$gt": { "$and": [{...}] } } }`
216
+
217
+ 4. $not operator:
218
+ - Must be an object
219
+ - Cannot be empty
220
+ - Can be used at field level or top level
221
+ - Valid: `{ "$not": { "field": "value" } }`
222
+ - Valid: `{ "field": { "$not": { "$eq": "value" } } }`
223
+
224
+ 5. Operator nesting:
225
+ - Logical operators must contain field conditions, not direct operators
226
+ - Valid: `{ "$and": [{ "field": { "$gt": 100 } }] }`
227
+ - Invalid: `{ "$and": [{ "$gt": 100 }] }`
228
+
229
+ ## Store-Specific Notes
230
+
231
+ ### Astra
232
+ - Nested field queries are supported using dot notation
233
+ - Array fields must be explicitly defined as arrays in the metadata
234
+ - Metadata values are case-sensitive
235
+
236
+ ### ChromaDB
237
+ - Where filters only return results where the filtered field exists in metadata
238
+ - Empty metadata fields are not included in filter results
239
+ - Metadata fields must be present for negative matches (e.g., $ne won't match documents missing the field)
240
+
241
+ ### Cloudflare Vectorize
242
+ - Requires explicit metadata indexing before filtering can be used
243
+ - Use `createMetadataIndex()` to index fields you want to filter on
244
+ - Up to 10 metadata indexes per Vectorize index
245
+ - String values are indexed up to first 64 bytes (truncated on UTF-8 boundaries)
246
+ - Number values use float64 precision
247
+ - Filter JSON must be under 2048 bytes
248
+ - Field names cannot contain dots (.) or start with $
249
+ - Field names limited to 512 characters
250
+ - Vectors must be re-upserted after creating new metadata indexes to be included in filtered results
251
+ - Range queries may have reduced accuracy with very large datasets (~10M+ vectors)
252
+
253
+ ### LibSQL
254
+ - Supports nested object queries with dot notation
255
+ - Array fields are validated to ensure they contain valid JSON arrays
256
+ - Numeric comparisons maintain proper type handling
257
+ - Empty arrays in conditions are handled gracefully
258
+ - Metadata is stored in a JSONB column for efficient querying
259
+
260
+ ### PgVector
261
+ - Full support for PostgreSQL's native JSON querying capabilities
262
+ - Efficient handling of array operations using native array functions
263
+ - Proper type handling for numbers, strings, and booleans
264
+ - Nested field queries use PostgreSQL's JSON path syntax internally
265
+ - Metadata is stored in a JSONB column for efficient indexing
266
+
267
+ ### Pinecone
268
+ - Metadata field names are limited to 512 characters
269
+ - Numeric values must be within the range of ±1e38
270
+ - Arrays in metadata are limited to 64KB total size
271
+ - Nested objects are flattened with dot notation
272
+ - Metadata updates replace the entire metadata object
273
+
274
+ ### Qdrant
275
+ - Supports advanced filtering with nested conditions
276
+ - Payload (metadata) fields must be explicitly indexed for filtering
277
+ - Efficient handling of geo-spatial queries
278
+ - Special handling for null and empty values
279
+ - Vector-specific filtering capabilities
280
+ - Datetime values must be in RFC 3339 format
281
+
282
+ ### Upstash
283
+ - 512-character limit for metadata field keys
284
+ - Query size is limited (avoid large IN clauses)
285
+ - No support for null/undefined values in filters
286
+ - Translates to SQL-like syntax internally
287
+ - Case-sensitive string comparisons
288
+ - Metadata updates are atomic
289
+
290
+ ## Related
291
+ - [Astra](./astra)
292
+ - [Chroma](./chroma)
293
+ - [Cloudflare Vectorize](./vectorize)
294
+ - [LibSQL](./libsql)
295
+ - [PgStore](./pg)
296
+ - [Pinecone](./pinecone)
297
+ - [Qdrant](./qdrant)
298
+ - [Upstash](./upstash)