Skip to main content
Build knowledge bases with vector storage, embeddings, and content ingestion for retrieval-augmented generation (RAG).
Knowledge in Agno is composed of several resources that work together:
Content (URLs, text)
  └─▶ Knowledge
        ├─▶ VectorDB (Qdrant)
        │     └─▶ Embedder (OpenAI)
        └─▶ Contents DB (Postgres, optional)

agno/knowledge

The central knowledge base resource that connects a vector database with optional embedder and content storage.

Config

FieldTypeRequiredDefaultDescription
vector_dbDependencyYesReference to agno/vectordb/qdrant
contents_dbDependencyNoReference to agno/db/postgres for content metadata storage
embedderDependencyNoReference to agno/knowledge/embedder/openai for custom embeddings
max_resultsintegerNo10Maximum search results to return

Outputs

FieldTypeDescription
pip_dependencieslist[string]Required Python packages
specobjectSerialized knowledge spec for runtime reconstruction

agno/vectordb/qdrant

Configures a Qdrant vector database for storing embeddings.

Config

FieldTypeRequiredDefaultDescription
urlField[string]YesQdrant server URL. Supports FieldReferences
collectionField[string]YesCollection name. Supports FieldReferences
api_keyField[string]NoAPI key for authentication
search_type"vector" | "keyword" | "hybrid"No"hybrid"Search strategy
embedderDependencyNoReference to agno/knowledge/embedder/openai

Outputs

FieldTypeDescription
specobjectSerialized Qdrant config for runtime reconstruction
pip_dependencieslist[string]Required packages (includes fastembed for hybrid/keyword search)

agno/knowledge/embedder/openai

Configures an OpenAI embedding model for generating vector embeddings.

Config

FieldTypeRequiredDefaultDescription
idstringNo"text-embedding-3-small"Embedding model identifier
api_keyField[string]YesOpenAI API key
dimensionsintegerNoOverride embedding dimensions (only for text-embedding-3-* models)
encoding_format"float" | "base64"No"float"Response encoding format
organizationstringNoOpenAI organization ID
base_urlstringNoCustom base URL for OpenAI-compatible APIs

Outputs

FieldTypeDescription
pip_dependencieslist[string]Required Python packages
specobjectSerialized embedder spec for runtime reconstruction

agno/knowledge/content

Represents a content source to ingest into a knowledge base. Supports URLs and inline text.

Config

FieldTypeRequiredDefaultDescription
knowledgeDependencyYesReference to agno/knowledge
urlstringConditionalURL to fetch (website, PDF, remote file). Mutually exclusive with text_content
text_contentstringConditionalInline text content. Mutually exclusive with url
namestringNoResource nameContent identifier
descriptionstringNoContent description
metadatadict[string, string]NoCustom metadata key-value pairs
topicslist[string]NoTopic tags for categorization

Outputs

FieldTypeDescription
specobjectContent specification
pip_dependencieslist[string]Reader packages (pypdf, beautifulsoup4, python-docx, etc.)

Example

A complete knowledge base setup:
# 1. Embedder
provider: agno
resource: knowledge/embedder/openai
name: embedder
config:
  id: text-embedding-3-small
  api_key:
    provider: pragma
    resource: secret
    name: openai-key
    field: outputs.OPENAI_API_KEY
---
# 2. Vector database
provider: agno
resource: vectordb/qdrant
name: vectors
config:
  url:
    provider: qdrant
    resource: database
    name: main
    field: outputs.url
  collection:
    provider: qdrant
    resource: collection
    name: docs
    field: outputs.name
  api_key:
    provider: qdrant
    resource: database
    name: main
    field: outputs.api_key
  search_type: hybrid
  embedder:
    provider: agno
    resource: knowledge/embedder/openai
    name: embedder
---
# 3. Knowledge base
provider: agno
resource: knowledge
name: docs-kb
config:
  vector_db:
    provider: agno
    resource: vectordb/qdrant
    name: vectors
  max_results: 5
---
# 4. Content source
provider: agno
resource: knowledge/content
name: user-guide
config:
  knowledge:
    provider: agno
    resource: knowledge
    name: docs-kb
  url: "https://docs.example.com/guide.pdf"
  topics:
    - documentation
    - user-guide

Notes

  • You must provide exactly one of url or text_content in content resources.
  • Content supports URLs to PDFs, web pages, documents (DOCX, PPTX), arxiv papers, YouTube transcripts, and Wikipedia articles.
  • The search_type: hybrid option combines vector and keyword search for better results but requires the fastembed package.
  • Content resources are stateful — they insert into and delete from the vector database during lifecycle events.