Pinecone
Insert a PDF into a Pinecone index, query it with an agent, and delete content by name or metadata.
Code
from os import getenv
from agno.agent import Agent
from agno.knowledge.knowledge import Knowledge
from agno.vectordb.pineconedb import PineconeDb
api_key = getenv("PINECONE_API_KEY")
index_name = "thai-recipe-index"
vector_db = PineconeDb(
name=index_name,
dimension=1536,
metric="cosine",
spec={"serverless": {"cloud": "aws", "region": "us-east-1"}},
api_key=api_key,
)
knowledge = Knowledge(
name="My Pinecone Knowledge Base",
description="This is a knowledge base that uses a Pinecone Vector DB",
vector_db=vector_db,
)
knowledge.insert(
name="Recipes",
url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
metadata={"doc_type": "recipe_book"},
)
agent = Agent(
knowledge=knowledge,
search_knowledge=True,
read_chat_history=True,
)
agent.print_response("How do I make pad thai?", markdown=True)
vector_db.delete_by_name("Recipes")
vector_db.delete_by_metadata({"doc_type": "recipe_book"})Usage
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U pinecone==5.4.2 pypdf openai agnoSet environment variables
export PINECONE_API_KEY="your-pinecone-api-key"
export OPENAI_API_KEY=xxxRun Agent
python pinecone_db.py