# R Ragnar

> Use when code loads or uses ragnar (library(ragnar), ragnar::), implementing RAG in R, creating vector stores, embedding documents for semantic search, or building retrieval pipelines

- Skill: `arthurgailes/r-ragnar` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add arthurgailes/r-ragnar`
- Raw SKILL.md: https://api.skillmd.com/api/skills/arthurgailes/r-ragnar/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: arthurgailes (https://skillmd.com/u/arthurgailes)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/arthurgailes/r-ragnar

---


# ragnar: Retrieval Augmented Generation in R

## Overview

**ragnar implements RAG in R.** Create vector stores, embed documents, register retrieval tools with ellmer chat sessions. LLMs search your documents before answering.

**Install:** `install.packages("ragnar")`

## References

Read `references/API.md` before writing code.

- `references/API.md` - Complete function reference
- `references/package-docs.md` - Vector store setup and usage
- `references/rag.md` - RAG patterns and ellmer integration

## When to Use

- LLM needs to search your documentation
- Implement semantic search over documents
- Create vector database from documents
- RAG workflows in R

## When NOT to Use

- Just need keyword search (use grep/Grep tool)
- Documents fit in single prompt (<100k tokens)
- Building chatbot without document search (use r-ellmer only)

## Quick Reference

```r
library(ragnar)

# Create store
docs <- read_as_markdown("docs/")
chunks <- markdown_chunk(docs)
store <- ragnar_store_create("docs.duckdb")
ragnar_store_insert(store, chunks)

# Register with ellmer
library(ellmer)
chat <- chat_openai()
ragnar_register_tool_retrieve(chat, store)

# Now chat searches docs before answering
chat$chat("What does the documentation say about...?")

# Local embeddings (Ollama)
store <- ragnar_store_create("local.duckdb",
  embed = ragnar_embed_ollama(model = "nomic-embed-text"))
```

## Common Mistakes

| Issue | Solution |
|-------|----------|
| Embedding mismatch | Store and retrieval must use same provider |
| Store not registered | Call `ragnar_register_tool_retrieve(chat, store)` |
| Ollama embeddings not working | Start `ollama serve` first |
| Poor retrieval quality | Check chunking strategy, embedding model |

## Core Functions

**Store Management:**
- `ragnar_store_create()`: Create vector database
- `ragnar_store_connect()`: Connect to existing store
- `ragnar_store_insert()`: Add documents

**Document Processing:**
- `read_as_markdown()`: Read documents
- `markdown_chunk()`: Split into chunks

**Integration:**
- `ragnar_register_tool_retrieve()`: Register with ellmer
- `ragnar_embed_ollama()`: Local embeddings

## Advanced

See `references/` for:
- **API.md**: Complete function reference
- **rag.md**: RAG workflow details
- **Package docs**: Full package documentation

## Integration

**With ellmer:** `ragnar_register_tool_retrieve(chat, store)`
**With vitals (evaluation):** See r-vitals skill for RAG testing
**Cross-package patterns:** See r-ai meta-skill

