Setup

Follow the instructions in the Pinecone Setup Guide to get started quickly with Pinecone.

pip install pinecone

We do not yet support Pinecone v6.x.x. We are actively working to achieve compatibility. In the meantime, we recommend using Pinecone v5.4.2 for the best experience.

Example

agent_with_knowledge.py
import os
import typer
from typing import Optional
from rich.prompt import Prompt

from agno.agent import Agent
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase
from agno.vectordb.pineconedb import PineconeDb

api_key = os.getenv("PINECONE_API_KEY")
index_name = "thai-recipe-hybrid-search"

vector_db = PineconeDb(
    name=index_name,
    dimension=1536,
    metric="cosine",
    spec={"serverless": {"cloud": "aws", "region": "us-east-1"}},
    api_key=api_key,
    use_hybrid_search=True,
    hybrid_alpha=0.5,
)

knowledge_base = PDFUrlKnowledgeBase(
    urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
    vector_db=vector_db,
)

def pinecone_agent(user: str = "user"):
    run_id: Optional[str] = None

    agent = Agent(
        run_id=run_id,
        user_id=user,
        knowledge=knowledge_base,
        show_tool_calls=True,
        debug_mode=True,
    )

    if run_id is None:
        run_id = agent.run_id
        print(f"Started Run: {run_id}\n")
    else:
        print(f"Continuing Run: {run_id}\n")

    while True:
        message = Prompt.ask(f"[bold] :sunglasses: {user} [/bold]")
        if message in ("exit", "bye"):
            break
        agent.print_response(message)

if __name__ == "__main__":
    # Comment out after first run
    knowledge_base.load(recreate=True, upsert=True)

    typer.run(pinecone_agent)

PineconeDb Params

ParameterTypeDefaultDescription
namestr-The name of the Pinecone index
dimensionint-The dimension of the embeddings
specUnion[Dict, ServerlessSpec, PodSpec]-The index spec
embedderOptional[Embedder]NoneEmbedder instance for creating embeddings (defaults to OpenAIEmbedder if not provided)
metricOptional[str]"cosine"The metric used for similarity search
additional_headersOptional[Dict[str, str]]NoneAdditional headers to pass to the Pinecone client
pool_threadsOptional[int]1The number of threads to use for the Pinecone client
namespaceOptional[str]NoneThe namespace for the Pinecone index
timeoutOptional[int]NoneThe timeout for Pinecone operations
index_apiOptional[Any]NoneThe Index API object
api_keyOptional[str]NoneThe Pinecone API key
hostOptional[str]NoneThe Pinecone host
configOptional[Config]NoneThe Pinecone config
use_hybrid_searchboolFalseWhether to use hybrid search
hybrid_alphafloat0.5The alpha value for hybrid search

Developer Resources