Managed Vector Databases: Pinecone

Pinecone is a fully managed, serverless vector database for production workloads where you want zero infrastructure management.

managed.py
"""
Managed Vector Databases: Pinecone
====================================
Pinecone is a fully managed, serverless vector database for
production workloads where you want zero infrastructure management.

Features:
- Fully managed, serverless option available
- Automatic scaling and high availability
- Metadata filtering
- Namespaces for multi-tenancy

Requires: pip install pinecone

See also: 01_qdrant.py for recommended default, 04_pgvector.py for PostgreSQL.
"""

from os import getenv

from agno.agent import Agent
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.knowledge import Knowledge
from agno.models.openai import OpenAIResponses

# ---------------------------------------------------------------------------
# Pinecone Setup
# ---------------------------------------------------------------------------

try:
    from agno.vectordb.pineconedb import PineconeDb

    knowledge_pinecone = Knowledge(
        vector_db=PineconeDb(
            name="knowledge-demo",
            api_key=getenv("PINECONE_API_KEY"),
            embedder=OpenAIEmbedder(id="text-embedding-3-small"),
        ),
    )
except ImportError:
    knowledge_pinecone = None
    print("Pinecone not installed. Run: pip install pinecone")

# ---------------------------------------------------------------------------
# Run Demo
# ---------------------------------------------------------------------------

if __name__ == "__main__":
    if knowledge_pinecone:
        print("\n" + "=" * 60)
        print("Pinecone: managed serverless vector database")
        print("=" * 60 + "\n")

        knowledge_pinecone.insert(
            url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"
        )
        agent = Agent(
            model=OpenAIResponses(id="gpt-5.2"),
            knowledge=knowledge_pinecone,
            search_knowledge=True,
            markdown=True,
        )
        agent.print_response("What Thai recipes do you know?", stream=True)
    else:
        print("Skipping demo: Pinecone not installed.")

The current PineconeDb constructor requires dimension and spec. Add them to the retained source’s constructor before running:

from pinecone import ServerlessSpec

knowledge_pinecone = Knowledge(
    vector_db=PineconeDb(
        name="knowledge-demo",
        dimension=1536,
        spec=ServerlessSpec(cloud="aws", region="us-east-1"),
        api_key=getenv("PINECONE_API_KEY"),
        embedder=OpenAIEmbedder(id="text-embedding-3-small"),
    ),
)

The dimension matches the default output of text-embedding-3-small. Choose a supported region for your project; an existing knowledge-demo index must have a compatible dimension.

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno beautifulsoup4 openai pinecone==5.4.2 pypdf

Export your API keys

export OPENAI_API_KEY="your_openai_api_key_here"
export PINECONE_API_KEY="your_pinecone_api_key_here"

Run the example

Save the code above as managed.py, then run:

python managed.py

Full source: cookbook/07_knowledge/05_integrations/vector_dbs/03_managed.py