Mindket

通过 webhook、用 Qdrant 回答 PDF 报告问题

新上架第 1 版 · 更新于

概览

一个分两部分的 n8n 工作流。一部分把 Google Drive 里的 PDF 存进 Qdrant 集合,之后由 webhook 用 OpenAI 模型和最接近的五段来回答关于它的问题。

通过 webhook、用 Qdrant 回答 PDF 报告问题 是一款 n8n 工作流,属于财务类,由 Mindket 上架。可免费获取。当前为第 1 版,最近更新于 。在本页下载,或复制它的 JSON,再导入 n8n 画布。在 n8n 里启用之前,它不会运行。

速览

用在
  • n8n Cloud:在那里新建一个工作流,把文件导入进去
  • 你自己的 n8n 服务器:同一个文件,同样的步骤,再配上一个你的工具能访问到的 webhook 地址
  • 另一个前端:能发出 input 和 company 的表单、机器人或脚本,都可以来提问
  • 另一个文件来源:把 Google Drive 节点换成任何能把 PDF 作为二进制数据放进 data 的节点

平台

连接 3 个应用

运行方式

触发

Webhook 调用

某个程序或脚本向 pdf-question 这个 webhook 发出 POST 时开始运行,请求里有:

  • 问题,放在 input 字段里
  • 要搜索的 Qdrant 集合的名称,放在 company 字段里

动作

  1. 事先手动运行一次:从 Google Drive 下载你的 PDF,切成若干段,存进 Qdrant
  2. OpenAI 把问题变成一个向量
  3. Qdrant 从你指定的集合里返回最接近的五段
  4. OpenAI 聊天模型根据这几段写出回答
  5. webhook 把回答作为纯文本回复

结果

一份纯文本的回答,内容来自你存进去的那份 PDF

集成

开始之前要准备好这些。

OpenAI

语言模型

把每一段和每个问题变成向量,并根据最接近的五段写出回答。

需要OpenAI API 密钥

Qdrant

向量库

把 PDF 的各段作为向量存起来,并为每个问题返回最接近的五段。

需要一个 n8n 能访问到的 Qdrant 实例,要有它的地址,需要的话还要 API 密钥

Google Drive

PDF 来源

按文件 ID 下载你指定的那份 PDF。

需要一个 Google 账号,用于 Google Drive OAuth2 凭据,再加 Drive 里的一份 PDF

工作流检查

由 Mindket 于 2026年11月13日检查

步骤
6 个步骤,由 Webhook 调用或手动启动
AI
2 个步骤调用 AI 模型:Retrieval QA Chain、Qdrant Vector Store
登录
需要登录:Qdrant、OpenAI、Google Drive
API 密钥
文件里没有留下 API 密钥
步骤类型
Mindket 的检查器能读懂它 6 种步骤类型中的 5 种,读不懂的是:Vector Store Qdrant

以上内容读自工作流文件,并非实际运行的结果。

关于

它是什么

这个 n8n 工作流让你就一份 PDF 报告提问,答案通过一个网址返回。第一部分从 Google Drive 下载 PDF,切成若干段,用 OpenAI 把每一段变成向量,再存进一个 Qdrant 集合。第二部分是一个 webhook。你发来一个问题,工作流找出最接近的五段,再由 OpenAI 聊天模型根据它们写出回答。十三个节点完成这些事,旁边还有两张便签。

适合谁

想对着一份很长的报告提问、又不想从头读到尾的分析师、小型财务团队和搭建者。想弄懂向量库和检索链怎么配合的人也适合。如果你需要同时跨很多份报告作答,就别选它,因为每个问题只搜索一个集合。

谁在用,怎么用
行业谁在用怎么用例子
金融分析师问一份长报告它对风险、成本或前景怎么说一位分析师问年报里点名了哪些风险。
投资个人投资者在采取行动之前,先核对申报文件里的一个说法一位投资者问一家公司报告了多少现金。
运营小企业团队在一份很长的制度或合同前面放一个提问框一位经理问供应商合同还要执行多久。
软件开发者把它当作一个小模型,用来搭自己文件的检索流程一位开发者换掉 PDF,其余保持不变。

你需要会一点 n8n:导入文件、添加三个凭据,并用一段 JSON 调用 webhook。文件里没有写设置要多久。

用在哪里

任何能访问 OpenAI、Google Drive 和一个 Qdrant 实例的 n8n 都能运行它。

  • n8n Cloud:在那里新建一个工作流,把文件导入进去
  • 你自己的 n8n 服务器:同一个文件,同样的步骤,再配上一个你的工具能访问到的 webhook 地址
  • 另一个前端:能发出 input 和 company 的表单、机器人或脚本,都可以来提问
  • 另一个文件来源:把 Google Drive 节点换成任何能把 PDF 作为二进制数据放进 data 的节点

设置

点“下载”会把一个压缩包存到你的下载文件夹,里面有 workflow.json 和 Mindket 写的设置说明。三个账号就够完成所有步骤。

先准备好这些
需要说明
n8nn8n Cloud 或你自己的服务器
OpenAI一个 API 密钥,两个嵌入节点和聊天模型都要用
Google一个账号,用于 Google Drive OAuth2 凭据,再加 Drive 里的一份 PDF
Qdrant一个 n8n 能访问到的实例,要有它的地址,需要的话还要 API 密钥
  1. 在 n8n 里新建一个工作流,打开它的菜单,选 Import from File,选中 workflow.json。
  2. 添加 OpenAI 凭据,在 Embeddings OpenAI、Embeddings OpenAI1 和 OpenAI Chat Model 里选中它。
  3. 添加 Google Drive 凭据,在 Google Drive 里选中它。把 YOUR_FILE_ID 换成你那份 PDF 的 ID,也就是它在 Drive 里地址中那一长串。
  4. 用你的地址和密钥添加 Qdrant API 凭据,在 Qdrant Vector Store 和 Qdrant Vector Store1 里选中它。
  5. 打开 OpenAI Chat Model,选一个当前可用的模型。文件里没有指定,所以 n8n 会填上 gpt-5-mini。OpenAI 的弃用页面(2026 年 11 月 12 日查看)给出它的停用日期是 2026 年 12 月 11 日,并指定 gpt-5.6-terra 作为替代。
  6. 点一次 Execute Workflow,把 PDF 存进名为 crowd 的集合。
  7. 在 Webhook1 上开始监听测试事件,把问题发到 /webhook-test/pdf-question,或者发布工作流后改用 /webhook/pdf-question。

如何使用

向 webhook 发一段带两个字段的 JSON。input 放你的问题,company 写要搜索的集合名。回复就是纯文本的回答。再把另一份 PDF 存进它自己的集合,换一个 company 的值,就会搜索那一个。

想要不同的效果,改这里
要改的在哪里改
文件Google Drive 里的 ID
集合Qdrant Vector Store 里的名称,以及你发出的 company 字段
分段大小Recursive Character Text Splitter,3000 个字符,重叠 200
模型能看到几段Vector Store Retriever 里的 topK,是 5
模型OpenAI Chat Model

示例

你存进一份年报,问它点名了哪些风险。

你发出 {"input": "Which risks does the report name?", "company": "crowd"}。问题变成向量,Qdrant 返回最接近的五段。模型根据它们写出回答,webhook 把这段文字回复出去。任何数字都请对照 PDF 核对,因为模型只看到了五段。

新手与专家

新手:n8n 把工作流画成用线连起来的方框,每个方框是一个节点,只做一件事。向量库把每一段文字存成一串数字,所以一个问题能找到意思最接近的段落。上面那组存 PDF,下面那组作答。上面那组跑一次,下面那组就一直等着。

专家:两个 Qdrant 节点按名称共用一个集合,而 webhook 为每个请求挑选集合。

值得细看的地方
节点做什么要知道的
Qdrant Vector Store1 版,insert 模式,集合 crowd集合不存在时它会创建。再运行一次,这些段就会再存进去一遍
Qdrant Vector Store11 版,集合 {{ $json.body.company }},接到 Vector Store Retriever集合由调用方挑选,所以任何能调用 webhook 的人,都能搜索那个 Qdrant 实例上的任何集合
Retrieval QA Chain1 版,查询 {{ $json.body.input }}它的输出是 response.text,Respond to Webhook 把它当文本返回
Webhook11.1 版,pdf-question 上的 POST,由一个节点回复它没有登录验证

注意事项

webhook 是开放的,而且由调用方指定集合。

  • 开放的 webhook:Webhook1 没有登录验证,所以工作流一发布,任何知道它地址的人都能提问,并花掉你的 OpenAI 密钥
  • 集合:调用方的 company 值决定搜索哪个集合,所以请用一个只放你愿意公开内容的 Qdrant 实例,或者自己加一道检查
  • 重复运行:第一部分每次都会把这些段再存一遍,所以每份文件只运行一次
  • 嵌入:两个嵌入节点必须用同一个模型,因为集合里的向量长度是固定的。它们到你手里时用的是节点的默认值
  • 模型:文件里没有指定聊天模型,n8n 会填上 gpt-5-mini,OpenAI 会在 2026 年 12 月 11 日停用它。第 5 步给出了替代模型
  • 计费:每个问题至少计一次嵌入调用和一次模型调用
  • 你的数据:报告的文字和每个问题都会发给 OpenAI。Qdrant 存着那些分段
  • 准确性:回答依据的是五个分段,所以重要的内容请对照 PDF 核对
  • 一处修复:原始副本接了一个聊天触发器,它发出问题的字段是链不会读的。Mindket 的副本把它去掉了
  • 凭据:这个 JSON 里没有任何凭据

README 和文件

README

通过 webhook、用 Qdrant 回答 PDF 报告问题

一个分两部分的 n8n 工作流。第一部分从 Google Drive 读一份 PDF,切成若干段,存进一个 Qdrant 集合。第二部分守在一个 webhook 上等着:你发来一个问题,它找出最接近的五段,交给 OpenAI 聊天模型,再把回答放进回复里发回去。

里面有什么

  • workflow.json:n8n 导出的工作流,13 个节点,另有 2 张便签。里面没有任何凭据。
  • README.md:这份说明。

我们对原始副本做了哪些改动

Mindket 修正了原始副本里几处会让你绊倒的地方:

  • Google Drive 节点里留着它作者自己的文件 ID。现在它写的是 YOUR_FILE_ID,你换成自己的。
  • webhook 的路径原来是一长串随机字符。现在它是 pdf-question。
  • 原始副本在回答链上接了一个聊天触发器。这个触发器把消息放在名为 input 的字段里,而链读的是 body.input,所以从 Chat 窗口提问会失败。Mindket 去掉了这个触发器。
  • 有两张便签提到的是 Supabase,而节点用的是 Qdrant。Mindket 改写了它们,并去掉了第三张只指向一个视频的便签。
  • 工作流到你手里时是关闭的,里面也没有任何凭据。

开始之前

  • 一个 n8n 实例,n8n Cloud 或你自己的服务器都行。
  • 一个 OpenAI API 密钥。
  • 一个 Google 账号,用于 Google Drive OAuth2 凭据,再加你 Drive 里的一份 PDF。
  • 一个 n8n 能访问到的 Qdrant 实例,要有它的地址,需要的话还要 API 密钥。

设置步骤

  1. 在 n8n 里新建一个工作流,打开它的菜单,选 Import from File,选中 workflow.json。
  2. 添加 OpenAI 凭据,在 Embeddings OpenAI、Embeddings OpenAI1 和 OpenAI Chat Model 里选中它。
  3. 添加 Google Drive 凭据,在 Google Drive 里选中它。把 YOUR_FILE_ID 换成你那份 PDF 的 ID,也就是它在 Drive 里地址中那一长串。
  4. 用你的 Qdrant 地址和密钥添加 Qdrant API 凭据,在 Qdrant Vector Store 和 Qdrant Vector Store1 里选中它。
  5. 打开 OpenAI Chat Model,选一个当前可用的模型。文件里没有指定,所以 n8n 会填上 gpt-5-mini。OpenAI 的弃用页面(2026 年 11 月 12 日查看)给出它的停用日期是 2026 年 12 月 11 日,并指定 gpt-5.6-terra 作为替代。
  6. 点一次 Execute Workflow。PDF 会存进名为 crowd 的集合,集合不存在时会被创建。
  7. 在 Webhook1 上开始监听测试事件,再发一个问题:
curl -X POST https://YOUR-N8N-ADDRESS/webhook-test/pdf-question \
  -H "Content-Type: application/json" \
  -d '{"input": "What are the main risks this report names?", "company": "crowd"}'

工作流一发布,同样的调用改发到 /webhook/pdf-question。

一次运行是怎么走的

第一部分在你点 Execute Workflow 时运行:

  1. When clicking "Execute Workflow" 开始运行。
  2. Google Drive 下载你设了 ID 的那个文件。
  3. Binary to Document 读取 PDF 的二进制字段 data,把它的各页变成文档。
  4. Recursive Character Text Splitter 把它们切成 3000 个字符一段,段与段重叠 200 个字符。
  5. Embeddings OpenAI 把每一段变成向量,Qdrant Vector Store 把这些向量插入集合 crowd。

第二部分在有问题进来时运行:

  1. Webhook1 接收 pdf-question 上的一个 POST,并把回复留着,直到有节点作答。
  2. Retrieval QA Chain 从 body.input 读出问题。
  3. Qdrant Vector Store1 搜索 body.company 里写的那个集合,由 Embeddings OpenAI1 把问题变成向量。Vector Store Retriever 留下最接近的五段。
  4. OpenAI Chat Model 根据这几段写出回答。
  5. Respond to Webhook 把回答作为纯文本发回去。

想改样子,改这里

  • 集合:存入时用 Qdrant Vector Store 里的名称,提问时用你发出的 company 字段。两者要保持一致。
  • 分段大小和重叠:Recursive Character Text Splitter。
  • 链能看到几段:Vector Store Retriever 里的 topK,文件里是 5。
  • 模型:OpenAI Chat Model。
  • 换一份文件:Google Drive 里的 ID。想把几份报告分开保存,就给每份用一个新的集合名。

要知道的

  • company 字段决定搜索哪个集合,所以一个对不上任何集合的名称,就不可能返回回答。
  • 第一部分每运行一次,就会把这份文件的各段再存一遍,而且不会清空集合,所以每份文件只运行一次。
  • 两个嵌入节点必须用同一个模型,因为集合里的向量长度是固定的。它们到你手里时用的是节点的默认值。
  • 每个问题至少计一次嵌入调用和一次模型调用。
  • 报告的文字和每个问题都会发给 OpenAI。Qdrant 存着那些分段。
  • 这个 webhook 没有登录验证。工作流一发布,任何知道它地址的人都能提问,并花掉你的 OpenAI 密钥。
  • 回答依据的是拿到的五个分段,所以重要的内容请对照 PDF 核对。
  • 这个 JSON 里没有任何凭据。
文件
NOTICE.md  617 B
README.md  5 KB
workflow.json  8 KB

3 个文件,共 13 KB,以 zip 压缩包下载。

更新内容

  • 第 1 版 · 2026-11-12

评价

还没有评分

写评价

还没有评价。

Mindket 的更多商品

查看 Mindket 的全部商品

anaksor-ocr

Sokheng · 工具包

这个模型从文档、收据和路牌照片里读取高棉语和英语文字,用一个检测器找文本行,再用识别器读每一行。适合需要在 Python 里做高棉语 OCR 的开发者。

新上架

Qwen2.5-7B-Instruct-GGUF

Qwen · 工具包

Qwen2.5-7B-Instruct 的 GGUF 文件,提供八种量化大小,可通过 llama.cpp 在本地聊天。适合想在自己电脑上用 7.6B 强力模型、又不想搭 Python 环境的人。

新上架

ACE-Step 1.5 XL SFT

ACE-Step · 工具包

用 4B 扩散解码器根据文字生成音乐,50 步并带引导控制,音频质量高于基础版。适合拥有 12 GB 或更多显存 GPU 的创作者。

新上架

财务类的相似商品

查看财务类的全部商品

Kronos-mini

NeoQuasar · 工具包

用一个 4.1M 参数、基于 45 多家交易所数据训练的基础模型来预测金融 K 线序列。适合想用小模型做价格预测实验的量化研究人员和开发者。

新上架

一个归档发票的 n8n 工作流。它盯着一个 Google Drive 文件夹,把每个新文件交给 LlamaParse 读取,再由 OpenAI 模型取出明细行,Airtable 里得到一条发票记录和每个明细行各一条记录。

新上架免费