30 秒看懂
2023 年 4 月,Matthew Berman 演示一个 Google Colab 笔记本:下载 PDF、使用 LangChain 和 Chroma 创建临时向量索引,然后查询 OpenAI 模型。尽管他将这一流程称为微调,它实际上是检索文档上下文,而不是更新模型权重。系统回答 Meta 2022 年收入为 1,042 亿美元是错误的:Meta 报告的数字为 1,166.09 亿美元。视频没有披露赞助商。
- 1PDF 检索而非微调笔记本为 PDF 内容建立索引并查询模型;它不会训练或更新模型权重。
- 2组成部分LangChain 协调工作流程,OpenAI API 提供模型服务,Chroma 在所示会话中存储向量。
- 3加载文档教程下载 PDF,将其放入 docs 文件夹并创建文档加载器。
- 4临时向量索引画面中的 Chroma 配置不持久化,因此其数据不会在运行时结束后保留。
- 5错误的财务回答模型称收入为 1,042 亿美元;Meta 官方公布的 2022 年收入为 1,166.09 亿美元。
要点建议
- 演示的方法是检索增强问答,而非模型微调:为文档文本建立索引不会改变模型权重。
- 2023 年的笔记本使用 LangChain、OpenAI API、PDF 工具和临时 Chroma 索引;API 和依赖可能已经变化。
- 画面中 Meta 2022 年收入为 1,042 亿美元的回答是错误的;Meta 报告的数字为 1,166.09 亿美元。
- 除非配置持久化,否则临时索引会随着运行时结束而丢失;API 调用可能将文档内容传给服务供应商。
- 不要将 API 密钥放入共享笔记本,应根据原始文档验证答案。
按章节阅读整理后的全文
Colab PDF 问答流程
Berman 介绍笔记本及其使用的库。该方法检索上下文,而非微调模型权重。
我展示一个 Google Colab 笔记本,用于就 PDF 提问并请求摘要。我将其称为微调 ChatGPT,但画面中的流程是检索增强问答:它为文档文本建立索引,并将检索到的上下文提供给模型,而不更新模型权重。视频录制于 2023 年 4 月,库接口可能已经变化。
笔记本借鉴了此前的一个 GitHub 项目,结合 LangChain、OpenAI API、Chroma 和 PDF 处理库。LangChain 连接各组件;文本被提取并以向量形式建立索引,以便针对问题检索相关段落。嵌入和模型调用可能涉及外部服务,因此文档内容和服务条款都很重要。

设置、加载 PDF 与建立索引
视频安装依赖、配置 API 密钥、下载 PDF 并创建索引。示例使用临时存储。
我运行安装单元并配置 OpenAI API 密钥。画面使用的是占位符,但实际使用时应通过密钥管理或环境机制保存密钥,而不要将其嵌入可能共享的笔记本。API 使用可能产生费用,旧版软件包和安装步骤不能保证在今天无需修改即可运行。
示例导入一个非结构化 PDF 加载器和向量存储索引创建器。我将文档处理配置为使用 CPU,并提到合适的 Colab GPU 可能加快部分操作。GPU 是否有帮助取决于安装的工具和工作负载;启用 GPU 不会通过微调改变模型。
我从网上下载 Meta 的财报 PDF,创建 docs 目录并将文件移入其中。我设置文件夹路径,并为其内容实例化加载器。如果使用其他 PDF,文件名和位置必须对应;扫描文档或复杂布局可能需要不同的提取方式或 OCR 处理。
遇到缺少依赖的问题后,我安装 Poppler 工具,然后根据加载器创建向量索引。输出显示嵌入式 Chroma 配置未启用持久化。在本次演示中,索引是临时的,除非配置持久化,否则会在 Colab 运行时结束后丢失。

查询并检查结果
Berman 询问收入和风险。生成的收入回答与 Meta 官方报告不符。

我问 Meta 在 2022 年取得了多少收入,画面中的回答是 1,042 亿美元。这个答案不正确:Meta 的[官方全年业绩](https://investor.atmeta.com/investor-news/press-release-details/2023/Meta-Reports-Fourth-Quarter-and-Full-Year-2022-Results/default.aspx)报告的收入为 1,166.09 亿美元。这说明为什么检索得到的答案,尤其是财务数字,必须与原始文档核对。
我还询问 Meta 面临的最大风险;回答概括了包括宏观经济状况在内的主题。我鼓励观众将笔记本用于其他文档和问题。检索与生成可能遗漏上下文或出错,因此即使结果有用,也仍需核实来源。
同频道的其他文章
34:21EN → 简体中文
0:26EN → 简体中文
0:36EN → 简体中文
0:21EN → 简体中文
25:50EN → 简体中文
32:20EN → 简体中文