IBM推出Docling文档处理利器基于LangChain打造RAG应用
Docling 与 LangChain 的强强联合,正为 RAG 系统开辟全新的应用前景。 随着 AI 应用场景日益复杂,高效处理和检索文档信息已成为刚性需求。尽管大语言模型在生成与计算方面表现出色,但在文档处理环节仍存在不少短板。 本文从实战角度出发,系统拆解如何整合 Docling 与 Lang
Docling 与 LangChain 的强强联合,正为 RAG 系统开辟全新的应用前景。

随着 AI 应用场景日益复杂,高效处理和检索文档信息已成为刚性需求。尽管大语言模型在生成与计算方面表现出色,但在文档处理环节仍存在不少短板。
本文从实战角度出发,系统拆解如何整合 Docling 与 LangChain,构建一套真正可落地的检索增强生成(RAG)系统,使大模型在文档处理任务上的能力更上一层楼。
1 Docling:IBM 出品的文档处理利器
Docling 是 IBM 开源的一个工具库,核心理念是“一个接口搞定所有文档”。
无论面对 PDF、Word、PPT、Excel 还是网页内容,它都能以统一的逻辑进行解析与处理。这意味着开发者无需再为每种文件格式单独编写对接代码。
它具备以下硬核特性:
- 高级 PDF 处理:自动分析布局,深度解析复杂结构。
- 智能阅读顺序检测:按人类习惯的阅读顺序输出文档内容。
- 内置 OCR:扫描件中的文字也能一键识别并提取。
- 无缝格式转换:在不同文档格式之间顺畅转换。
- 原生集成:可与主流 AI 框架直接配合使用。
2 RAG 为何如此重要?
传统大语言模型(LLM)的最大局限体现在哪里?
- 只能依赖训练时学到的知识,无法实时更新。
- 无法获取特定领域的新信息。
- 容易产生幻觉,或给出过时、不准确的答案。
RAG 正好弥补了这一缺口:
- 让 LLM 能够访问外部、最新的知识库。
- 每个回答都可溯源,有据可查。
- 能整合特定领域的数据,生成更可靠的答案。
- 基于检索内容生成,大大减少幻觉现象。
3 RAG 架构解析
一套典型的 RAG 系统通常包含三个核心模块:
- 文档处理:将各种格式的原始文档转化为适合向量化的形式。
- 检索:从向量库中找出与问题最相关的内容片段。
- 生成:大语言模型根据检索到的上下文,输出最终答案。
而 Docling 与 LangChain 恰好各司其职:Docling 负责前端文档处理的“脏活累活”,LangChain 则提供检索与生成组件的框架支撑。
4 Docling 为何适合 RAG?
在动手实现之前,先厘清一个关键问题:为什么说 Docling 是 RAG 系统的理想搭档?
它能处理的格式足够全面:PDF、DOCX、PPTX、XLSX、图片、HTML……几乎覆盖所有日常场景。更重要的是,它不仅完成“转文字”,更具备深度文档理解能力,能够保留结构、表格、层级关系等关键信息。
与 LangChain 的集成开箱即用,文档表示的连贯性也非常出色——无论输入什么格式,输出都是统一的 Markdown 文本。再加上内置的 OCR 功能,扫描 PDF 也能直接处理,省去了额外的预处理步骤。
5 动手构建 RAG 系统
步骤1:创建文档加载器
首先需要一个自定义加载器,将 Docling 与 LangChain 连接起来。代码如下:
from typing import Iterator
from langchain_core.document_loaders import BaseLoader
from langchain_core.documents import Document as LCDocument
from docling.document_converter import DocumentConverter
class DoclingPDFLoader(BaseLoader):
def __init__(self, file_path: str | list[str]) -> None:
self._file_paths = file_path if isinstance(file_path, list) else [file_path]
self._converter = DocumentConverter()
def lazy_load(self) -> Iterator[LCDocument]:
for source in self._file_paths:
dl_doc = self._converter.convert(source).document
text = dl_doc.export_to_markdown()
yield LCDocument(page_content=text)
这个加载器的核心作用:将 Docling 处理后的文档转化为 LangChain 能够识别的 Document 对象。关键在于调用 export_to_markdown() 方法,保证文本表示统一,为后续处理奠定稳固基础。
步骤2:文档拆分
from langchain_text_splitters import RecursiveCharacterTextSplitter
loader = DoclingPDFLoader(file_path="../data/docling-tech-report.pdf")
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
)
docs = loader.load()
splits = text_splitter.split_documents(docs)
此处使用的示例文档是 Docling 的技术报告 PDF。
步骤3:设置嵌入
from langchain_huggingface.embeddings import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(
model_name="BAAI/bge-small-en-v1.5"
)
步骤4:配置向量存储
from langchain_milvus import Milvus
URI = "./milvus_example.db"
vectorstore = Milvus.from_documents(
splits,
embeddings,
connection_args={"uri": URI},
drop_old=True,
)
这里选用 Milvus 作为向量数据库,当然也可以根据需求替换为其他方案。
步骤5:设置语言模型
本次使用 Phi-4:14B 的 4 位量化版本,搭配 Ollama 做模型托管。请先安装好 Ollama,然后拉取模型:
ollama pull vanilj/Phi-4:latest
接着在代码中配置:
from langchain_ollama import OllamaLLM
llm = OllamaLLM(
model="vanilj/Phi-4:latest"
)
步骤6:构建 RAG 链
from typing import Iterable
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import RunnablePassthrough
def format_docs(docs: Iterable[LCDocument]):
return "\n\n".join(doc.page_content for doc in docs)
retriever = vectorstore.as_retriever()
prompt = PromptTemplate.from_template("""
Context information is below.
---------------------
{context}
---------------------
Given the context information and not prior knowledge, answer the query.
Query: {question}
Answer:
""")
rag_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
至此,整个 RAG 管道搭建完成。
6 使用 RAG 系统
response = rag_chain.invoke("Which AI models ha ve been released by docling team?")
print(response)
7 最佳实践与优化技巧
在实际落地 Docling + LangChain 的 RAG 系统时,以下几个环节值得重点打磨:
- 文档分块:根据具体用例调整 chunk 大小,并设置重叠部分避免断章取义。也可以尝试语义拆分以获得更优效果。
- 向量存储:根据数据规模和查询性能要求选择合适的方案,同时兼顾扩展性与运维成本。
- 提示工程:在提示词中明确要求利用上下文,并说明遇到不确定信息时的处理方式。
8 结语
Docling 扎实的文档处理能力,搭配 LangChain 灵活的框架设计,使得构建企业级文档问答、研究助手或知识管理工具变得更加可行。
值得一提的是,Docling 团队正在开发官方的 LangChain 原生扩展,届时集成将更加顺畅。预计会支持 LangChain 直接加载、增强元数据提取、更完善的文档结构保留以及原生表格处理等功能。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:IBM推出Docling文档处理利器基于LangChain打造RAG应用要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点基于人工智能的室内设计与虚拟布置平台,通过上传房间照片、手绘草图或SketchUp文件,自动识别空间结构并更换风格。核心功能包括草图转逼真渲染、3D漫游视频及虚拟布置,支持多种设计风格,提升可视化沟通效率。
OctoparseCEM是AI驱动的客户体验管理平台,聚合电商、社交媒体、客服工单等多渠道反馈,通过情感分析、客户旅程映射等功能,将非结构化数据转化为可操作洞察,助力产品优化、服务提升与业务增长。
在客户关系管理领域,如何让工具更智能地辅助市场决策?Odoo CRM 近期推出的一款扩展程序,或许给出了一个令人关注的答案——它直接将 OpenAI GPT-3 5 Turbo 与情感分析能力嵌入 CRM 工作流,使营销不再仅凭经验盲目判断。 什么是 Odoo CRM OpenAI GPT-3 5
联想与Meta合作,基于Llama大模型推出面向PC的个人AI智能体AINow。该产品由杨元庆和扎克伯格共同宣布,旨在将AI与混合现实技术普及。扎克伯格强调开源Llama可让联想微调模型以优化特定场景,并称开源是最高效、可定制且值得信赖的选择。
- 日榜
- 周榜
- 月榜
热点快看
