手把手跑通 LiteLLM 文本提取:200 页 PDF 变可检索语料的四步实操
手把手跑通 LiteLLM 文本提取200 页 PDF 变可检索语料的四步实操【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm你手上有一份 200 页的产品手册 PDF要求今晚之前抽出关键信息。老办法是 pypdf 自己解析、手动切块、再逐家对接各家 API——光是鉴权、重试、算账就能耗掉一下午。LiteLLM 的文本提取管道RAG ingestion把上传、OCR、分块、向量化、入库压成一次aingest调用这篇文章带你走完整条链路。 场景一份 200 页 PDF传统解析法卡在哪200 页 PDF 纯文本粗估在 15 万字符量级直接塞给模型必然超上下文窗口只能先切块再逐块处理。切块本身不难难的是OpenAI、Bedrock、Azure 每家的鉴权头、重试策略、计费口径都不一样手写三套对接代码维护成本比业务本身还高pypdf 抽出的文本还夹着页眉页脚噪声切块边界一旦落在句子中间模型的理解会断片。所以老办法实际卡在三处多供应商重复对接、切块质量不稳定、没有统一的花费账本。这三件事恰好对应下面管道里的三个环节。4 步看懂 aingestLiteLLM 文本提取管道怎么转核心 API 只有一个from litellm import aingest背后是一条 5 步流水线——上传 → 可选 OCR → 分块 → 向量化 → 入库上传接收(文件名, 字节, content_type)三元组或直接给一个file_urlOCR纯文本 PDF 跳过扫描件走 OCR 配置可选分块默认 1000 token 一块、重叠 200 token按段落 → 换行 → 空格的递归分隔符切尽量不切断句子向量化 入库结果落进向量库响应里带vector_store_id和file_id文本抽取这一环在litellm/rag/ingestion/file_parsers/pdf_parser.py优先 pypdf失败回落到 PyPDF2。后端内置 openai、bedrock、gemini、s3_vectors、vertex_ai 五种摄取实现换供应商只改provider参数管道代码不动。最小 demo一段 aingest 把 PDF 送进向量库装好依赖直接跑pip install litellmfrom litellm import aingest with open(manual.pdf, rb) as f: result aingest( ingest_options{provider: openai}, file_data(manual.pdf, f.read(), application/pdf), ) print(result.status, result.file_id) # completed / 文件 IDstatus为completed说明分块和向量化都成功了拿到的file_id之后可以配检索接口做问答。如果文档是扫描件在ingest_options里加 OCR 配置即可不需要另写解析代码。三个最易踩的坑扫描件、静默失败、块太大扫描件直接出 0 块extract_text_from_pdf对没有文本层的纯图片 PDF 只会返回None此时必须在ingest_options里挂 OCR否则管道成功但库里是空的。失败是静默的pypdf 和 PyPDF2 都缺、或抽取结果为空时函数不抛异常而是返回None日志只打一句skipping text chunking。看到 0 块先查依赖别去查分块逻辑。块大小别乱调1000/200 这两个默认值可通过环境变量覆盖。块开太大会顶穿模型上下文窗口开太小则跨块信息被腰斩摘要质量肉眼可见地下降。 从单份 PDF 到批量文本提取花费与并发怎么算批量场景就是外层套个循环每块一次 completion 调用from litellm import completion for chunk in chunks: resp completion( modelgpt-4o-mini, messages[{role: user, content: f提取关键信息{chunk}}], )LiteLLM 每次调用都会按内置价格表自动折算spend200 份文档跑完你能拿到一张统一的花费清单不用自己对各家账单。检索侧用query()配retrieval_config即可把向量库召回结果喂给模型想观测每次调用的延迟和 token 数接上 Langfuse 后每个 trace 都带延迟、token 量和成本三项指标更多管道细节看这两处源码入口在 litellm/rag/main.py各供应商的摄取实现在 litellm/rag/ingestion/。【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻