RAG Implementation

SkillSearch

rag-implementation is a skill for building Retrieval-Augmented Generation (RAG) systems. It guides an AI agent through creating knowledge-grounded applications that combine LLMs with vector databases and semantic search, so answers come from your documents rather than the model alone.

Use RAG Implementation in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add RAG Implementation and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the RAG Implementation skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Have documents or an external knowledge base you want the agent to answer questions from.

RAG ImplementationStart free

What your AI can do with it

  • Build RAG systems for LLM applications
  • Set up vector databases for document storage
  • Implement semantic search over document collections
  • Create knowledge-grounded AI that answers from external knowledge bases
  • Build document Q&A systems

Getting started

  1. Have documents or an external knowledge base you want the agent to answer questions from.
  2. Add the skill to your agent's available skills.
  3. Ask the agent to implement a RAG system, for example a document Q&A setup using a vector database and semantic search.
  4. Provide the agent with access to the documents and any vector database it should use.

What this skill tells your AI

The instructions your AI receives, as published by wshobson/agents in plugins/llm-application-dev/skills/rag-implementation/SKILL.md and read by ahel’s review.

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):

ModelDimensionsBest For
voyage-3-large1024Claude apps (Anthropic recommended)
voyage-code-31024Code search
text-embedding-3-large3072OpenAI apps, high accuracy
text-embedding-3-small1536OpenAI apps, cost-effective
bge-large-en-v1.51024Open source, local deployment
multilingual-e5-large1024Multi-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.

Signals

GitHub stars
40k
Forks
4k
Last commit
Sep 2026

Questions

What is this skill for?
Building Retrieval-Augmented Generation (RAG) systems: LLM applications that answer questions from your documents using vector databases and semantic search.
When should it be used?
When implementing knowledge-grounded AI, building document Q&A systems, or integrating LLMs with external knowledge bases.
Does it require a vector database?
RAG systems it builds use vector databases and semantic search, so a vector database is part of the setup.
Advanced
Item type
skill
Key
rag-implementation-wshobson
Source
github.com/wshobson/agents