> ## Documentation Index
> Fetch the complete documentation index at: https://agno-v2-docs-scavio-google-v2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Web + Knowledge - Live Search Meets Your Own Documents

> Agent that routes between a local ChromaDB knowledge base (hybrid search, OpenAI embeddings) and Parallel live web search depending on whether the question needs internal or current information.

Give one agent an Agno Knowledge base backed by local Chroma and Parallel Search for live web results. The agent selects the source for each question.

```python web_plus_knowledge.py theme={null}
"""
Web + Knowledge - Live Search Meets Your Own Documents
======================================================

Real agents need two kinds of information: what is in your own documents, and
what is happening on the web right now. This example gives one agent both:

- Agno Knowledge (a local Chroma vector store) for internal or static docs
- Parallel Search for fresh, live information from the web

The agent decides which to use: it searches its knowledge base for grounded
facts and reaches for Parallel when the question needs current data.

Prerequisites:
- pip install parallel-web chromadb
- export PARALLEL_API_KEY=<your-api-key>
- export OPENAI_API_KEY=<your-api-key>   (model + embeddings)
"""

from agno.agent import Agent
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.knowledge import Knowledge
from agno.models.openai import OpenAIResponses
from agno.tools.parallel import ParallelTools
from agno.vectordb.chroma import ChromaDb
from agno.vectordb.search import SearchType

# ---------------------------------------------------------------------------
# Setup - local knowledge base (embedded, no server needed)
# ---------------------------------------------------------------------------
knowledge = Knowledge(
    vector_db=ChromaDb(
        collection="company_knowledge",
        path="tmp/chromadb",
        persistent_client=True,
        search_type=SearchType.hybrid,
        embedder=OpenAIEmbedder(id="text-embedding-3-small"),
    ),
)

# ---------------------------------------------------------------------------
# Create the Agent
# ---------------------------------------------------------------------------
# search_knowledge=True gives the agent a knowledge-search tool; ParallelTools
# gives it live web search. It chooses per question.
agent = Agent(
    model=OpenAIResponses(id="gpt-5.4"),
    knowledge=knowledge,
    search_knowledge=True,
    tools=[ParallelTools()],
    markdown=True,
    instructions=[
        "Answer from your knowledge base when the facts are internal or static.",
        "Use Parallel web search when the question needs current information.",
        "Tell the user which source you used: knowledge base or live web.",
    ],
)

# ---------------------------------------------------------------------------
# Run the Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
    # Load a document into the knowledge base (stands in for internal docs).
    knowledge.insert(url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf")

    # Internal question -> knowledge base.
    agent.print_response(
        "From our documents, how do I make Tom Kha Gai?",
        stream=True,
    )

    # Live question -> Parallel web search.
    agent.print_response(
        "What is the latest news on AI agent frameworks this week?",
        stream=True,
    )
```

## Run the Example

<Steps>
  <Snippet file="create-venv-step.mdx" />

  <Step title="Install dependencies">
    ```bash theme={null}
    uv pip install -U agno beautifulsoup4 chromadb openai parallel-web pypdf
    ```
  </Step>

  <Step title="Export your API keys">
    <CodeGroup>
      ```bash Mac/Linux theme={null}
      export OPENAI_API_KEY="your_openai_api_key_here"
      export PARALLEL_API_KEY="your_parallel_api_key_here"
      ```

      ```bash Windows theme={null}
      $Env:OPENAI_API_KEY="your_openai_api_key_here"
      $Env:PARALLEL_API_KEY="your_parallel_api_key_here"
      ```
    </CodeGroup>
  </Step>

  <Step title="Run the example">
    Save the code above as `web_plus_knowledge.py`, then run:

    ```bash theme={null}
    python web_plus_knowledge.py
    ```
  </Step>
</Steps>

Full source: [cookbook/integrations/parallel/05\_web\_plus\_knowledge.py](https://github.com/agno-agi/agno/blob/main/cookbook/integrations/parallel/05_web_plus_knowledge.py)
