@mastra/rag 2.6.7-alpha.0 → 2.6.7

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.
@@ -3,7 +3,7 @@ name: mastra-rag
3
3
  description: Documentation for @mastra/rag. Use when working with @mastra/rag APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/rag"
6
- version: "2.6.7-alpha.0"
6
+ version: "2.6.7"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.6.7-alpha.0",
2
+ "version": "2.6.7",
3
3
  "package": "@mastra/rag",
4
4
  "exports": {},
5
5
  "modules": {}
@@ -47,7 +47,7 @@ The following parameters are available for all chunking strategies. Each strateg
47
47
 
48
48
  **maxSize** (`number`): Maximum size of each chunk. Some strategy configurations (markdown with headers, HTML with headers) ignore this parameter. (Default: `4000`)
49
49
 
50
- **overlap** (`number`): Number of characters/tokens that overlap between chunks. (Default: `50`)
50
+ **overlap** (`number`): Number of characters/tokens that overlap between chunks. Defaults to 200 for most strategies; the 'sentence' strategy defaults to 0. (Default: `200`)
51
51
 
52
52
  **lengthFunction** (`(text: string) => number`): Function to calculate text length. Defaults to character count.
53
53
 
@@ -130,7 +130,7 @@ The options documented below are passed directly at the top level of the configu
130
130
 
131
131
  ### Character
132
132
 
133
- **separators** (`string[]`): Array of separators to try in order of preference. The strategy will attempt to split on the first separator, then fall back to subsequent ones.
133
+ **separator** (`string`): Character or string to split text on. (Default: `'\n\n'`)
134
134
 
135
135
  **isSeparatorRegex** (`boolean`): Whether the separator is a regex pattern (Default: `false`)
136
136
 
@@ -40,7 +40,7 @@ const chunks = await doc.chunk({
40
40
  overlap: 50,
41
41
  separators: ['\n'],
42
42
  extract: {
43
- metadata: true, // Optionally extract metadata
43
+ title: true, // Optionally extract a title for each chunk
44
44
  },
45
45
  })
46
46
  ```
@@ -13,6 +13,7 @@ export type DatabaseConfig = {
13
13
  pinecone?: PineconeConfig
14
14
  pgvector?: PgVectorConfig
15
15
  chroma?: ChromaConfig
16
+ mongodb?: MongoDBConfig
16
17
  turbopuffer?: TurbopufferConfig
17
18
  [key: string]: any // Extensible for future databases
18
19
  }
@@ -64,9 +65,9 @@ Configuration options specific to PostgreSQL with pgvector extension.
64
65
 
65
66
  Configuration options specific to Chroma vector store.
66
67
 
67
- **where** (`Record<string, any>`): Metadata filtering conditions using MongoDB-style query syntax. Filters results based on metadata fields.
68
+ **where** (`Where`): Metadata filtering conditions. Each field maps to a literal value or an operator expression ($gt, $gte, $lt, $lte, $ne, $eq, $in, $nin). Combine conditions with $and and $or.
68
69
 
69
- **whereDocument** (`Record<string, any>`): Document content filtering conditions. Allows filtering based on the actual document text content.
70
+ **whereDocument** (`WhereDocument`): Document content filtering conditions using $contains and $not\_contains. Combine conditions with $and and $or.
70
71
 
71
72
  **Filter Syntax Examples:**
72
73
 
@@ -93,6 +94,17 @@ whereDocument: { "$contains": "API documentation" }
93
94
  - Content-based document filtering
94
95
  - Complex query combinations
95
96
 
97
+ ### `MongoDBConfig`
98
+
99
+ Configuration options specific to MongoDB Atlas Vector Search.
100
+
101
+ **numCandidates** (`number`): Number of candidates the HNSW graph considers before selecting the top-K results. Higher values improve recall at the cost of query latency. Must be greater than or equal to topK. Defaults to 20 × topK, capped at 10,000.
102
+
103
+ **Use Cases:**
104
+
105
+ - Improving recall for large collections
106
+ - Lowering latency when approximate results are acceptable
107
+
96
108
  ### `TurbopufferConfig`
97
109
 
98
110
  Configuration options specific to Turbopuffer vector store.
@@ -10,7 +10,7 @@ The MDocument class processes documents for RAG applications. The main methods a
10
10
 
11
11
  **docs** (`Array<{ text: string, metadata?: Record<string, any> }>`): Array of document chunks with their text content and optional metadata
12
12
 
13
- **type** (`'text' | 'html' | 'markdown' | 'json' | 'latex'`): Type of document content
13
+ **type** (`string`): Type of document content. Recognized values are 'text', 'html', 'markdown', 'json', and 'latex'.
14
14
 
15
15
  ## Static methods
16
16
 
@@ -53,9 +53,14 @@ static fromJSON(json: string, metadata?: Record<string, any>): MDocument
53
53
  Splits document into chunks and optionally extracts metadata.
54
54
 
55
55
  ```typescript
56
- async chunk(params?: ChunkParams): Promise<Chunk[]>
56
+ async chunk(
57
+ params?: ChunkParams,
58
+ options?: { observabilityContext?: ObservabilityContext },
59
+ ): Promise<Chunk[]>
57
60
  ```
58
61
 
62
+ Pass `observabilityContext` to attach the chunking and metadata extraction spans to an existing trace.
63
+
59
64
  See [chunk() reference](https://mastra.ai/reference/rag/chunk) for detailed options.
60
65
 
61
66
  ### `getDocs()`
@@ -46,7 +46,7 @@ The `extract` parameter accepts the following fields:
46
46
 
47
47
  ### `TitleExtractorsArgs`
48
48
 
49
- **llm** (`MastraLanguageModel`): AI SDK language model to use for title extraction
49
+ **llm** (`MastraLanguageModel | MastraLegacyLanguageModel`): AI SDK language model to use for title extraction
50
50
 
51
51
  **nodes** (`number`): Number of title nodes to extract
52
52
 
@@ -56,15 +56,15 @@ The `extract` parameter accepts the following fields:
56
56
 
57
57
  ### `SummaryExtractArgs`
58
58
 
59
- **llm** (`MastraLanguageModel`): AI SDK language model to use for summary extraction
59
+ **llm** (`MastraLanguageModel | MastraLegacyLanguageModel`): AI SDK language model to use for summary extraction
60
60
 
61
- **summaries** (`('self' | 'prev' | 'next')[]`): List of summary types to generate. Can only include 'self' (current chunk), 'prev' (previous chunk), or 'next' (next chunk)
61
+ **summaries** (`string[]`): List of summary types to generate. Defaults to \['self']. Supported values are 'self' (current chunk), 'prev' (previous chunk), and 'next' (next chunk).
62
62
 
63
63
  **promptTemplate** (`string`): Custom prompt template for summary generation. Must include {context} placeholder
64
64
 
65
65
  ### `QuestionAnswerExtractArgs`
66
66
 
67
- **llm** (`MastraLanguageModel`): AI SDK language model to use for question generation
67
+ **llm** (`MastraLanguageModel | MastraLegacyLanguageModel`): AI SDK language model to use for question generation
68
68
 
69
69
  **questions** (`number`): Number of questions to generate
70
70
 
@@ -74,7 +74,7 @@ The `extract` parameter accepts the following fields:
74
74
 
75
75
  ### `KeywordExtractArgs`
76
76
 
77
- **llm** (`MastraLanguageModel`): AI SDK language model to use for keyword extraction
77
+ **llm** (`MastraLanguageModel | MastraLegacyLanguageModel`): AI SDK language model to use for keyword extraction
78
78
 
79
79
  **keywords** (`number`): Number of keywords to extract
80
80
 
@@ -23,7 +23,7 @@ For straightforward semantic search without relationship traversal, use [standar
23
23
  GraphRAG combines vector similarity with knowledge graph traversal:
24
24
 
25
25
  1. Initial vector search retrieves relevant chunks based on semantic similarity
26
- 2. A knowledge graph is constructed from the retrieved chunks
26
+ 2. On the tool's first execution, a knowledge graph is constructed from the retrieved chunks. Later queries reuse this graph
27
27
  3. The graph is traversed to find connected information
28
28
  4. Results include both directly relevant chunks and related content
29
29
 
@@ -10,17 +10,18 @@ The `rerank()` function provides advanced reranking capabilities for vector sear
10
10
  function rerank(
11
11
  results: QueryResult[],
12
12
  query: string,
13
- modelConfig: ModelConfig,
14
- options?: RerankerFunctionOptions,
13
+ model: MastraLanguageModel,
14
+ options: RerankerFunctionOptions,
15
15
  ): Promise<RerankResult[]>
16
16
  ```
17
17
 
18
18
  ## Usage example
19
19
 
20
20
  ```typescript
21
+ import { ModelRouterLanguageModel } from '@mastra/core/llm'
21
22
  import { rerank } from '@mastra/rag'
22
23
 
23
- const model = 'openai/gpt-5.6-sol'
24
+ const model = new ModelRouterLanguageModel('openai/gpt-5.6-sol')
24
25
 
25
26
  const rerankedResults = await rerank(vectorSearchResults, 'How do I deploy to production?', model, {
26
27
  weights: {
@@ -64,7 +65,7 @@ The function returns an array of `RerankResult` objects:
64
65
 
65
66
  **result** (`QueryResult`): The original query result
66
67
 
67
- **score** (`number`): Combined reranking score (0-1)
68
+ **score** (`number`): Combined reranking score. Usually between 0 and 1, but query-based adjustments can raise it slightly above 1.
68
69
 
69
70
  **details** (`ScoringDetails`): Detailed scoring information
70
71
 
@@ -11,7 +11,7 @@ function rerankWithScorer({
11
11
  results: QueryResult[],
12
12
  query: string,
13
13
  scorer: RelevanceScoreProvider,
14
- options?: RerankerFunctionOptions,
14
+ options: RerankerFunctionOptions,
15
15
  }): Promise<RerankResult[]>;
16
16
  ```
17
17
 
@@ -69,7 +69,7 @@ The function returns an array of `RerankResult` objects:
69
69
 
70
70
  **result** (`QueryResult`): The original query result
71
71
 
72
- **score** (`number`): Combined reranking score (0-1)
72
+ **score** (`number`): Combined reranking score. Usually between 0 and 1, but query-based adjustments can raise it slightly above 1.
73
73
 
74
74
  **details** (`ScoringDetails`): Detailed scoring information
75
75
 
@@ -50,23 +50,25 @@ console.log(results)
50
50
 
51
51
  The `topK` parameter specifies the maximum number of most similar results to return from the vector search.
52
52
 
53
- Results include both the text content and a similarity score:
53
+ Each result includes an `id`, a similarity `score`, and the stored `metadata`. When you store chunk text in metadata, it's available as `metadata.text`:
54
54
 
55
55
  ```ts
56
56
  [
57
57
  {
58
- text: 'Climate change poses significant challenges...',
58
+ id: 'chunk-1',
59
59
  score: 0.89,
60
- metadata: { source: 'article1.txt' },
60
+ metadata: { text: 'Climate change poses significant challenges...', source: 'article1.txt' },
61
61
  },
62
62
  {
63
- text: 'Rising temperatures affect crop yields...',
63
+ id: 'chunk-2',
64
64
  score: 0.82,
65
- metadata: { source: 'article1.txt' },
65
+ metadata: { text: 'Rising temperatures affect crop yields...', source: 'article1.txt' },
66
66
  },
67
67
  ]
68
68
  ```
69
69
 
70
+ Results can also include `vector` when you set `includeVector: true`, and `document` when the store returns the original document (Chroma only).
71
+
70
72
  ## Advanced retrieval options
71
73
 
72
74
  ### Metadata Filtering
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/rag",
3
- "version": "2.6.7-alpha.0",
3
+ "version": "2.6.7",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -50,10 +50,10 @@
50
50
  "typescript": "^7.0.2",
51
51
  "vitest": "4.1.11",
52
52
  "zod": "^4.6.4",
53
- "@internal/ai-sdk-v4": "0.0.88",
54
- "@internal/lint": "0.0.141",
55
- "@internal/types-builder": "0.0.116",
56
- "@mastra/core": "1.76.0-alpha.1"
53
+ "@internal/lint": "0.0.142",
54
+ "@internal/ai-sdk-v4": "0.0.89",
55
+ "@internal/types-builder": "0.0.117",
56
+ "@mastra/core": "1.76.0"
57
57
  },
58
58
  "keywords": [
59
59
  "rag",