00:00:00比起构建AI应用,我们花在处理文档上的时间要多得多。
00:00:05我们连接多个库,终于把PDF导入流水线,结果大模型给出的回答却很烂。
00:00:11不是模型不行,而是Markdown格式不行。
00:00:14这就是MarkItDown。
00:00:16这是一个由微软推出的工具,在GitHub上已经获得了超过11万颗星,
00:00:21而且它基本上只需一行代码就能修复整个流水线。
00:00:24几分钟后我就演示给你们看它是如何运作的。
00:00:30[音乐]
00:00:33好了,其实每个AI项目的起步方式都一样。
00:00:36到处都是文件:Word文档、幻灯片、电子表格、PDF截图,甚至还有音频文件。
00:00:43接着就是我们开发者最喜欢的那个酷炫环节了。
00:00:46我们可以开始堆叠工具了。
00:00:49我们要用专门处理PDF的工具、处理Excel的工具、处理Word的工具,对吧?
00:00:54我们需要把所有这些库连接起来,以搭建起整个处理流水线。
00:00:59起初感觉还行,确实能用。
00:01:02然后问题就开始出现了。
00:01:04表格结构丢失,标题消失,而且代币使用量显然开始飙升。
00:01:10现在,RAG(检索增强生成)流水线处理的基本上都是垃圾数据,导致智能体给出的回答也很糟糕。
00:01:16我们被迫忙着调试数据摄入,而不是专注于产品上线。
00:01:19说真的,这到底是在干嘛?
00:01:21这纯粹是在浪费时间。
00:01:22每周浪费的不仅是几分钟,而是几个小时。
00:01:25所以,与其去修复你的模型,不如去修复你的输入。
00:01:29让我来演示一下那具体是什么样子。
00:01:31如果你喜欢能加速工作流程的工具,一定要订阅。
00:01:35我们会持续发布相关视频。
00:01:37好了,让我快速演示一下。
00:01:39完全是Python实现的,非常简单。
00:01:42首先,我在虚拟环境中pip安装它。
00:01:45这里有个PDF文件,就叫doc.pdf。
00:01:48我可以直接在终端运行它。
00:01:50我运行 markitdown doc.pdf --output md。
00:01:55就是这么简单。
00:01:56它会自动帮我生成一个文件。
00:01:58我们可以打开那个文件,里面就是我们期望看到的。
00:02:03标题很整洁,表格看起来确实像表格,结构也保留了下来。
00:02:08现在当我们用Python编写代码时,可以利用它做更多事情。
00:02:13在导入包并使用OpenAI后,我可以创建一个客户端,然后创建一个markdown对象。
00:02:20我将传入我的API密钥和我们想要运行的模型。
00:02:25当我运行代码时,输出结果直接生成在我的终端里,非常干净。
00:02:29更棒的是,它还能处理PNG图像,这真的很酷。
00:02:33这次我用了一张来自NVIDIA的图表。
00:02:35这是我的图片,上面有一些数据。
00:02:39现在我可以把图表转换为Markdown格式。
00:02:42再次调用convert函数,让MarkItDown完成它的工作。
00:02:47这次我们传入的是图像,即我们的PNG文件。
00:02:50现在我们就得到了图表的摘要,以及我们可以提取并用于RAG的内容。
00:02:56这意义重大,因为它让我们能在代码中更快地提取所需信息,
00:03:01这样我们就可以继续工作,而无需在多个标签页之间来回切换。
00:03:05那么MarkItDown到底是什么?
00:03:07它是一个来自微软研究院的开源Python工具。
00:03:11它采用MIT许可证,是专门为大模型工作流构建的。
00:03:16它的作用是将杂乱的文件转换成整洁的Markdown格式。
00:03:19这样模型才能真正读懂它们。
00:03:22它支持的格式比我们预想的要多得多。
00:03:25Word、PowerPoint、Excel、PDF、音频、图像,还有链接等等,应有尽有。
00:03:32它现在甚至有了MCP服务器,所以你可以直接将其插入到Claude Desktop或你自己的智能体中。
00:03:40再加上插件功能。
00:03:41所以,与其辛苦搭建摄入流水线,我们现在基本上只需调用一个工具。
00:03:47开发者们苦恼的并不是模型不行,而是输入端出了问题。
00:03:51以前人们的预期是:嗯,只要用更好的模型就行了。
00:03:55但事实却是,更好的输入等于更好的输出。
00:04:00所以现在大家不再编写容易出错的脚本,而是使用MarkItDown这一种工具来处理所有事情。
00:04:06RAG流水线、智能体、微调数据集、知识库、文档分析,所有这些我们已经在做的事情。
00:04:13而大多数人忽略的关键细节是,它产生的是结构化、代币利用率高的Markdown。
00:04:20这意味着输入内容的噪音更少,但我们得到的答案和输出却更好。
00:04:24但这并不意味着它完美无缺。
00:04:26现在让我们把它和你可能正在使用或见过的工具对比一下。
00:04:31我们确实有一个叫Pandoc的工具,所以你可能会觉得Pandoc会赢,对吧?
00:04:36但它解决的问题和MarkItDown不同。
00:04:40Pandoc是面向人类的,用于发布、格式化、LaTeX文档等。
00:04:44MarkItDown是面向机器的,用于大模型、流水线和自动化。
00:04:48它们理念类似,但目标不同。
00:04:51还有像Unstructured或Docling这样的工具。
00:04:55它们很棒,但也确实非常繁重。
00:04:58它们使用机器学习模型,需要更多的配置,更适合处理极其复杂的文档。
00:05:03MarkItDown则采取了完全相反的路径。
00:05:05配置少、上手简单、结果产出快,而且对大多数文件来说已经足够好了。
00:05:11所以真正的权衡在于:
00:05:12你是想要完美的提取效果,还是想要一个快速且可靠的方案?
00:05:18对我们大多数人来说,速度才是关键。
00:05:20当然,它的缺点是复杂的PDF仍然会让它崩溃,对吧?
00:05:24特别是高密度表格或者排版奇葩的文档。
00:05:27如果你每天都要处理凌乱的标准文档,像Docling或Unstructured这样的工具会好得多。
00:05:32但如果你需要图像描述,你仍然需要接入大模型。
00:05:36所以它虽然不完美,但确实是一个解决实际问题的酷工具。
00:05:41那它值得使用吗?
00:05:43对于大多数人来说,绝对值得。
00:05:45如果你现在正在构建AI应用,这可能就是你的摄入层该有的样子。
00:05:50你应该尝试一下MarkItDown。
00:05:52如果你想为RAG或智能体获取干净的输入,试用一下吧。
00:05:56如果你需要处理混合文件类型。
00:05:58它真的很擅长处理这些。
00:05:59而且你肯定不想维护一堆容易崩溃的脆弱脚本,对吧?
00:06:03如果你每天都要处理极其复杂的PDF,那就跳过它或者把它整合进去。
00:06:08还有其他选择。
00:06:09如果你喜欢这类开源工具和编程技巧,一定要订阅Better Stack频道。
00:06:15我们下个视频再见。