diff --git a/backend/open_webui/models/knowledge.py b/backend/open_webui/models/knowledge.py
index b582040175..fdedf51ea7 100644
--- a/backend/open_webui/models/knowledge.py
+++ b/backend/open_webui/models/knowledge.py
@@ -692,11 +692,16 @@ class KnowledgeTable:
except Exception:
return False
- async def reset_knowledge_by_id(self, id: str, db: Optional[AsyncSession] = None) -> Optional[KnowledgeModel]:
+ async def reset_knowledge_by_id(self, id: str, include_directories: bool = True, db: Optional[AsyncSession] = None) -> Optional[KnowledgeModel]:
try:
async with get_async_db_context(db) as db:
# Delete all knowledge_file entries for this knowledge_id
await db.execute(delete(KnowledgeFile).filter_by(knowledge_id=id))
+
+ # Delete all directories if requested
+ if include_directories:
+ await db.execute(delete(KnowledgeDirectory).filter_by(knowledge_id=id))
+
await db.commit()
# Update the knowledge entry's updated_at timestamp
diff --git a/backend/open_webui/routers/knowledge.py b/backend/open_webui/routers/knowledge.py
index 9fdb8b539e..4bf48d370d 100644
--- a/backend/open_webui/routers/knowledge.py
+++ b/backend/open_webui/routers/knowledge.py
@@ -950,7 +950,10 @@ async def delete_knowledge_by_id(
@router.post('/{id}/reset', response_model=KnowledgeResponse | None)
async def reset_knowledge_by_id(
- id: str, user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session)
+ id: str,
+ include_directories: bool = Query(True),
+ user=Depends(get_verified_user),
+ db: AsyncSession = Depends(get_async_session),
):
knowledge = await Knowledges.get_knowledge_by_id(id=id, db=db)
if not knowledge:
@@ -981,7 +984,7 @@ async def reset_knowledge_by_id(
log.debug(e)
pass
- knowledge = await Knowledges.reset_knowledge_by_id(id=id, db=db)
+ knowledge = await Knowledges.reset_knowledge_by_id(id=id, include_directories=include_directories, db=db)
return knowledge
diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte
index 26cef03a5f..b82666aa56 100644
--- a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte
+++ b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte
@@ -81,6 +81,7 @@
let pendingSyncFiles: Array<{ path: string; filename: string; file: File }> | null = null;
let syncing: string | null = null;
let showAccessControlModal = false;
+ let showResetConfirm = false;
let minSize = 0;
type Knowledge = {
@@ -1292,8 +1293,11 @@
if (pendingSyncFiles?.length) {
showSyncConfirmModal = true;
}
- }}
- />
+ }}
+ onReset={() => {
+ showResetConfirm = true;
+ }}
+ />
{/if}
@@ -1528,3 +1532,17 @@
+
+