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 referencereferences/package-docs.md- Vector store setup and usagereferences/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
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 databaseragnar_store_connect(): Connect to existing storeragnar_store_insert(): Add documents
Document Processing:
read_as_markdown(): Read documentsmarkdown_chunk(): Split into chunks
Integration:
ragnar_register_tool_retrieve(): Register with ellmerragnar_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