Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-07 | ✓→✗ | ▼ Worse | 71% | 0% |
| case-03 | ✓→✓ | = Same ✓ | -17% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 81% | 0% |
Master Retrieval-Augmented Generation (RAG) to build LLM applications that provide accurate, grounded responses using external knowledge sources.
Purpose: Store and retrieve document embeddings efficiently
Options:
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 |
Approaches:
Purpose: Improve retrieval quality by reordering results
Methods:
pythonfrom 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 pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.
Other measured skills in the registry, with their headline benchmark lift.