Pular para o conteúdo
Skillpedia
Agentes40 mil · #5267

pinecone-rag

Ajuda seu agente a criar sistemas de busca e memória para IA usando um banco de dados especial. Ele permite que a IA lembre informações e encontre dados relevantes.

O que ela faz

Esta ferramenta ajuda a criar sistemas que permitem que inteligências artificiais (agentes) lembrem de informações importantes ou pesquisem em grandes quantidades de documentos. Ela usa o Pinecone, um banco de dados especial para buscas rápidas de informações parecidas.

Quando usar

  • ✓Quando você quer que um agente de IA se lembre de conversas passadas.
  • ✓Quando você tem muitos documentos (como PDFs ou páginas da web) e quer que a IA encontre as partes mais relevantes.
  • ✓Quando você quer que a IA responda perguntas usando informações específicas de um conjunto de documentos.

Exemplo do que pedir para a IA

“Quero que a IA responda perguntas sobre meus documentos de trabalho, lembrando do que já conversamos.”

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/github/awesome-copilot/blob/main/skills/pinecone-rag/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/pinecone-rag/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Primeiro, você configura um 'banco de dados' no Pinecone. Depois, transforma seus documentos ou informações em um formato que a IA entende e os envia para o Pinecone. Por fim, a IA pode buscar e usar essas informações para responder perguntas ou lembrar de coisas.

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 github/awesome-copilot --skill pinecone-rag

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/pinecone-rag/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.

Skill RAG do Pinecone

Esta skill te guiará na construção de um pipeline RAG de produção ou um sistema de memória persistente para agentes usando Pinecone. Siga o fluxo de trabalho do início ao fim — não pule etapas nem vá direto para o código antes de entender o que o usuário realmente precisa.

Antes de começar — faça uma pergunta

Antes de escrever qualquer código, identifique qual destes dois casos de uso se aplica:

A — RAG sobre documentos: O usuário quer indexar um corpus (PDFs, documentos, código, páginas da web) e recuperar trechos relevantes para fundamentar as respostas do LLM.

B — Memória de agente: O usuário quer que um agente se lembre de fatos, decisões ou contexto entre sessões ou entre múltiplos agentes que compartilham uma base de conhecimento.

A configuração é semelhante, mas a estratégia de namespace e os padrões de recuperação diferem. Se o usuário não disse, pergunte: "Isso é para recuperação de documentos, memória de agente, ou ambos?" Em seguida, siga o fluxo de trabalho relevante abaixo.


Etapa 1 — Escolha a configuração do seu índice

Escolha o tipo de índice antes de escrever qualquer código. Errar aqui significa recriar o índice mais tarde.

Serverless (recomendado para a maioria dos casos)

from pinecone import Pinecone, ServerlessSpec

pc = Pinecone(api_key="PINECONE_API_KEY")

if "my-index" not in pc.list_indexes().names():
    pc.create_index(
        name="my-index",
        dimension=1536,        # must match your embedding model exactly
        metric="cosine",
        spec=ServerlessSpec(cloud="aws", region="us-east-1")
    )
index = pc.Index("my-index")

Baseado em Pods (para produção de alto rendimento consistente)

from pinecone import PodSpec

pc.create_index(
    name="my-index-prod",
    dimension=1536,
    metric="cosine",
    spec=PodSpec(environment="us-east1-gcp", pod_type="p1.x1")
)

Referência rápida de dimensão — combine isso exatamente com seu modelo de embedding:

Modelo Dimensão
text-embedding-3-small 1536
text-embedding-3-large 3072
voyage-3 / voyage-multimodal-3 1024
BAAI/bge-large-en-v1.5 1024
intfloat/multilingual-e5-large (Árabe, Malaio, Chinês) 1024

Checkpoint: Índice existe, dimensão corresponde ao modelo de embedding, index.describe_index_stats() retorna sem erro.


Etapa 2 — Crie embeddings e insira documentos

Sempre agrupe as inserções — nunca insira um vetor por vez.

from openai import OpenAI

client = OpenAI()

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

def upsert_docs(index, docs: list[dict], namespace: str = "default"):
    """docs = [{"id": "...", "text": "...", "metadata": {...}}]"""
    BATCH = 100
    for i in range(0, len(docs), BATCH):
        batch = docs[i:i + BATCH]
        vecs = [
            {
                "id": d["id"],
                "values": emb,
                "metadata": {**d.get("metadata", {}), "text": d["text"]}
            }
            for d, emb in zip(batch, embed([d["text"] for d in batch]))
        ]
        index.upsert(vectors=vecs, namespace=namespace)

Sempre armazene o texto original nos metadados — isso evita uma segunda consulta no momento da recuperação.

Checkpoint: index.describe_index_stats() mostra a contagem de vetores > 0 no namespace de destino.


Etapa 3 — Escolha a estratégia de recuperação

Busca densa (semântica) — use para a maioria dos casos

def search(index, query: str, top_k: int = 5, namespace: str = "default",
           filter: dict = None) -> list[dict]:
    [q_emb] = embed([query])
    results = index.query(
        vector=q_emb, top_k=top_k, namespace=namespace,
        include_metadata=True, filter=filter
    )
    return [{"text": m.metadata["text"], "score": m.score, "id": m.id}
            for m in results.matches]

Busca híbrida (semântica + palavra-chave BM25) — use quando o corpus tiver terminologia exata

Use híbrida quando o domínio tiver termos precisos que a busca semântica perde: citações legais, códigos médicos, SKUs de produtos, nomes de métodos de API.

from pinecone_text.sparse import BM25Encoder

bm25 = BM25Encoder().default()
bm25.fit([d["text"] for d in docs])  # ajuste uma vez no seu corpus

def hybrid_search(index, query: str, top_k: int = 5, alpha: float = 0.7):
    """alpha=1.0 é puramente denso; alpha=0.0 é puramente esparso."""
    dense = [v * alpha for v in embed([query])[0]]
    sparse_raw = bm25.encode_queries(query)
    sparse = {
        "indices": sparse_raw["indices"],
        "values": [v * (1 - alpha) for v in sparse_raw["values"]]
    }

…
Perguntas frequentes

O que é um 'banco de dados vetorial' como o Pinecone?

É um tipo especial de banco de dados otimizado para encontrar informações com base no significado, não apenas em palavras-chave exatas. Ele transforma textos em números (vetores) e encontra os mais parecidos.

O que significa 'RAG'?

RAG significa 'Retrieval-Augmented Generation'. Basicamente, é uma forma de fazer a IA buscar informações relevantes antes de gerar uma resposta, tornando-a mais precisa e informada.

Preciso saber programar para usar isso?

A ferramenta é feita para ajudar a construir esses sistemas, mas o uso direto pode exigir algum conhecimento técnico. O objetivo é simplificar o processo para quem não é programador.

Detalhes

Descrição original do autor

Build production RAG pipelines and persistent agent memory using Pinecone as the vector database backend. ALWAYS USE THIS SKILL when the user mentions Pinecone, wants to index documents for semantic search, build a retrieval-augmented generation system, store agent memory across sessions, implement hybrid search, or connect an LLM to a searchable knowledge base — even if they don't say "Pinecone"

repo: github/awesome-copilot

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas