Skip to content

Commit b162a11

Browse files
committed
Add use llama parse for file loader in TS template
1 parent 23e7cd3 commit b162a11

File tree

4 files changed

+31
-28
lines changed

4 files changed

+31
-28
lines changed

templates/components/llamaindex/typescript/documents/documents.ts

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ import {
99
storageContextFromDefaults,
1010
VectorStoreIndex,
1111
} from "llamaindex";
12-
import { DocxReader } from "llamaindex/readers/DocxReader";
13-
import { PDFReader } from "llamaindex/readers/PDFReader";
14-
import { TextFileReader } from "llamaindex/readers/TextFileReader";
1512
import crypto from "node:crypto";
1613
import { getDataSource } from "../../engine";
14+
import { getExtractors } from "../../engine/loader";
1715

1816
const MIME_TYPE_TO_EXT: Record<string, string> = {
1917
"application/pdf": "pdf",
@@ -58,23 +56,14 @@ async function runPipeline(
5856
}
5957

6058
async function loadDocuments(fileBuffer: Buffer, mimeType: string) {
61-
console.log(`Processing uploaded document of type: ${mimeType}`);
62-
switch (mimeType) {
63-
case "application/pdf": {
64-
const pdfReader = new PDFReader();
65-
return await pdfReader.loadDataAsContent(new Uint8Array(fileBuffer));
66-
}
67-
case "text/plain": {
68-
const textReader = new TextFileReader();
69-
return await textReader.loadDataAsContent(fileBuffer);
70-
}
71-
case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
72-
const docxReader = new DocxReader();
73-
return await docxReader.loadDataAsContent(fileBuffer);
74-
}
75-
default:
76-
throw new Error(`Unsupported document type: ${mimeType}`);
59+
const extractors = getExtractors();
60+
const reader = extractors[MIME_TYPE_TO_EXT[mimeType]];
61+
62+
if (!reader) {
63+
throw new Error(`Unsupported document type: ${mimeType}`);
7764
}
65+
console.log(`Processing uploaded document of type: ${mimeType}`);
66+
return await reader.loadDataAsContent(fileBuffer);
7867
}
7968

8069
async function saveDocument(fileBuffer: Buffer, mimeType: string) {

templates/components/loaders/typescript/file/loader.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1-
import { SimpleDirectoryReader } from "llamaindex";
1+
import {
2+
FILE_EXT_TO_READER,
3+
SimpleDirectoryReader,
4+
} from "llamaindex/readers/SimpleDirectoryReader";
25

36
export const DATA_DIR = "./data";
47

8+
export function getExtractors() {
9+
return FILE_EXT_TO_READER;
10+
}
11+
512
export async function getDocuments() {
613
return await new SimpleDirectoryReader().loadData({
714
directoryPath: DATA_DIR,
Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1+
import { LlamaParseReader } from "llamaindex/readers/LlamaParseReader";
12
import {
23
FILE_EXT_TO_READER,
3-
LlamaParseReader,
44
SimpleDirectoryReader,
5-
} from "llamaindex";
5+
} from "llamaindex/readers/SimpleDirectoryReader";
66

77
export const DATA_DIR = "./data";
88

9+
export function getExtractors() {
10+
const llamaParseParser = new LlamaParseReader({ resultType: "markdown" });
11+
const extractors = FILE_EXT_TO_READER;
12+
// Change all the supported extractors to LlamaParse
13+
for (const key in extractors) {
14+
extractors[key] = llamaParseParser;
15+
}
16+
return extractors;
17+
}
18+
919
export async function getDocuments() {
1020
const reader = new SimpleDirectoryReader();
11-
// Load PDFs using LlamaParseReader
21+
const extractors = getExtractors();
1222
return await reader.loadData({
1323
directoryPath: DATA_DIR,
14-
fileExtToReader: {
15-
...FILE_EXT_TO_READER,
16-
pdf: new LlamaParseReader({ resultType: "markdown" }),
17-
},
24+
fileExtToReader: extractors,
1825
});
1926
}

templates/types/streaming/nextjs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"duck-duck-scrape": "^2.2.5",
2525
"formdata-node": "^6.0.3",
2626
"got": "^14.4.1",
27-
"llamaindex": "0.4.6",
27+
"llamaindex": "0.5.3",
2828
"lucide-react": "^0.294.0",
2929
"next": "^14.2.4",
3030
"react": "^18.2.0",

0 commit comments

Comments
 (0)