rag-infrastructure
Permite que seu agente acesse e use informações de fontes externas. Ele organiza esses dados para que o agente possa encontrá-los e usá-los de forma eficiente.
O que ela faz
Esta ferramenta ajuda a criar um sistema que responde perguntas usando seus próprios documentos. Ela transforma seus textos em um formato que um computador entende e busca as informações mais relevantes para responder suas perguntas.
Quando usar
- ✓Quando você quer criar um "perguntas e respostas" sobre documentos internos da sua empresa.
- ✓Quando você precisa encontrar informações específicas em muitos documentos.
- ✓Quando você quer que um robô de IA responda perguntas com base em textos que você forneceu, evitando que ele "invente" respostas.
Exemplo do que pedir para a IA
“Responda minhas perguntas sobre o manual do usuário deste produto usando apenas as informações contidas nele.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Primeiro, a ferramenta divide seus documentos em pedaços menores. Depois, ela cria representações numéricas (embeddings) para cada pedaço. Essas representações são guardadas em um banco de dados especial (vector store) para que possam ser buscadas rapidamente.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill rag-infrastructureOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/rag-infrastructure/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Infraestrutura RAG
Infraestrutura de produção para Geração Aumentada por Recuperação (Retrieval-Augmented Generation): ingere documentos, gera embeddings, armazena em bancos de dados vetoriais e serve respostas de LLM fundamentadas.
Quando Usar Esta Habilidade
Use esta habilidade quando:
- Estiver construindo um sistema de Perguntas e Respostas (Q&A) sobre documentos internos
- Estiver implementando busca semântica em grandes coleções de documentos
- Estiver reduzindo alucinações de LLM com contexto recuperado
- Estiver configurando pipelines de embeddings e infraestrutura de armazenamento vetorial
- Estiver implantando busca híbrida (densa + esparsa/BM25)
Pré-requisitos
- Python 3.10+ com
pip - Um banco de dados vetorial (Qdrant, Weaviate, Pinecone ou pgvector)
- Um modelo de embedding (OpenAI, Cohere ou local via
sentence-transformers) - Um endpoint de LLM (API OpenAI ou vLLM auto-hospedado)
- Docker para implantação local de banco de dados vetorial
Visão Geral da Arquitetura
Documents → Chunker → Embedder → Vector Store
↓
User Query → Embedder → Vector Store (search) → Reranker → LLM → Answer
Pipeline de Embeddings
from sentence_transformers import SentenceTransformer
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct
import uuid
# Local embedding model (no API cost)
model = SentenceTransformer("BAAI/bge-large-en-v1.5")
# Connect to Qdrant
client = QdrantClient("http://localhost:6333")
# Create collection
client.create_collection(
collection_name="knowledge-base",
vectors_config=VectorParams(size=1024, distance=Distance.COSINE),
)
def ingest_documents(docs: list[dict]):
"""Chunk, embed, and upsert documents."""
points = []
for doc in docs:
chunks = chunk_text(doc["text"], chunk_size=512, overlap=50)
embeddings = model.encode(chunks, batch_size=32, show_progress_bar=True)
for chunk, embedding in zip(chunks, embeddings):
points.append(PointStruct(
id=str(uuid.uuid4()),
vector=embedding.tolist(),
payload={"text": chunk, "source": doc["source"], "title": doc["title"]},
))
client.upsert(collection_name="knowledge-base", points=points)
print(f"Ingested {len(points)} chunks")
Estratégias de Chunking
from langchain.text_splitter import RecursiveCharacterTextSplitter
def chunk_text(text: str, chunk_size: int = 512, overlap: int = 50) -> list[str]:
"""Recursive character splitter — best general-purpose strategy."""
splitter = RecursiveCharacterTextSplitter(
chunk_size=chunk_size,
chunk_overlap=overlap,
separators=["\n\n", "\n", ". ", " ", ""],
)
return splitter.split_text(text)
# For code/markdown — use language-aware splitter
from langchain.text_splitter import MarkdownHeaderTextSplitter
headers = [("#", "H1"), ("##", "H2"), ("###", "H3")]
md_splitter = MarkdownHeaderTextSplitter(headers_to_split_on=headers)
Busca Híbrida (Densa + Esparsa)
from qdrant_client.models import SparseVector, SparseVectorParams, NamedSparseVector
from fastembed import SparseTextEmbedding
# Qdrant hybrid collection (dense + BM25 sparse)
client.create_collection(
collection_name="hybrid-kb",
vectors_config={"dense": VectorParams(size=1024, distance=Distance.COSINE)},
sparse_vectors_config={"sparse": SparseVectorParams()},
)
sparse_model = SparseTextEmbedding("prithivida/Splade_PP_en_v1")
def hybrid_search(query: str, top_k: int = 10) -> list[dict]:
dense_vec = model.encode(query).tolist()
sparse_vec = list(sparse_model.embed(query))[0]
results = client.query_points(
collection_name="hybrid-kb",
prefetch=[
{"query": dense_vec, "using": "dense", "limit": 20},
{"query": SparseVector(indices=sparse_vec.indices.tolist(),
values=sparse_vec.values.tolist()),
"using": "sparse", "limit": 20},
],
query={"fusion": "rrf"}, # Reciprocal Rank Fusion
limit=top_k,
)
return [{"text": p.payload["text"], "score": p.score} for p in results.points]
Reclassificação (Reranking)
import cohere
co = cohere.Client("sua-chave-api")
def rerank(query: str, candidates: list[str], top_n: int = 5) -> list[str]:
"""Reclassifica os trechos recuperados por relevância (melhora a qualidade do RAG em ~20-30%)."""
response = co.rerank(
model="rerank-english-v3.0",
query=query,
documents=candidates,
top_n=top_n,
)
…
Perguntas frequentes
O que são "embeddings"?
São como traduções dos seus textos para uma linguagem que o computador entende, permitindo que ele compare e encontre textos com significados parecidos.
O que é "vector store"?
É um tipo de banco de dados otimizado para guardar e buscar rapidamente essas representações numéricas (embeddings) dos textos.
Por que dividir os documentos em pedaços ("chunking")?
Dividir os documentos ajuda a encontrar informações mais precisas e evita que a IA receba um texto muito longo para processar de uma vez.
Detalhes
Descrição original do autor
Build and operate Retrieval-Augmented Generation (RAG) infrastructure with vector stores, embedding pipelines, and hybrid search.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3952
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC