diff --git a/.changeset/strong-kids-brush.md b/.changeset/strong-kids-brush.md
new file mode 100644
index 0000000000000000000000000000000000000000..b4b587a08143f5e7a51d5e34762a2b51982f3a69
--- /dev/null
+++ b/.changeset/strong-kids-brush.md
@@ -0,0 +1,5 @@
+---
+"create-llama": patch
+---
+
+fix: keep origin upload filename
diff --git a/templates/components/llamaindex/typescript/documents/helper.ts b/templates/components/llamaindex/typescript/documents/helper.ts
index 1457303660f1d8b9e457b2a83fddbb7f723860e0..0bbcc47fbaa64611ecddf9bc93cc69829d249719 100644
--- a/templates/components/llamaindex/typescript/documents/helper.ts
+++ b/templates/components/llamaindex/typescript/documents/helper.ts
@@ -1,5 +1,4 @@
 import fs from "fs";
-import crypto from "node:crypto";
 import { getExtractors } from "../../engine/loader";
 
 const MIME_TYPE_TO_EXT: Record<string, string> = {
@@ -11,9 +10,13 @@ const MIME_TYPE_TO_EXT: Record<string, string> = {
 
 const UPLOADED_FOLDER = "output/uploaded";
 
-export async function storeAndParseFile(fileBuffer: Buffer, mimeType: string) {
+export async function storeAndParseFile(
+  filename: string,
+  fileBuffer: Buffer,
+  mimeType: string,
+) {
   const documents = await loadDocuments(fileBuffer, mimeType);
-  const { filename } = await saveDocument(fileBuffer, mimeType);
+  await saveDocument(filename, fileBuffer, mimeType);
   for (const document of documents) {
     document.metadata = {
       ...document.metadata,
@@ -35,11 +38,14 @@ async function loadDocuments(fileBuffer: Buffer, mimeType: string) {
   return await reader.loadDataAsContent(fileBuffer);
 }
 
-async function saveDocument(fileBuffer: Buffer, mimeType: string) {
+async function saveDocument(
+  filename: string,
+  fileBuffer: Buffer,
+  mimeType: string,
+) {
   const fileExt = MIME_TYPE_TO_EXT[mimeType];
   if (!fileExt) throw new Error(`Unsupported document type: ${mimeType}`);
 
-  const filename = `${crypto.randomUUID()}.${fileExt}`;
   const filepath = `${UPLOADED_FOLDER}/${filename}`;
   const fileurl = `${process.env.FILESERVER_URL_PREFIX}/${filepath}`;
 
diff --git a/templates/components/llamaindex/typescript/documents/upload.ts b/templates/components/llamaindex/typescript/documents/upload.ts
index 9cfb545f88775ada56bde603d22a7200ed9589bc..4f205a60107ca9d166758520ae8e18edb0a311a4 100644
--- a/templates/components/llamaindex/typescript/documents/upload.ts
+++ b/templates/components/llamaindex/typescript/documents/upload.ts
@@ -27,6 +27,6 @@ export async function uploadDocument(
   }
 
   // run the pipeline for other vector store indexes
-  const documents = await storeAndParseFile(fileBuffer, mimeType);
+  const documents = await storeAndParseFile(filename, fileBuffer, mimeType);
   return runPipeline(index, documents);
 }