Azure Integration: Blob Storage
Load files and folders from Azure Blob Storage containers into your Knowledge base.
"""
Azure Integration: Blob Storage
=================================
Load files and folders from Azure Blob Storage containers into your Knowledge base.
Features:
- Load single files or entire prefixes (folders)
- Uses Azure AD client credentials for authentication
Requirements:
- Azure AD App Registration with Storage Blob Data Reader role
- Client ID, Client Secret, and Tenant ID
Environment Variables:
AZURE_TENANT_ID - Azure AD tenant ID
AZURE_CLIENT_ID - App registration client ID
AZURE_CLIENT_SECRET - App registration client secret
AZURE_STORAGE_ACCOUNT_NAME - Storage account name
AZURE_CONTAINER_NAME - Container name
"""
import asyncio
from os import getenv
from agno.knowledge.knowledge import Knowledge
from agno.knowledge.remote_content import AzureBlobConfig
from agno.vectordb.qdrant import Qdrant
# ---------------------------------------------------------------------------
# Setup
# ---------------------------------------------------------------------------
azure_blob = AzureBlobConfig(
id="company-blob",
name="Company Blob Storage",
tenant_id=getenv("AZURE_TENANT_ID"),
client_id=getenv("AZURE_CLIENT_ID"),
client_secret=getenv("AZURE_CLIENT_SECRET"),
storage_account=getenv("AZURE_STORAGE_ACCOUNT_NAME"),
container=getenv("AZURE_CONTAINER_NAME"),
)
knowledge = Knowledge(
name="Azure Blob Knowledge",
vector_db=Qdrant(
collection="azure_blob_knowledge",
url="http://localhost:6333",
),
content_sources=[azure_blob],
)
# ---------------------------------------------------------------------------
# Run Demo
# ---------------------------------------------------------------------------
if __name__ == "__main__":
async def main():
# Single file
print("\n" + "=" * 60)
print("Azure Blob Storage: single file")
print("=" * 60 + "\n")
await knowledge.ainsert(
name="Report",
remote_content=azure_blob.file("reports/annual-report.pdf"),
)
# Folder
print("\n" + "=" * 60)
print("Azure Blob Storage: folder")
print("=" * 60 + "\n")
await knowledge.ainsert(
name="All Docs",
remote_content=azure_blob.folder("documents/"),
)
results = knowledge.search("What were the annual results?")
for doc in results:
print("- %s" % doc.name)
asyncio.run(main())Use an existing container with reports/annual-report.pdf and files under documents/, or update the paths. Assign the service principal the Storage Blob Data Reader role on the relevant storage resource before running the example.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno azure-identity azure-storage-blob openai pypdf qdrant-clientExport environment variables
export AZURE_CLIENT_ID="your_azure_client_id_here"
export AZURE_CLIENT_SECRET="your_azure_client_secret_here"
export AZURE_CONTAINER_NAME="your_azure_container_name_here"
export AZURE_STORAGE_ACCOUNT_NAME="your_azure_storage_account_name_here"
export AZURE_TENANT_ID="your_azure_tenant_id_here"
export OPENAI_API_KEY="your_openai_api_key_here"Run Qdrant
docker run -d --name qdrant -p 6333:6333 qdrant/qdrant:latestRun the example
Save the code above as azure.py, then run:
python azure.pyFull source: cookbook/07_knowledge/05_integrations/cloud/02_azure.py