Ошибка тайм-аута Langchain UnstructuredDirectoryLoader
Я пытаюсь загрузить очень большой сложный PDF-файл, содержащий таблицы и рисунки. Это примерно 600 страниц. Когда я использую быстрый вариант с неструктурированным API в Langchain-JS с NextJS, кажется, что он работает, но не собирает некоторые необходимые данные. Однако при использовании опции hi_res выдается ошибка тайм-аута. Я пробовал устанавливать различные параметры тайм-аута, но безрезультатно. Меня вполне устраивает, что этот процесс занимает столько времени, сколько необходимо. Любая помощь будет очень высоко ценится.
ОШИБКА:
error TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:11576:11)
at UnstructuredLoader._partition (e:/Web-Development/Developing/Nextjs/projects/gpt4-pdf/node_modules/langchain/dist/document_loaders/fs/unstructured.js:139:26)
at UnstructuredLoader.load (e:/Web-Development/Developing/Nextjs/projects/gpt4-pdf/node_modules/langchain/dist/document_loaders/fs/unstructured.js:154:26)
at UnstructuredDirectoryLoader.load (e:/Web-Development/Developing/Nextjs/projects/gpt4-pdf/node_modules/langchain/dist/document_loaders/fs/directory.js:80:40)
at run (e:\Web-Development\Developing\Nextjs\projects\gpt4-pdf\scripts\ingest.ts:48:21)
at <anonymous> (e:\Web-Development\Developing\Nextjs\projects\gpt4-pdf\scripts\ingest.ts:78:3) {
cause: HeadersTimeoutError: Headers Timeout Error
at Timeout.onParserTimeout [as callback] (node:internal/deps/undici/undici:9748:32)
at Timeout.onTimeout [as _onTimeout] (node:internal/deps/undici/undici:8047:17)
at listOnTimeout (node:internal/timers:573:17)
at process.processTimers (node:internal/timers:514:7) {
code: 'UND_ERR_HEADERS_TIMEOUT'
}
}
Код, который я использую, где возникает ошибка:
const options = {
apiKey: process.env.UNSTRUCTURED_API_KEY,
strategy: "hi_res",
timeout: 10000, //Tried various from 10000-10000000
};
const unstructuredLoader = new UnstructuredDirectoryLoader(
filePath,
options
);
const rawDocs = await unstructuredLoader.load();
1 ответ
это тип опций:
export type UnstructuredLoaderOptions = {
apiKey?: string;
apiUrl?: string;
strategy?: StringWithAutocomplete<UnstructuredLoaderStrategy>;
encoding?: string;
ocrLanguages?: Array<string>;
coordinates?: boolean;
pdfInferTableStructure?: boolean;
xmlKeepTags?: boolean;
};
type UnstructuredDirectoryLoaderOptions = UnstructuredLoaderOptions & {
recursive?: boolean;
unknown?: UnknownHandling;
};
вам следует выбрать стратегию:
strategy?: StringWithAutocomplete<UnstructuredLoaderStrategy>;
тип стратегии
type UnstructuredLoaderStrategy = "hi_res" | "fast" | "ocr_only" | "auto"
Возможно, 600 страниц — это слишком много дляUnstructuredDirectoryLoader
. выбиратьfast
стратегия. отсюда
Загрузчик неструктурированных документов позволяет пользователям передавать параметр стратегии, который позволяет неструктурированному документу узнать, как разделить документ. В настоящее время поддерживаются стратегии «hi_res» (по умолчанию) и «быстро». Стратегии разделения Hi-Res более точны, но обработка занимает больше времени. Быстрые стратегии позволяют быстрее разбить документ, но при этом приходится жертвовать точностью. Не все типы документов имеют отдельные уровни разрешения и стратегии быстрого разделения. Для этих типов документов стратегический kwarg игнорируется. В некоторых случаях стратегия высокого разрешения возвращается к быстрой, если отсутствует зависимость (т. е. модель разделения документа).