This repository contains examples demonstrating RAG (Retrieval Augmented Generation) capabilities using Mastra.
- Install dependencies:
pnpm i
- Set up environment variables:
- Copy the example environment file to create your own:
cp .env.example .env
- Open the
.env
file and add your:- OpenAI API key
- PostgreSQL connection string
- Cohere API key (if using Cohere models)
Contains markdown and json documents used to test our RAG functionality:
auth.md
- Authentication guide with JWT exampleserror-handling.md
- Error handling patterns and best practiceslogging.md
- Logging system documentationapplication-settings.json
- Application settings configurationupsert.ts
- Script to insert documents into the vector store
-
Character Chunking (
01-character-chunking.ts
)- Simple text chunking by character count
- Shows basic overlapping chunks
-
Recursive Chunking (
02-recursive-chunking.ts
)- Code-aware chunking that preserves function boundaries
- Demonstrates chunking while maintaining code context
-
JSON Chunking (
03-json-chunking.ts
)- Chunks JSON while preserving valid structure
- Shows how to handle structured data formats
-
Markdown Chunking (
04-markdown-chunking.ts
)- Header-aware markdown chunking
- Demonstrates hierarchical document splitting
-
Embeddings (
05-embedding.ts
)- Different embedding models and their characteristics
- Single vs batch embedding
- Comparing embedding dimensions and quality
-
Vector Upserting (
06-vector-upserting.ts
)- How to insert documents into PgVector
- Complete flow: chunking → embedding → storing
-
Vector Search (
07-vector-search.ts
)- Basic vector similarity search
- Shows simple querying with filters
-
Vector Reranking (
08-vector-reranking.ts
)- Advanced search with result reranking
- Demonstrates improving result relevance
-
Basic Search (
09-basic-search-usage.ts
)- Simple keyword search through an agent
- Example: "What does our documentation say about authentication?"
-
Vector Search (
010-query-vector-usage.ts
)- Semantic search through an agent with:
- Basic search
- Filtered search (by file type)
- Reranked search for better results
- Semantic search through an agent with:
- Advanced Code Usage (
01-find-code-usage.ts
)- Code-aware search through an agent
- Examples:
- Finding function definitions
- Finding usage examples
- Try the chunking examples to understand different strategies:
pnpm tsx src/examples/01-character-chunking.ts
pnpm tsx src/examples/02-recursive-chunking.ts
pnpm tsx src/examples/03-json-chunking.ts
pnpm tsx src/examples/04-markdown-chunking.ts
- Try the embedding and vector store operations:
pnpm tsx src/examples/05-embedding.ts
pnpm tsx src/examples/06-vector-upserting.ts
pnpm tsx src/examples/07-vector-search.ts
pnpm tsx src/examples/08-vector-reranking.ts
- Explore the agent examples to see RAG in action:
Upsert the example data for the agent examples:
pnpm tsx src/documents/upsert.ts
pnpm tsx src/examples/09-basic-search-usage.ts
pnpm tsx src/examples/10-query-vector-usage.ts
- Breaking documents into meaningful pieces
- Different strategies for different content types
- Preserving context and structure
- Converting text to embeddings
- Storing in PgVector
- Similarity search
- Result reranking
- Basic keyword search
- Semantic search with filters
A bonus example that demonstrates how to use RAG to search through code files, find implementations of specific methods, and locate class definitions in your codebase.
Contains markdown documents used to test our RAG functionality:
authentication-service.ts
- Authentication service implementationerror-handling.ts
- Error handling patterns and best practiceslogger.ts
- Logging system documentationupsert.ts
- Script to insert documents into the vector store
Upsert the code documents for the bonus examples:
pnpm tsx src/bonus/documents/upsert.ts
Run the code search example:
pnpm tsx src/bonus/01-find-code-usage.ts