Skills · Data & AI

Rag Implementation

Unverified31/40

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.

Originally by wshobson · MIT

Claude CodePartialHas SKILL.md but declares no allowed-tools — Claude Code will ask for permission each time
CursorPartialPlain prose you can paste in — but no Cursor rules file
CodexPartialPlain prose you can paste in — but no AGENTS.md
Gemini CLIPartialPlain prose you can paste in
CopilotPartialPlain prose you can paste in — but no Copilot instructions file
npx agentalley add rag-implementation

This command does not work yet — the CLI is still being built. Until then, use Raw in the reader below to take the file.

Who is stuck, and on what

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.

The whole source

No sign-in, no blur, nothing truncated
rag-implementation/SKILL.md139 lines4.4 KBRawView on GitHub
Frontmatter — 2 properties
namerag-implementation
descriptionBuild 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.
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---A5No allowed-tools declared — no way to tell what this skill may touch
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 

Reviews

Installed this one?Write the first review and take the Trailblazer badge.

Reviews only open after a real install, so this is empty — and we leave it empty rather than invent one.

Alternatives

Also in Data & AI