Langchain 非结构化目录加载器超时错误

问题描述 投票:0回答:2

我正在尝试加载一个包含表格和图形的非常大的复杂 PDF。大约有 600 页。当我在 Langchain-JS 和 NextJS 中使用非结构化 API 的快速选项时,它似乎可以工作,但没有收集一些必要的数据。但是,当使用 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();
javascript next.js langchain-js
2个回答
0
投票

这是选项的类型:

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”(默认)和“fast”。 高分辨率分区策略更准确,但需要更长的时间 过程。快速策略可以更快地对文档进行分区,但是 权衡准确性。并非所有文档类型都有单独的高分辨率和 快速分区策略。对于这些文档类型,策略 kwarg 被忽略。在某些情况下,高分辨率策略会后退 如果缺少依赖项(即文档的模型),则要快速 分区)。


0
投票

这在使用策略时对我有用:“hi_res”,

https://github.com/langchain-ai/langchainjs/issues/1856

© www.soinside.com 2019 - 2024. All rights reserved.