Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.phidata.com/llms.txt

Use this file to discover all available pages before exploring further.

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

from phi.agent import Agent
from phi.knowledge.pdf import PDFUrlKnowledgeBase
from phi.vectordb.pineconedb import PineconeDB

api_key = os.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_base = PDFUrlKnowledgeBase(
urls=["https://phi-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
vector_db=vector_db,
)

# Comment out after first run

knowledge_base.load(recreate=False, upsert=True)

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

    agent = Agent(
        run_id=run_id,
        user_id=user,
        knowledge_base=knowledge_base,
        use_tools=True,
        show_tool_calls=True,
        debug_mode=True,
        # Uncomment the following line to use traditional RAG
        # add_references_to_prompt=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**":
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