Skip to main content
Knowledge is domain-specific information that the Agent can search at runtime to make better decisions (dynamic few-shot learning) and provide accurate responses (agentic RAG). Knowledge is stored in a vector db and this searching on demand pattern is called Agentic RAG.
Example: If we’re building a Text2Sql Agent, we’ll need to give the table schemas, column names, data types, example queries, common “gotchas” to help it generate the best-possible SQL query.We’re obviously not going to put this all in the system prompt, instead we store this information in a vector database and let the Agent query it at runtime.Using this information, the Agent can then generate the best-possible SQL query. This is called dynamic few-shot learning.
Agno Agents use Agentic RAG by default, meaning when we provide knowledge to an Agent, it will search this knowledge base, at runtime, for the specific information it needs to achieve its task. The pseudo steps for adding knowledge to an Agent are:
We can give our agent access to the knowledge base in the following ways:
  • We can set search_knowledge=True to add a search_knowledge_base() tool to the Agent. search_knowledge is True by default if you add knowledge to an Agent.
  • We can set add_references=True to automatically add references from the knowledge base to the Agent’s prompt. This is the traditional 2023 RAG approach.
If you need complete control over the knowledge base search, you can pass your own retriever function with the following signature:
This function is called during search_knowledge_base() and is used by the Agent to retrieve references from the knowledge base.

Vector Databases

While any type of storage can act as a knowledge base, vector databases offer the best solution for retrieving relevant results from dense information quickly. Here’s how vector databases are used with Agents:
1

Chunk the information

Break down the knowledge into smaller chunks to ensure our search query returns only relevant results.
2

Load the knowledge base

Convert the chunks into embedding vectors and store them in a vector database.
3

Search the knowledge base

When the user sends a message, we convert the input message into an embedding and “search” for nearest neighbors in the vector database.
Knowledge filters are currently supported on the following knowledge base types: PDF, PDF_URL, Text, JSON, and DOCX. For more details, see the Knowledge Filters documentation.

Example: RAG Agent with a PDF Knowledge Base

Let’s build a RAG Agent that answers questions from a PDF.

Step 1: Run PgVector

Let’s use PgVector as our vector db as it can also provide storage for our Agents. Install docker desktop and run PgVector on port 5532 using:

Step 2: Traditional RAG

Retrieval Augmented Generation (RAG) means “stuffing the prompt with relevant information” to improve the model’s response. This is a 2 step process:
  1. Retrieve relevant information from the knowledge base.
  2. Augment the prompt to provide context to the model.
Let’s build a traditional RAG Agent that answers questions from a PDF of recipes.
1

Install libraries

Install the required libraries using pip
2

Create a Traditional RAG Agent

Create a file traditional_rag.py with the following contents
traditional_rag.py
3

Run the agent

Run the agent (it takes a few seconds to load the knowledge base).

If you want to use local PDFs, use a PDFKnowledgeBase instead
agent.py

Step 3: Agentic RAG

With traditional RAG above, add_references=True always adds information from the knowledge base to the prompt, regardless of whether it is relevant to the question or helpful. With Agentic RAG, we let the Agent decide if it needs to access the knowledge base and what search parameters it needs to query the knowledge base. Set search_knowledge=True and read_chat_history=True, giving the Agent tools to search its knowledge and chat history on demand.
1

Create an Agentic RAG Agent

Create a file agentic_rag.py with the following contents
agentic_rag.py
2

Run the agent

Run the agent
Notice how it searches the knowledge base and chat history when needed

Attributes

Developer Resources