Pinecone Research — Agent RAG & Long-Term Memory
Use Pinecone as a retrieval-augmented generation (RAG) backend for agent
conversations: persist embeddings, retrieve relevant context from past
sessions, and build long-term memory.
When to use this skill
Use when:
- Building agent RAG pipelines with Pinecone as the vector store
- Need persistent long-term memory across agent sessions
- Combining retrieval with agent tool use
- Researching or prototyping semantic search workflows
Use the mlops/pinecone skill instead when:
- Need a general Pinecone reference (index management, CRUD, hybrid search)
- Working on production infrastructure without agent integration
Quick start
Setup
pip install pinecone-client langchain-pinecone langchain-openai
Set your API key:
export PINECONE_API_KEY="your-api-key"
Basic RAG pipeline
from pinecone import Pinecone, ServerlessSpec
from langchain_pinecone import PineconeVectorStore
from langchain_openai import OpenAIEmbeddings
# Initialize Pinecone
pc = Pinecone(api_key=os.environ["PINECONE_API_KEY"])
# Create or connect to index
index_name = "agent-memory"
if index_name not in [i.name for i in pc.list_indexes()]:
pc.create_index(
name=index_name,
dimension=1536,
metric="cosine",
spec=ServerlessSpec(cloud="aws", region="us-east-1"),
)
# Build vector store
vectorstore = PineconeVectorStore.from_documents(
documents=docs,
embedding=OpenAIEmbeddings(),
index_name=index_name,
)
# Retrieve relevant context
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
results = retriever.invoke("What did the agent discuss yesterday?")
Namespace-based session memory
# Store per-session memory
vectorstore = PineconeVectorStore(
index=pc.Index(index_name),
embedding=OpenAIEmbeddings(),
namespace=f"session-{session_id}",
)
# Query across all sessions (no namespace filter)
all_memory = PineconeVectorStore(
index=pc.Index(index_name),
embedding=OpenAIEmbeddings(),
)
results = all_memory.similarity_search("relevant query", k=10)
Best practices
- Namespace by session or user — isolate data for multi-tenant agents
- Batch upserts — 100–200 vectors per batch for efficiency
- Metadata filtering — tag vectors with session ID, timestamp, topic
- Prune old memory — delete stale namespaces to control costs
- Use serverless — auto-scaling, pay-per-use pricing
Resources
1---2name: pinecone-research3description: Agent RAG and long-term memory with Pinecone.4version: 1.0.05author: immuhammadfurqan6license: MIT7dependencies: [pinecone-client, langchain-pinecone]8platforms: [linux, macos, windows]9metadata:10 loki:11 tags: [RAG, Pinecone, Memory, Research, Vector Database, Agent, Retrieval]1213---1415# Pinecone Research — Agent RAG & Long-Term Memory1617Use Pinecone as a retrieval-augmented generation (RAG) backend for agent18conversations: persist embeddings, retrieve relevant context from past19sessions, and build long-term memory.2021## When to use this skill2223**Use when:**24- Building agent RAG pipelines with Pinecone as the vector store25- Need persistent long-term memory across agent sessions26- Combining retrieval with agent tool use27- Researching or prototyping semantic search workflows2829**Use the mlops/pinecone skill instead when:**30- Need a general Pinecone reference (index management, CRUD, hybrid search)31- Working on production infrastructure without agent integration3233## Quick start3435### Setup3637```bash38pip install pinecone-client langchain-pinecone langchain-openai39```4041Set your API key:42```bash43export PINECONE_API_KEY="your-api-key"44```4546### Basic RAG pipeline4748```python49from pinecone import Pinecone, ServerlessSpec50from langchain_pinecone import PineconeVectorStore51from langchain_openai import OpenAIEmbeddings5253# Initialize Pinecone54pc = Pinecone(api_key=os.environ["PINECONE_API_KEY"])5556# Create or connect to index57index_name = "agent-memory"58if index_name not in [i.name for i in pc.list_indexes()]:59 pc.create_index(60 name=index_name,61 dimension=1536,62 metric="cosine",63 spec=ServerlessSpec(cloud="aws", region="us-east-1"),64 )6566# Build vector store67vectorstore = PineconeVectorStore.from_documents(68 documents=docs,69 embedding=OpenAIEmbeddings(),70 index_name=index_name,71)7273# Retrieve relevant context74retriever = vectorstore.as_retriever(search_kwargs={"k": 5})75results = retriever.invoke("What did the agent discuss yesterday?")76```7778### Namespace-based session memory7980```python81# Store per-session memory82vectorstore = PineconeVectorStore(83 index=pc.Index(index_name),84 embedding=OpenAIEmbeddings(),85 namespace=f"session-{session_id}",86)8788# Query across all sessions (no namespace filter)89all_memory = PineconeVectorStore(90 index=pc.Index(index_name),91 embedding=OpenAIEmbeddings(),92)93results = all_memory.similarity_search("relevant query", k=10)94```9596## Best practices97981. **Namespace by session or user** — isolate data for multi-tenant agents992. **Batch upserts** — 100–200 vectors per batch for efficiency1003. **Metadata filtering** — tag vectors with session ID, timestamp, topic1014. **Prune old memory** — delete stale namespaces to control costs1025. **Use serverless** — auto-scaling, pay-per-use pricing103104## Resources105106- **Pinecone Docs**: https://docs.pinecone.io107- **LangChain Integration**: https://python.langchain.com/docs/integrations/vectorstores/pinecone108- **Free Tier**: 1 index, 100K vectors (1536 dimensions)