Build Retrieval-Augmented Generation systems for LLM

Rag implementation

by wshobson · MIT license · ★ 39,857 on GitHub · updated Sep 21

Rag implementation cover

Build Retrieval-Augmented Generation (RAG) systems for LLM applications with vector databases and semantic search. Use when implementing knowledge-grounded AI, building document Q&A systems, or integrating LLMs with external knowledge…

---
name: rag-implementation
description: Build Retrieval-Augmented Generation (RAG) systems for LLM applications with vector databases and semantic search. Use when implementing knowledge-grounded AI, building document Q&A systems, or integrating LLMs with external knowledge bases.
---

# RAG Implementation

Master Retrieval-Augmented Generation (RAG) to build LLM applications that provide accurate, grounded responses using external knowledge sources.

## When to Use This Skill

- Building Q&A systems over proprietary documents
- Creating chatbots with current, factual information
- Implementing semantic search with natural language queries
- Reducing hallucinations with grounded responses
- Enabling LLMs to access domain-specific knowledge
- Building documentation assistants
- Creating research tools with source citation

Overview

Master Retrieval-Augmented Generation (RAG) to build LLM applications that provide accurate, grounded responses using external knowledge sources.

Manual install (npx, ZIP)
Claude Codenpx skills add wshobson/agents --skill rag-implementation -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/wshobson/agents/tar.gz/4236bb91f839 \ | tar -xz -C ~/.claude/skills --strip-components=4 agents-4236bb91f839/plugins/llm-application-dev/skills/rag-implementation
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/2c03af8c08c1137f1485/rag-implementation.zip" -OutFile "$env:TEMP\rag-implementation.zip"; Expand-Archive "$env:TEMP\rag-implementation.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md4.4 KB
  • references/1 file · 10.8 KB
Read the files here
wshobson/4236bb92 files
SKILL.md
Show the full text139 lines

RAG Implementation

Master Retrieval-Augmented Generation (RAG) to build LLM applications that provide accurate, grounded responses using external knowledge sources.

When to Use This Skill

  • Building Q&A systems over proprietary documents
  • Creating chatbots with current, factual information
  • Implementing semantic search with natural language queries
  • Reducing hallucinations with grounded responses
  • Enabling LLMs to access domain-specific knowledge
  • Building documentation assistants
  • Creating research tools with source citation

Core Components

1. Vector Databases

Purpose: Store and retrieve document embeddings efficiently

Options:

  • Pinecone: Managed, scalable, serverless
  • Weaviate: Open-source, hybrid search, GraphQL
  • Milvus: High performance, on-premise
  • Chroma: Lightweight, easy to use, local development
  • Qdrant: Fast, filtered search, Rust-based
  • pgvector: PostgreSQL extension, SQL integration
2. Embeddings

Purpose: Convert text to numerical vectors for similarity search

Models (2026):

Model Dimensions Best For
voyage-3-large 1024 Claude apps (Anthropic recommended)
voyage-code-3 1024 Code search
text-embedding-3-large 3072 OpenAI apps, high accuracy
text-embedding-3-small 1536 OpenAI apps, cost-effective
bge-large-en-v1.5 1024 Open source, local deployment
multilingual-e5-large 1024 Multi-language support
3. Retrieval Strategies

Approaches:

  • Dense Retrieval: Semantic similarity via embeddings
  • Sparse Retrieval: Keyword matching (BM25, TF-IDF)
  • Hybrid Search: Combine dense + sparse with weighted fusion
  • Multi-Query: Generate multiple query variations
  • HyDE: Generate hypothetical documents for better retrieval
4. Reranking

Purpose: Improve retrieval quality by reordering results

Methods:

  • Cross-Encoders: BERT-based reranking (ms-marco-MiniLM)
  • Cohere Rerank: API-based reranking
  • Maximal Marginal Relevance (MMR): Diversity + relevance
  • LLM-based: Use LLM to score relevance

Quick Start with LangGraph

from langgraph.graph import StateGraph, START, END
from langchain_anthropic import ChatAnthropic
from langchain_voyageai import VoyageAIEmbeddings
from langchain_pinecone import PineconeVectorStore
from langchain_core.documents import Document
from langchain_core.prompts import ChatPromptTemplate
from langchain_text_splitters import RecursiveCharacterTextSplitter
from typing import TypedDict, Annotated

class RAGState(TypedDict):
    question: str
    context: list[Document]
    answer: str

# Initialize components
llm = ChatAnthropic(model="claude-sonnet-5")
embeddings = VoyageAIEmbeddings(model="voyage-3-large")
vectorstore = PineconeVectorStore(index_name="docs", embedding=embeddings)
retriever = vectorstore.as_retriever(search_kwargs={"k": 4})

# RAG prompt
rag_prompt = ChatPromptTemplate.from_template(
    """Answer based on the context below. If you cannot answer, say so.

    Context:
    {context}

    Question: {question}

    Answer:"""
)

async def retrieve(state: RAGState) -> RAGState:
    """Retrieve relevant documents."""
    docs = await retriever.ainvoke(state["question"])
    return {"context": docs}

async def generate(state: RAGState) -> RAGState:
    """Generate answer from context."""
    context_text = "\n\n".join(doc.page_content for doc in state["context"])
    messages = rag_prompt.format_messages(
        context=context_text,
        question=state["question"]
    )
    response = await llm.ainvoke(messages)
    return {"answer": response.content}

# Build RAG graph
builder = StateGraph(RAGState)
builder.add_node("retrieve", retrieve)
builder.add_node("generate", generate)
builder.add_edge(START, "retrieve")
builder.add_edge("retrieve", "generate")
builder.add_edge("generate", END)

rag_chain = builder.compile()

# Use
result = await rag_chain.ainvoke({"question": "What are the main features?"})
print(result["answer"])

Detailed patterns and worked examples

Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.

1---
2name: rag-implementation
3description: Build Retrieval-Augmented Generation (RAG) systems for LLM applications with vector databases and semantic search. Use when implementing knowledge-grounded AI, building document Q&A systems, or integrating LLMs with external knowledge bases.
4---
5 
6# RAG Implementation
7 
8Master Retrieval-Augmented Generation (RAG) to build LLM applications that provide accurate, grounded responses using external knowledge sources.
9 
10## When to Use This Skill
11 
12- Building Q&A systems over proprietary documents
13- Creating chatbots with current, factual information
14- Implementing semantic search with natural language queries
15- Reducing hallucinations with grounded responses
16- Enabling LLMs to access domain-specific knowledge
17- Building documentation assistants
18- Creating research tools with source citation
19 
20## Core Components
21 
22### 1. Vector Databases
23 
24**Purpose**: Store and retrieve document embeddings efficiently
25 
26**Options:**
27 
28- **Pinecone**: Managed, scalable, serverless
29- **Weaviate**: Open-source, hybrid search, GraphQL
30- **Milvus**: High performance, on-premise
31- **Chroma**: Lightweight, easy to use, local development
32- **Qdrant**: Fast, filtered search, Rust-based
33- **pgvector**: PostgreSQL extension, SQL integration
34 
35### 2. Embeddings
36 
37**Purpose**: Convert text to numerical vectors for similarity search
38 
39**Models (2026):**
40| Model | Dimensions | Best For |
41|-------|------------|----------|
42| **voyage-3-large** | 1024 | Claude apps (Anthropic recommended) |
43| **voyage-code-3** | 1024 | Code search |
44| **text-embedding-3-large** | 3072 | OpenAI apps, high accuracy |
45| **text-embedding-3-small** | 1536 | OpenAI apps, cost-effective |
46| **bge-large-en-v1.5** | 1024 | Open source, local deployment |
47| **multilingual-e5-large** | 1024 | Multi-language support |
48 
49### 3. Retrieval Strategies
50 
51**Approaches:**
52 
53- **Dense Retrieval**: Semantic similarity via embeddings
54- **Sparse Retrieval**: Keyword matching (BM25, TF-IDF)
55- **Hybrid Search**: Combine dense + sparse with weighted fusion
56- **Multi-Query**: Generate multiple query variations
57- **HyDE**: Generate hypothetical documents for better retrieval
58 
59### 4. Reranking
60 
61**Purpose**: Improve retrieval quality by reordering results
62 
63**Methods:**
64 
65- **Cross-Encoders**: BERT-based reranking (ms-marco-MiniLM)
66- **Cohere Rerank**: API-based reranking
67- **Maximal Marginal Relevance (MMR)**: Diversity + relevance
68- **LLM-based**: Use LLM to score relevance
69 
70## Quick Start with LangGraph
71 
72```python
73from langgraph.graph import StateGraph, START, END
74from langchain_anthropic import ChatAnthropic
75from langchain_voyageai import VoyageAIEmbeddings
76from langchain_pinecone import PineconeVectorStore
77from langchain_core.documents import Document
78from langchain_core.prompts import ChatPromptTemplate
79from langchain_text_splitters import RecursiveCharacterTextSplitter
80from typing import TypedDict, Annotated
81 
82class RAGState(TypedDict):
83 question: str
84 context: list[Document]
85 answer: str
86 
87# Initialize components
88llm = ChatAnthropic(model="claude-sonnet-5")
89embeddings = VoyageAIEmbeddings(model="voyage-3-large")
90vectorstore = PineconeVectorStore(index_name="docs", embedding=embeddings)
91retriever = vectorstore.as_retriever(search_kwargs={"k": 4})
92 
93# RAG prompt
94rag_prompt = ChatPromptTemplate.from_template(
95 """Answer based on the context below. If you cannot answer, say so.
96 
97 Context:
98 {context}
99 
100 Question: {question}
101 
102 Answer:"""
103)
104 
105async def retrieve(state: RAGState) -> RAGState:
106 """Retrieve relevant documents."""
107 docs = await retriever.ainvoke(state["question"])
108 return {"context": docs}
109 
110async def generate(state: RAGState) -> RAGState:
111 """Generate answer from context."""
112 context_text = "\n\n".join(doc.page_content for doc in state["context"])
113 messages = rag_prompt.format_messages(
114 context=context_text,
115 question=state["question"]
116 )
117 response = await llm.ainvoke(messages)
118 return {"answer": response.content}
119 
120# Build RAG graph
121builder = StateGraph(RAGState)
122builder.add_node("retrieve", retrieve)
123builder.add_node("generate", generate)
124builder.add_edge(START, "retrieve")
125builder.add_edge("retrieve", "generate")
126builder.add_edge("generate", END)
127 
128rag_chain = builder.compile()
129 
130# Use
131result = await rag_chain.ainvoke({"question": "What are the main features?"})
132print(result["answer"])
133```
134 
135## Detailed patterns and worked examples
136 
137Detailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient.
138 
139 
View all files on GitHub →

Details

Updated
Sep 21, 2026
License
MIT
Stars on the repo
★ 39,857
Checked
Source
wshobson/agents ↗
Creator
wshobson · 179 listings
View creator

Similar skills

See all →
PromptAct as an expert AI engineer specializing in practicalf/prompts.chat · by Ersin YılmazAct as an expert AI engineer specializing in practical machine learning implementation and AI integration for production applications, ensuring efficient and robust AI solutions.New listingSkillQuery the 1000 Genomes Project datasetOneKGPd: Individual-Level Queries over the 1000 Genomes ProjectK-Dense-AI/scientific-agent-skills · by K-Dense-AIQuery the 1000 Genomes Project dataset (3,202 whole-genome-sequenced individuals, GRCh38) at the level of individual participants. Use when a question is about individuals or variants in the 1000 Genomes Project cohort: which individuals carry variants matching specific criteria in a gene or region, which individuals are homozygous-reference at a position, which variants exist in the dataset or carried by specified individuals in a gene or region, the relatedness between two specified individuals. Variants are returned with 1000 Genomes allele frequencies (AF), gnomAD v4.1 exome and genome AF, AlphaMissense score, and HGVSp annotations.★ 46k GitHub starsSkillBayesian modeling with PyMCPyMC Bayesian ModelingK-Dense-AI/scientific-agent-skills · by K-Dense-AIBayesian modeling with PyMC. Build hierarchical models, MCMC (NUTS), variational inference, LOO/WAIC comparison, posterior checks, for probabilistic programming and inference.★ 46k GitHub starsSkillStatistical models library for PythonStatsmodels: Statistical Modeling and EconometricsK-Dense-AI/scientific-agent-skills · by K-Dense-AIStatistical models library for Python. Use when you need specific model classes (OLS, GLM, mixed models, ARIMA) with detailed diagnostics, residuals, and inference. Best for econometrics, time series, rigorous inference with coefficient tables. For guided statistical test selection with APA reporting use statistical-analysis.★ 46k GitHub starsSkillHugging Face Transformers for loading Hub modelsK-Dense-AI/scientific-agent-skills · by K-Dense-AIHugging Face Transformers for loading Hub models, running pipeline inference, text generation, and Trainer fine-tuning on NLP, vision, audio, and multimodal tasks. Use when working with AutoModel, pipelines, tokenizers, or TrainingArguments—not for general ML outside the Transformers library.★ 46k GitHub starsSkillWorking with Outpost Bio's open microbiome foundation modelsWaypoint: Outpost Bio's Open Microbiome Foundation ModelsK-Dense-AI/scientific-agent-skills · by K-Dense-AIUse when working with Outpost Bio's open microbiome foundation models - the Waypoint checkpoints (Waypoint-6m, Waypoint-45m, Waypoint-170m), the Atlas pretraining corpus, the Compass eight-task benchmark, or the `waypoint` CLI from the `waypoint-bio` package. Covers embedding microbiome samples, fine-tuning on taxonomic abundance data, benchmarking a checkpoint on Compass, pretraining a GPT-2 model on taxonomic abundance profiles, and converting MetaPhlAn, Kraken2, QIIME 2, or MGnify abundance tables into waypoint format.★ 46k GitHub stars

More from wshobson

SkillMaster C/.NET backend development patterns for buildingwshobson/agents · by wshobsonMaster C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications. Covers async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit. Use when developing .NET backends, reviewing C# code, or designing API architectures.★ 39.9k GitHub starsSkillImplement WCAG 2.2 compliant interfaces with mobileAccessibility compliancewshobson/agents · by wshobsonImplement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.★ 39.9k GitHub starsSkillMaster Material Design 3 and Jetpack Compose patternsAndroid Mobile Designwshobson/agents · by wshobsonMaster Material Design 3 and Jetpack Compose patterns for building native Android apps. Use when designing Android interfaces, implementing Compose UI, or following Google's Material Design guidelines.★ 39.9k GitHub starsSkillMigrate from AngularJS to Angular using hybrid modeAngular migrationwshobson/agents · by wshobsonMigrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.★ 39.9k GitHub starsSkillUnderstand anti-reversing, obfuscationAnti reversing techniqueswshobson/agents · by wshobsonUnderstand anti-reversing, obfuscation, and protection techniques encountered during software analysis. Use this skill when analyzing malware evasion techniques, when implementing anti-debugging protections for CTF challenges, when reverse engineering packed binaries, or when building security research tools that need to detect virtualized environments.★ 39.9k GitHub starsSkillBuild production Apache Airflow DAGs with best practicesApache Airflow DAG Patternswshobson/agents · by wshobsonBuild production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. Use when creating data pipelines, orchestrating workflows, or scheduling batch jobs.★ 39.9k GitHub stars