My App

Knowledge Base

Knowledge base setup and configuration

Overview

The Knowledge Base provides self-service articles for customers. Articles are organized in categories and support semantic search using vector embeddings.

Creating Categories

Categories organize articles hierarchically.

POST /api/v1/kb/categories/
{
  "name": "Getting Started",
  "description": "Introductory articles",
  "parent": null,
  "is_public": true
}

Creating Articles

POST /api/v1/kb/articles/
{
  "title": "How to create a ticket",
  "content": "Article content in markdown...",
  "category": 1,
  "is_public": true,
  "is_featured": false
}

Article Fields

FieldTypeDescription
titlestringArticle title
slugstringAuto-generated URL slug
contenttextArticle body (markdown)
excerptstringShort summary
categoryFKParent category
is_publicboolVisible to customers
is_featuredboolShow on homepage
seo_titlestringSEO title override
seo_descriptionstringMeta description

Articles are indexed with vector embeddings for semantic search. Requires Gemini API key in .env:

GEMINI_API_KEY=your-key
EMBEDDING_MODEL=gemini-embedding-001

Generate embeddings for existing articles:

docker compose exec api python manage.py generate_kb_embeddings

Search endpoint:

POST /api/v1/kb/articles/search/
{
  "query": "how do I reset my password"
}

Public Access

Public articles are accessible without authentication:

GET /api/v1/public/kb/articles/
GET /api/v1/public/kb/search/?q=query

Analytics

View article analytics:

GET /api/v1/kb/articles/{id}/analytics/

Returns view count, helpful/not helpful counts.

On this page