Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
jeffallan avatar

Rag Architect

  • 3.5k installs
  • 10.8k repo stars
  • Updated May 20, 2026
  • jeffallan/claude-skills

A complete methodology for architecting RAG systems including vector database selection, embedding strategy, chunking optimization, hybrid search implementation, reranking, and quality metrics for semantic retrieval pipe

About

RAG Architect guides developers through building production-grade retrieval-augmented generation systems. The skill covers requirements analysis, vector store design, document chunking strategies, hybrid search pipelines combining dense and sparse retrieval, reranking optimization, and comprehensive evaluation metrics. It provides reference guides for vector databases, embedding model selection, chunking strategies, retrieval optimization techniques, and RAG evaluation frameworks. Implementation examples demonstrate chunking with metadata preservation, embedding generation and indexing with deduplication, hybrid search using reciprocal rank fusion, result reranking with Cohere, and evaluation using RAGAS metrics including context precision and recall.

  • Five-step RAG workflow from requirements to iterative optimization
  • Hybrid search combining vector similarity with BM25 keyword matching
  • Production checkpoints ensuring data quality at each stage
  • Multi-tenant filtering and idempotent document ingestion
  • RAGAS evaluation framework with precision@k, recall@k, faithfulness metrics

Rag Architect by the numbers

  • 3,475 all-time installs (skills.sh)
  • +86 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #25 of 2,066 Data Science & ML skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

rag-architect capabilities & compatibility

Capabilities
vector database architecture and schema design · embedding model evaluation and selection · document chunking with semantic boundaries · hybrid search pipeline with reciprocal rank fusi · result reranking with cross encoders · retrieval evaluation with ragas metrics · multi tenant filtering and query transformation · idempotent ingestion with deduplication
Works with
postgres · openai · anthropic · elasticsearch
Use cases
api development · database · web search · documentation · code review
From the docs

What rag-architect says it does

Implement hybrid search (vector + keyword) for production systems
rag-architect/README.md
Use reranking for top-k results before passing context to LLM
rag-architect/README.md
Idempotent upsert with deduplication via deterministic IDs
rag-architect/README.md
npx skills add https://github.com/jeffallan/claude-skills --skill rag-architect

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3.5k
repo stars10.8k
Security audit3 / 3 scanners passed
Last updatedMay 20, 2026
Repositoryjeffallan/claude-skills

What it does

Design and implement production-grade RAG systems with semantic search, embeddings, vector stores, hybrid retrieval, reranking, and quality evaluation.

Who is it for?

Backend engineers implementing semantic search, embeddings-based knowledge retrieval, multi-tenant vector databases, and context augmentation for LLM applications requiring high retrieval precision and recall.

Skip if: Simple keyword-only search, single-embedding-without-evaluation systems, or applications without semantic search requirements.

When should I use this skill?

Building RAG systems, designing vector databases, implementing semantic search, selecting embedding models, optimizing retrieval pipelines, or evaluating retrieval quality in knowledge-grounded applications.

What you get

Production-grade RAG system architecture with validated chunking strategy, optimized vector store schema, hybrid search pipeline, reranking configuration, and measurable retrieval metrics meeting accuracy and latency req

  • System architecture diagram with ingestion and retrieval pipelines
  • Vector database selection analysis with trade-offs
  • Chunking strategy documentation with examples

By the numbers

  • Default chunk size of 512 tokens should not be used without domain evaluation
  • Target context_precision >= 0.7 for production systems
  • Target context_recall >= 0.6 before LLM integration

Files

SKILL.mdMarkdownGitHub ↗

RAG Architect

Core Workflow

1. Requirements Analysis — Identify retrieval needs, latency constraints, accuracy requirements, and scale 2. Vector Store Design — Select database, schema design, indexing strategy, sharding approach 3. Chunking Strategy — Document splitting, overlap, semantic boundaries, metadata enrichment 4. Retrieval Pipeline — Embedding selection, query transformation, hybrid search, reranking 5. Evaluation & Iteration — Metrics tracking, retrieval debugging, continuous optimization

For each step, validate before moving on (see checkpoints below).

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Vector Databasesreferences/vector-databases.mdComparing Pinecone, Weaviate, Chroma, pgvector, Qdrant
Embedding Modelsreferences/embedding-models.mdSelecting embeddings, fine-tuning, dimension trade-offs
Chunking Strategiesreferences/chunking-strategies.mdDocument splitting, overlap, semantic chunking
Retrieval Optimizationreferences/retrieval-optimization.mdHybrid search, reranking, query expansion, filtering
RAG Evaluationreferences/rag-evaluation.mdMetrics, evaluation frameworks, debugging retrieval

Implementation Examples

1. Chunking Documents

from langchain.text_splitter import RecursiveCharacterTextSplitter

# Evaluate chunk_size on your domain data — never use 512 blindly
splitter = RecursiveCharacterTextSplitter(
    chunk_size=800,
    chunk_overlap=100,
    separators=["\n\n", "\n", ". ", " "],
)

chunks = splitter.create_documents(
    texts=[doc.page_content for doc in raw_docs],
    metadatas=[{"source": doc.metadata["source"], "timestamp": doc.metadata.get("timestamp")} for doc in raw_docs],
)

Checkpoint: assert all(c.metadata.get("source") for c in chunks), "Missing source metadata"

2. Generating Embeddings & Indexing

from openai import OpenAI
import qdrant_client
from qdrant_client.models import VectorParams, Distance, PointStruct

client = OpenAI()
qdrant = qdrant_client.QdrantClient("localhost", port=6333)

# Create collection
qdrant.recreate_collection(
    collection_name="knowledge_base",
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
)

def embed_chunks(chunks: list[str], model: str = "text-embedding-3-small") -> list[list[float]]:
    response = client.embeddings.create(input=chunks, model=model)
    return [r.embedding for r in response.data]

# Idempotent upsert with deduplication via deterministic IDs
import hashlib, uuid

points = []
for i, chunk in enumerate(chunks):
    doc_id = str(uuid.UUID(hashlib.md5(chunk.page_content.encode()).hexdigest()))
    embedding = embed_chunks([chunk.page_content])[0]
    points.append(PointStruct(id=doc_id, vector=embedding, payload=chunk.metadata))

qdrant.upsert(collection_name="knowledge_base", points=points)

Checkpoint: assert qdrant.count("knowledge_base").count == len(set(p.id for p in points)), "Deduplication failed"

3. Hybrid Search (Vector + BM25)

from qdrant_client.models import Filter, FieldCondition, MatchValue, SparseVector
from rank_bm25 import BM25Okapi

def hybrid_search(query: str, tenant_id: str, top_k: int = 20) -> list:
    # Dense retrieval
    query_embedding = embed_chunks([query])[0]
    tenant_filter = Filter(must=[FieldCondition(key="tenant_id", match=MatchValue(value=tenant_id))])
    dense_results = qdrant.search(
        collection_name="knowledge_base",
        query_vector=query_embedding,
        query_filter=tenant_filter,
        limit=top_k,
    )

    # Sparse retrieval (BM25)
    corpus = [r.payload.get("text", "") for r in dense_results]
    bm25 = BM25Okapi([doc.split() for doc in corpus])
    bm25_scores = bm25.get_scores(query.split())

    # Reciprocal Rank Fusion
    ranked = sorted(
        zip(dense_results, bm25_scores),
        key=lambda x: 0.6 * x[0].score + 0.4 * x[1],
        reverse=True,
    )
    return [r for r, _ in ranked[:top_k]]

Checkpoint: assert len(hybrid_search("test query", tenant_id="demo")) > 0, "Hybrid search returned no results"

4. Reranking Top-K Results

import cohere

co = cohere.Client("YOUR_API_KEY")

def rerank(query: str, results: list, top_n: int = 5) -> list:
    docs = [r.payload.get("text", "") for r in results]
    reranked = co.rerank(query=query, documents=docs, top_n=top_n, model="rerank-english-v3.0")
    return [results[r.index] for r in reranked.results]

5. Retrieval Evaluation

# Run precision@k and recall@k against a labeled evaluation set
# python evaluate.py --metrics precision@10 recall@10 mrr --collection knowledge_base

from ragas import evaluate
from ragas.metrics import context_precision, context_recall, faithfulness, answer_relevancy
from datasets import Dataset

eval_dataset = Dataset.from_dict({
    "question": questions,
    "contexts": retrieved_contexts,
    "answer": generated_answers,
    "ground_truth": ground_truth_answers,
})

results = evaluate(eval_dataset, metrics=[context_precision, context_recall, faithfulness, answer_relevancy])
print(results)

Checkpoint: Target context_precision >= 0.7 and context_recall >= 0.6 before moving to LLM integration.

Constraints

MUST DO

  • Evaluate multiple embedding models on your domain data before committing
  • Implement hybrid search (vector + keyword) for production systems
  • Add metadata filters for multi-tenant or domain-specific retrieval
  • Measure retrieval metrics (precision@k, recall@k, MRR, NDCG)
  • Use reranking for top-k results before passing context to LLM
  • Implement idempotent ingestion with deduplication (deterministic IDs)
  • Monitor retrieval latency and quality over time
  • Version embeddings and plan for model migration

MUST NOT DO

  • Use default chunk size (512) without evaluation on your domain data
  • Skip metadata enrichment (source, timestamp, section)
  • Ignore retrieval quality metrics in favor of only LLM output quality
  • Store raw documents without preprocessing/cleaning
  • Use cosine similarity alone for complex multi-domain retrieval
  • Deploy without testing on production-like data volumes
  • Forget to handle edge cases (empty results, malformed docs)
  • Couple the embedding model tightly to application code

Output Templates

When designing RAG architecture, deliver: 1. System architecture diagram (ingestion + retrieval pipelines) 2. Vector database selection with trade-off analysis 3. Chunking strategy with examples and rationale 4. Retrieval pipeline design (query → results flow) 5. Evaluation plan with metrics, benchmarks, and pass/fail thresholds

Documentation

Related skills

How it compares

Choose between Qdrant, Pinecone, Weaviate, and pgvector based on latency requirements (Qdrant: sub-100ms), multi-tenancy needs (Qdrant built-in), and self-hosted vs managed preference.

FAQ

How many chunking strategies does rag-architect compare?

rag-architect compares seven chunking strategies in its matrix: fixed-size, recursive character, sentence-based, semantic, document-aware, agentic or contextual, and late chunking. Each entry notes best use cases and complexity.

When should rag-architect pick semantic chunking?

rag-architect recommends semantic chunking for technical docs and manuals where chunk quality matters and medium implementation complexity is acceptable, rather than fixed-size splits suited to simple documents or logs.

Is Rag Architect safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Data Science & MLdatabasespipelinesanalytics

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.