@mastra/rag 2.6.7-alpha.0 → 2.6.8-alpha.0

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.8-alpha.0"
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.8-alpha.0",
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
 
@@ -83,7 +83,7 @@ Returns an array of `RankedNode` objects, where each node contains:
83
83
 
84
84
  **content** (`string`): Text content of the document chunk
85
85
 
86
- **metadata** (`Record<string, any>`): Additional metadata associated with the chunk
86
+ **metadata** (`Record<string, any>`): Additional metadata associated with the chunk, when present
87
87
 
88
88
  **score** (`number`): Combined relevance score from graph traversal
89
89
 
@@ -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
@@ -20,9 +20,9 @@ const chunker = createDocumentChunkerTool({
20
20
  doc: document,
21
21
  params: {
22
22
  strategy: 'recursive',
23
- size: 512,
23
+ maxSize: 512,
24
24
  overlap: 50,
25
- separator: '\n',
25
+ separators: ['\n'],
26
26
  },
27
27
  })
28
28
 
@@ -39,11 +39,11 @@ const { chunks } = await chunker.execute()
39
39
 
40
40
  **strategy** (`'recursive'`): The chunking strategy to use (Default: `'recursive'`)
41
41
 
42
- **size** (`number`): Target size of each chunk in tokens/characters (Default: `512`)
42
+ **maxSize** (`number`): Maximum size of each chunk in tokens/characters (Default: `512`)
43
43
 
44
44
  **overlap** (`number`): Number of overlapping tokens/characters between chunks (Default: `50`)
45
45
 
46
- **separator** (`string`): Character(s) to use as chunk separator (Default: `'\n'`)
46
+ **separators** (`string[]`): Separators to split on, in order of priority (recursive strategy) (Default: `['\n']`)
47
47
 
48
48
  ## Returns
49
49
 
@@ -64,9 +64,9 @@ const chunker = createDocumentChunkerTool({
64
64
  doc: technicalDoc,
65
65
  params: {
66
66
  strategy: 'recursive',
67
- size: 1024, // Larger chunks
67
+ maxSize: 1024, // Larger chunks
68
68
  overlap: 100, // More overlap
69
- separator: '\n\n', // Split on double newlines
69
+ separators: ['\n\n'], // Split on double newlines
70
70
  },
71
71
  })
72
72
 
@@ -82,8 +82,8 @@ chunks.forEach((chunk, index) => {
82
82
 
83
83
  The chunker is created as a Mastra tool with the following properties:
84
84
 
85
- - **Tool ID**: `Document Chunker {strategy} {size}`
86
- - **Description**: `Chunks document using {strategy} strategy with size {size} and {overlap} overlap`
85
+ - **Tool ID**: `Document Chunker {strategy} {maxSize}`
86
+ - **Description**: `Chunks document using {strategy} strategy with maxSize {maxSize} and {overlap} overlap`
87
87
  - **Input Schema**: Empty object (no additional inputs required)
88
88
  - **Output Schema**: Object containing the chunks array
89
89
 
@@ -21,13 +21,13 @@ const queryTool = createVectorQueryTool({
21
21
 
22
22
  ## Parameters
23
23
 
24
- > **Note:** **Parameter Requirements:** Most fields can be set at creation as defaults. Some fields can be overridden at runtime via the request context or input. If a required field is missing from both creation and runtime, an error will be thrown. Note that `model`, `id`, and `description` can only be set at creation time.
24
+ > **Note:** **Parameter Requirements:** Most fields can be set at creation as defaults. Some fields can be overridden at runtime via the request context or input. If a required field is missing from both creation and runtime, an error will be thrown. Note that `id` and `description` can only be set at creation time.
25
25
 
26
- **id** (`string`): Custom ID for the tool. By default: 'VectorQuery {vectorStoreName} {indexName} Tool'. (Set at creation only.)
26
+ **id** (`string`): Custom ID for the tool. By default: 'VectorQuery {vectorStoreName} {indexName} Tool', where {vectorStoreName} is 'DirectVectorStore' when a vectorStore instance is passed without a vectorStoreName. (Set at creation only.)
27
27
 
28
28
  **description** (`string`): Custom description for the tool. By default: 'Access the knowledge base to find information needed to answer user questions' (Set at creation only.)
29
29
 
30
- **model** (`EmbeddingModel`): Embedding model to use for vector search. (Set at creation only.)
30
+ **model** (`EmbeddingModel`): Embedding model to use for vector search. (Can be set at creation or overridden at runtime via the request context.)
31
31
 
32
32
  **vectorStoreName** (`string`): Name of the vector store to query. (Can be set at creation or overridden at runtime.)
33
33
 
@@ -47,7 +47,7 @@ const queryTool = createVectorQueryTool({
47
47
 
48
48
  **reranker.options.weights** (`WeightConfig`): Weights for scoring components (semantic: 0.4, vector: 0.4, position: 0.2)
49
49
 
50
- **reranker.options.topK** (`number`): Number of top results to return
50
+ **reranker.options.topK** (`number`): Number of top results to return after reranking. Falls back to the query's topK (from the request context, the tool input, or 10) when unset or 0.
51
51
 
52
52
  **databaseConfig** (`DatabaseConfig`): Database-specific configuration options for optimizing queries. (Can be set at creation or overridden at runtime.)
53
53
 
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.8-alpha.0",
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.144",
54
+ "@internal/ai-sdk-v4": "0.0.91",
55
+ "@internal/types-builder": "0.0.119",
56
+ "@mastra/core": "1.78.1-alpha.0"
57
57
  },
58
58
  "keywords": [
59
59
  "rag",