Pular para o conteúdo
Skillpedia
Agentes41 mil · #4892

rag-implementation

Faz seu agente usar fontes de informação externas para responder perguntas. É útil para criar sistemas de perguntas e respostas com documentos ou conectar IA a bases de conhecimento.

O que ela faz

Essa ferramenta ajuda a criar sistemas de inteligência artificial que respondem perguntas usando informações de documentos específicos. Ela faz isso conectando a IA a bancos de dados que entendem o significado das palavras.

Quando usar

  • ✓Criar um assistente que responde perguntas sobre seus documentos.
  • ✓Fazer um chatbot que sempre dá respostas atuais e corretas.
  • ✓Permitir que a IA use conhecimentos de áreas específicas.

Exemplo do que pedir para a IA

“Responda minhas perguntas com base nos documentos da minha empresa.”

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

https://github.com/wshobson/agents/blob/main/plugins/llm-application-dev/skills/rag-implementation/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/llm-application-dev/skills/rag-implementation/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A IA transforma seus documentos em códigos numéricos (vetores) e os armazena. Quando você pergunta algo, ela busca os códigos mais parecidos para encontrar a informação relevante e te dar a resposta.

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 wshobson/agents --skill rag-implementation

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/llm-application-dev/skills/rag-implementation/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Implementação de RAG

Domine a Geração Aumentada por Recuperação (RAG) para construir aplicações de LLM que fornecem respostas precisas e fundamentadas usando fontes de conhecimento externas.

Quando Usar Esta Habilidade

  • Construir sistemas de Perguntas e Respostas sobre documentos proprietários
  • Criar chatbots com informações atuais e factuais
  • Implementar busca semântica com consultas em linguagem natural
  • Reduzir alucinações com respostas fundamentadas
  • Permitir que LLMs acessem conhecimento específico de domínio
  • Construir assistentes de documentação
  • Criar ferramentas de pesquisa com citação de fontes

Componentes Principais

1. Bancos de Dados Vetoriais

Propósito: Armazenar e recuperar embeddings de documentos de forma eficiente

Opções:

  • Pinecone: Gerenciado, escalável, serverless
  • Weaviate: Código aberto, busca híbrida, GraphQL
  • Milvus: Alto desempenho, on-premise
  • Chroma: Leve, fácil de usar, desenvolvimento local
  • Qdrant: Rápido, busca filtrada, baseado em Rust
  • pgvector: Extensão do PostgreSQL, integração SQL

2. Embeddings

Propósito: Converter texto em vetores numéricos para busca de similaridade

Modelos (2026):

Modelo Dimensões Ideal para
voyage-3-large 1024 Aplicações Claude (recomendado pela Anthropic)
voyage-code-3 1024 Busca de código
text-embedding-3-large 3072 Aplicações OpenAI, alta precisão
text-embedding-3-small 1536 Aplicações OpenAI, custo-benefício
bge-large-en-v1.5 1024 Código aberto, implantação local
multilingual-e5-large 1024 Suporte multilíngue

3. Estratégias de Recuperação

Abordagens:

  • Recuperação Densa: Similaridade semântica via embeddings
  • Recuperação Esparsa: Correspondência de palavras-chave (BM25, TF-IDF)
  • Busca Híbrida: Combina densa + esparsa com fusão ponderada
  • Multi-Query: Gera múltiplas variações de consulta
  • HyDE: Gera documentos hipotéticos para melhor recuperação

4. Reclassificação (Reranking)

Propósito: Melhorar a qualidade da recuperação reordenando os resultados

Métodos:

  • Cross-Encoders: Reclassificação baseada em BERT (ms-marco-MiniLM)
  • Cohere Rerank: Reclassificação baseada em API
  • Maximal Marginal Relevance (MMR): Diversidade + relevância
  • Baseado em LLM: Usa LLM para pontuar a relevância

Início Rápido com 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"])

Padrões detalhados e exemplos práticos

A documentação detalhada dos padrões está em references/details.md. Leia este arquivo quando o nível de navegação acima for insuficiente.

Perguntas frequentes

O que são 'embeddings'?

São representações numéricas de textos que permitem à IA entender a similaridade entre palavras e frases.

O que é um 'banco de dados vetorial'?

É um tipo especial de banco de dados otimizado para armazenar e buscar esses códigos numéricos (vetores) de forma rápida.

Por que usar isso em vez de perguntar direto para a IA?

Para garantir que a IA use informações precisas e atuais dos seus documentos, em vez de 'inventar' respostas.

Detalhes

Descrição original do autor

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.

repo: wshobson/agents

Popularidade

Estrelas no GitHub
41 mil
Posição no ranking
#4892
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas