瀏覽代碼

feat: reset vectordb storage support

Timothy J. Baek 1 年之前
父節點
當前提交
b37b157638
共有 3 個文件被更改,包括 63 次插入2 次删除
  1. 2 2
      backend/apps/rag/main.py
  2. 26 0
      src/lib/apis/rag/index.ts
  3. 35 0
      src/lib/components/chat/SettingsModal.svelte

+ 2 - 2
backend/apps/rag/main.py

@@ -190,7 +190,7 @@ def reset_vector_db(user=Depends(get_current_user)):
 
 
 
 
 @app.get("/reset")
 @app.get("/reset")
-def reset(user=Depends(get_current_user)):
+def reset(user=Depends(get_current_user)) -> bool:
     if user.role == "admin":
     if user.role == "admin":
         folder = f"{UPLOAD_DIR}"
         folder = f"{UPLOAD_DIR}"
         for filename in os.listdir(folder):
         for filename in os.listdir(folder):
@@ -208,7 +208,7 @@ def reset(user=Depends(get_current_user)):
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
 
 
-        return {"status": True}
+        return True
     else:
     else:
         raise HTTPException(
         raise HTTPException(
             status_code=status.HTTP_403_FORBIDDEN,
             status_code=status.HTTP_403_FORBIDDEN,

+ 26 - 0
src/lib/apis/rag/index.ts

@@ -103,3 +103,29 @@ export const queryVectorDB = async (
 
 
 	return res;
 	return res;
 };
 };
+
+export const resetVectorDB = async (token: string) => {
+	let error = null;
+
+	const res = await fetch(`${RAG_API_BASE_URL}/reset`, {
+		method: 'GET',
+		headers: {
+			Accept: 'application/json',
+			authorization: `Bearer ${token}`
+		}
+	})
+		.then(async (res) => {
+			if (!res.ok) throw await res.json();
+			return res.json();
+		})
+		.catch((err) => {
+			error = err.detail;
+			return null;
+		});
+
+	if (error) {
+		throw error;
+	}
+
+	return res;
+};

+ 35 - 0
src/lib/components/chat/SettingsModal.svelte

@@ -31,6 +31,7 @@
 		updateOpenAIKey,
 		updateOpenAIKey,
 		updateOpenAIUrl
 		updateOpenAIUrl
 	} from '$lib/apis/openai';
 	} from '$lib/apis/openai';
+	import { resetVectorDB } from '$lib/apis/rag';
 
 
 	export let show = false;
 	export let show = false;
 
 
@@ -1829,6 +1830,40 @@
 									<div class=" self-center text-sm font-medium">Delete All Chats</div>
 									<div class=" self-center text-sm font-medium">Delete All Chats</div>
 								</button>
 								</button>
 							{/if}
 							{/if}
+
+							{#if $user?.role === 'admin'}
+								<hr class=" dark:border-gray-700" />
+
+								<button
+									class=" flex rounded-md py-2 px-3.5 w-full hover:bg-gray-200 dark:hover:bg-gray-800 transition"
+									on:click={() => {
+										const res = resetVectorDB(localStorage.token).catch((error) => {
+											toast.error(error);
+											return null;
+										});
+
+										if (res) {
+											toast.success('Success');
+										}
+									}}
+								>
+									<div class=" self-center mr-3">
+										<svg
+											xmlns="http://www.w3.org/2000/svg"
+											viewBox="0 0 16 16"
+											fill="currentColor"
+											class="w-4 h-4"
+										>
+											<path
+												fill-rule="evenodd"
+												d="M3.5 2A1.5 1.5 0 0 0 2 3.5v9A1.5 1.5 0 0 0 3.5 14h9a1.5 1.5 0 0 0 1.5-1.5v-7A1.5 1.5 0 0 0 12.5 4H9.621a1.5 1.5 0 0 1-1.06-.44L7.439 2.44A1.5 1.5 0 0 0 6.38 2H3.5Zm6.75 7.75a.75.75 0 0 0 0-1.5h-4.5a.75.75 0 0 0 0 1.5h4.5Z"
+												clip-rule="evenodd"
+											/>
+										</svg>
+									</div>
+									<div class=" self-center text-sm font-medium">Reset Vector Storage</div>
+								</button>
+							{/if}
 						</div>
 						</div>
 					</div>
 					</div>
 				{:else if selectedTab === 'auth'}
 				{:else if selectedTab === 'auth'}