Ошибка тайм-аута 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 игнорируется. В некоторых случаях стратегия высокого разрешения возвращается к быстрой, если отсутствует зависимость (т. е. модель разделения документа).

Другие вопросы по тегам