Mindket

用 Qdrant、Mistral 和 OpenAI 做的德州税法助手

新上架第 1 版 · 更新于

概览

一个 n8n 工作流,下载德州税法,把各条法条用 Mistral 做嵌入存进 Qdrant,再加一个聊天窗口。OpenAI Agent 从最接近的法条里作答,也能按名称取出某一条或某一章。

用 Qdrant、Mistral 和 OpenAI 做的德州税法助手 是一款 n8n 工作流,属于法律类,由 Mindket 上架。可免费获取。当前为第 1 版,最近更新于 。在本页下载,或复制它的 JSON,再导入 n8n 画布。在 n8n 里启用之前,它不会运行。

速览

用在
  • n8n Cloud:导入文件,并使用一台能从互联网访问的 Qdrant 服务器
  • 你自己的 n8n 服务器:同一个文件,默认地址 http://qdrant:6333 适合服务名叫 qdrant 的 Docker 环境
  • 另一部法律:换掉压缩包地址和切分法条用的正则
  • 换一个模型:改 OpenAI Chat Model

平台

连接 3 个应用

运行方式

触发

手动启动

在 n8n 里点击 Test workflow 时开始运行,把法条加载进来。聊天部分在有人发消息时单独启动。加载这一步用到:

  • 压缩包的地址,在 Get Tax Code Zip File 里设置

动作

  1. 下载包含 56 个章节 PDF 的压缩包,解压后逐个文件读取
  2. 把每一章切成一条条法条,每条都有编号、标题和正文
  3. 用 Mistral 做嵌入,每次五条,存进 Qdrant
  4. 在聊天里,OpenAI Agent 会调用两个工具之一:按问题搜索,或者按法条或章节查找
  5. 工具返回匹配的法条,Agent 据此作答,并写明章节和条号

结果

一个存着法典各条的 Qdrant 集合,以及写明所依据章节和条号的聊天回答

集成

开始之前要准备好这些。

OpenAI

语言模型

为 Agent 运行 gpt-5.6-terra,由它决定调用哪个工具并写出回答。

需要OpenAI API 密钥

Mistral AI

嵌入

用 mistral-embed 把每条法条和每个问题变成向量。

需要Mistral API 密钥

Qdrant

向量数据库

连同章节和条号标签一起存放法条,并找出最接近某个问题的几条,或者某个法条、某一章对应的内容。

需要一台 n8n 能访问的 Qdrant 服务器,需要时还要它的 API 密钥

工作流检查

由 Mindket 于 2026年11月13日检查

步骤
23 个步骤,手动、由其他工作流调用或由聊天消息启动
AI
2 个步骤调用 AI 模型:Qdrant Vector Store、AI Agent
登录
需要登录:Qdrant、Mistral、OpenAI
API 密钥
文件里没有留下 API 密钥
步骤类型
Mindket 的检查器能读懂它 14 种步骤类型中的 13 种,读不懂的是:HTTP Request

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

关于

它是什么

这个 n8n 工作流做一个德州税法的聊天助手。第一部分从州政府公开的法规网站下载税法,是一个包含 56 个章节 PDF 的压缩包,并读出文字。它把每一章切成一条条法条,一共约 2,000 条,用 Mistral 做嵌入,存进 Qdrant 向量库。第二部分是和一个 OpenAI Agent 的聊天,Agent 有两个工具。一个找出最接近问题的四条法条,另一个按编号或名称取出某一条或整整一章。每个回答都会写明它来自哪一章哪一条。三十一个节点完成这些事,旁边还有七张便签。

适合谁

想看看怎样对一部很长的法律文本做检索、并且以法条而不是原始页面为单位的开发者。如果你需要最新的法律或法律意见,就别选它。回答来自你运行工作流那天加载的一份副本。

谁在用,怎么用
行业谁在用怎么用例子
法务律师助理为一个关于德州某项税的问题,查到背后的法条律师助理问谁必须缴纳特许经营税,再读 Agent 引用的法条。
会计记账人员在通读之前,先弄清某项税在哪一章记账人员让 Agent 给出某一章的全部法条。
软件n8n 搭建者把“带元数据的法条”这种做法用到另一部长文档上搭建者把压缩包地址和切分用的正则换成另一部法典的。
教育学生用平常的话向法律条文提问,并看到答案在哪里学生在聊天回答旁边读被引用的法条。

You need a fair amount of n8n: 要会配三个凭据、一台 Qdrant 服务器、第一次运行耗时较长,还要先保存工作流,工具才能用。工作流自带的便签没有给出设置时长。

用在哪里

任何能访问 OpenAI、Mistral、你的 Qdrant 服务器和州法规网站的 n8n 都能运行它。

  • n8n Cloud:导入文件,并使用一台能从互联网访问的 Qdrant 服务器
  • 你自己的 n8n 服务器:同一个文件,默认地址 http://qdrant:6333 适合服务名叫 qdrant 的 Docker 环境
  • 另一部法律:换掉压缩包地址和切分法条用的正则
  • 换一个模型:改 OpenAI Chat Model

设置

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

先准备好这些
需要说明
n8nn8n Cloud 或你自己的服务器
OpenAI一个能用 gpt-5.6-terra 的 API 密钥
Mistral一个用于嵌入的 API 密钥
Qdrant一台 n8n 能访问的服务器,需要时还要它的 API 密钥
  1. 在 n8n 里新建一个工作流,打开它的菜单,选 Import from File,选中 workflow.json。
  2. 添加一个 Mistral Cloud 凭据,在 Embeddings Mistral Cloud 和 Get Mistral Embeddings 里选中它。
  3. 添加一个 Qdrant 凭据,在 Qdrant Vector Store、Use Qdrant Search API1 和 Use Qdrant Scroll API 里选中它。你的 Qdrant 在别处的话,改掉那两个 HTTP 节点里的 http://qdrant:6333。
  4. 添加一个 OpenAI 凭据,在 OpenAI Chat Model 里选中它。
  5. 保存工作流。两个工具是按工作流自己的 id 调用它的,所以保存之后才能用。
  6. 点 Test workflow 把法条加载进来。它要运行一阵子:法条每次五条,每批之后停一秒。去 Qdrant 里看 texas_tax_codes 集合慢慢变满。
  7. 打开聊天,问一个法典能回答的问题,比如谁必须缴纳特许经营税。回答应该写明一个章节和一个条号。

如何使用

先点一次 Test workflow 把法条加载进来,然后用聊天。用平常的话提问,或者按名称要某一条或某一章。开放式的问题,Agent 调用提问工具;已知某一条或某一章,就调用查找工具。记忆会保留每个聊天会话最近的五轮对话。

想要不同的效果,改这里
要改的在哪里改
Agent 的规则AI Agent 里的系统消息
来源Get Tax Code Zip File,以及 Extract From Chapter 里的正则
一个问题读多少段落Use Qdrant Search API1 里的上限
模型OpenAI Chat Model
块的大小Recursive Character Text Splitter 里的块大小

示例

加载完成后,你问谁必须缴纳特许经营税。Agent 调用它的提问工具,工具用 Mistral 给问题做嵌入,再向 Qdrant 要最接近的四条法条。

Agent 根据这些法条写出回答,并写明每一条的章节和条号。接着你可以要求看某一条的全文,Agent 就带着那个编号调用它的查找工具。

新手与专家

新手:n8n 把工作流画成用线连起来的方框,每个方框是一个节点,只做一件事。这个文件里是两条流程合在一起。上面一条把法条加载一次,下面一条是 Agent 的工具所运行的。先做加载,看着 Qdrant 慢慢变满,再试聊天。

专家:两个工具调用的都是它们所在的那个工作流,靠一个 route 字段选择分支。

值得细看的地方
节点做什么要知道的
Extract From Chapter用三个正则表达式把每一章的文字切成法条它们只适合这个网站的版式,有四条法条仍留在前一条里面
Content Chunking @ 30k Chars把长法条切成最多 30,000 个字符的块它向上取整,所以最长的那一条不会丢掉结尾
Ask Tool 和 Search Tool用 route 调用这个工作流的 Tool Workflow 节点要先保存工作流,因为它们是按 id 调用的
Use Qdrant Scroll API按法条或章节过滤,并翻页取回匹配的内容章节名必须和存下来的名字完全一致

注意事项

加载耗时长,聊天是公开的,数据只是一个时点的副本。

  • 模型:OpenAI Chat Model 没有设置模型,所以 n8n 会用 gpt-5-mini,OpenAI 会在 2026 年 12 月 11 日把它关停。Mindket 的版本调用 gpt-5.6-terra,这是 OpenAI 弃用页面上写的替代模型,2026 年 11 月 12 日查阅
  • 下载:州政府原来的下载地址现在返回的是一个网页。这个副本用的是 https://tcss.legis.texas.gov/resources/Zips/TX.pdf.zip,2026 年 11 月 12 日查阅
  • 修复:切分法条的正则、每条法条上的章节名和分块大小都修过了。README 里逐条列了出来
  • 加载:约 2,000 条法条分批发给 Mistral,每批五条,批间停顿,而且把加载运行两次会把所有内容存两遍
  • 法条:有四条仍留在前一条里面,同一个块切出来的片段返回时顺序可能和法律里的不同
  • 公开的聊天:工作流一旦激活,任何拿到聊天地址的人都能花你的 OpenAI 和 Mistral 密钥
  • 不是法律意见:回答来自你运行工作流那天加载的一份法典副本
  • 你的数据:问题会发给 OpenAI 和 Mistral,法条文本是公开的
  • 凭据:JSON 里没有任何凭据

README 和文件

README

用 Qdrant、Mistral 和 OpenAI 做的德州税法助手

一个分成两部分的 n8n 工作流。第一部分从州政府公开的法规网站下载德州税法,把它切成一条条法条,用 Mistral 做嵌入,存进 Qdrant 向量库。第二部分是和一个 OpenAI Agent 的聊天,Agent 有两个工具。一个根据问题找出最接近的法条来回答,另一个按编号或名称取出某一条或整整一章。Agent 会写明它用的是哪一章哪一条。

包里有什么

  • workflow.json:n8n 导出的工作流,三十一个节点和七张便签。里面没有任何凭据。
  • README.md:这份设置说明,压缩包里的是英文版。

我们相对原来的副本改了什么

  • 州政府原来的下载地址现在返回的是一个网页,不是压缩包。这个副本下载 https://tcss.legis.texas.gov/resources/Zips/TX.pdf.zip,这是网站自己的下载清单里的地址,2026 年 11 月 12 日查阅。压缩包里有 56 个章节 PDF。
  • 把文字切成法条的那个正则,点号两边各只允许一到两位数字,所以几乎哪里都切不开。另外两个正则遇到 41A 这样的条号就出错。三个现在都改成 \nSec\.\nA[0-9]{1,4}[A-Z]?\.[0-9]{1,5}[A-Z]?\.AA。用 n8n 的 PDF 文字步骤的本地副本在全部 56 个文件上运行,得到 2,030 条法条,每个文件里的编号数量和正文数量都一样多。
  • Map To Sections 原来对每一条法条都取第一个 PDF 的章节名,所以每条法条带的章节名都一样。现在改成取这条法条所在 PDF 的章节名。
  • 分块节点的名字写的是 50,000 个字符,实际切的是 30,000,而且它的份数向下取整。最长的一条法条有 38,277 个字符,结尾被丢掉了。现在节点向上取整,依次每 30,000 个字符切一块,并改名为 Content Chunking @ 30k Chars。
  • OpenAI Chat Model 没有设置模型,所以 n8n 用了这个节点版本的默认值 gpt-5-mini,OpenAI 会在 2026 年 12 月 11 日把它关停。现在改成调用 gpt-5.6-terra,这是 OpenAI 弃用页面上写的替代模型,2026 年 11 月 12 日查阅。
  • Search Tool 里的示例把法条写成 Sec 1.01。存下来的编号是 1.001 这样的纯数字,所以示例改成了这样。
  • 一张便签原来邀请读者去一个聊天社区和论坛,最后那一段已经删掉。
  • 凭据关联和 webhook id 已删掉。请选你自己的凭据。

开始之前

  • 一个 n8n 实例,n8n Cloud 或自己的服务器都行。
  • 一个 OpenAI API 密钥和一个 Mistral API 密钥。
  • 一台 n8n 能访问的 Qdrant 服务器,需要时还要它的 API 密钥。n8n Cloud 需要一台能从互联网访问的。

设置

  1. 在 n8n 里新建一个工作流,打开它的菜单,选 Import from File,选中 workflow.json。
  2. 添加一个 Mistral Cloud 凭据,在 Embeddings Mistral Cloud 和 Get Mistral Embeddings 里选中它。
  3. 添加一个 Qdrant 凭据,在 Qdrant Vector Store、Use Qdrant Search API1 和 Use Qdrant Scroll API 里选中它。
  4. 你的 Qdrant 在别处的话,改掉那两个 HTTP 节点里的 http://qdrant:6333。集合名 texas_tax_codes 写在它们的地址里,也在 Qdrant Vector Store 里。
  5. 添加一个 OpenAI 凭据,在 OpenAI Chat Model 里选中它。
  6. 保存工作流。两个工具是按工作流自己的 id 调用它的,所以保存之后才能用。
  7. 点 Test workflow 加载法典。它要运行一阵子。法条每次五条,每批之后停一秒,大约有 400 批。去 Qdrant 里看集合慢慢变满。
  8. 打开聊天,问一个法典能回答的问题,比如谁必须缴纳特许经营税。回答应该写明一个章节和一个条号。

加载的过程

  1. Get Tax Code Zip File 下载压缩包,Extract Zip Files 解压,Files as Items 把每个 PDF 变成一个条目。然后 Extract PDF Contents 读出每个的文字。
  2. 在 Extract From Chapter 里,文字被切成一条条法条,同时生成编号清单。之后 Map To Sections 把每个编号和它的标题、正文配对,并加上章节名。接着 Sections To List 为每条法条生成一个条目,Only Valid Sections 去掉空的。
  3. For Each Section... 每次取五条法条。长的法条由 Content Chunking @ 30k Chars 和 Split Out Chunks 切成大块。
  4. Qdrant Vector Store 把它们做嵌入并存起来。Recursive Character Text Splitter 把每块切到 2000 个字符,Default Data Loader 加上元数据 chapter、section、title 和 content_order。然后 1sec 等一秒,循环继续。

聊天的过程

When chat message received 把每条消息交给 AI Agent,配上 Window Buffer Memory 和 OpenAI Chat Model。Agent 有两个工具,每个都通过 Execute Workflow Trigger 和 Switch 运行这个工作流的下半部分。

  • Ask Tool(query_tax_code_knowledgebase)把问题交给 Get Mistral Embeddings,再交给 Use Qdrant Search API1,后者要最接近的 4 个点。Get Ask Response 把它们作为一张含章节、条号、标题和正文的表返回。
  • Search Tool(get_tax_code_section)接收一个 section 或一个 chapter。Use Qdrant Scroll API 在给了条号时按 metadata.section 过滤,否则按 metadata.chapter 过滤,并每次 100 个地翻页取回匹配的内容。Get Search Response 按 content_order 排好片段,在一个简短的表头下返回。

改变样子

  • Agent 的规则:AI Agent 里的系统消息。
  • 来源:Get Tax Code Zip File,以及 Extract From Chapter 里的正则,它们只适合这个网站的版式。
  • 一个问题读多少段落:Use Qdrant Search API1 里的上限。
  • 模型:OpenAI Chat Model。
  • 块的大小:Recursive Character Text Splitter 里的块大小。

值得知道的

  • 把加载再运行一次,会把每条法条再存一遍,因为每次运行都存新的点。请先删掉集合。
  • 四条法条,151.3185、155.105、171.602 和 311.0031,在源文件里编号后面没有分隔符。切分之后,它们各自留在前一条法条里面。
  • content_order 是条目在这一批里的位置。同一个 30,000 字符的块切出来的片段共用一个编号,所以 Search Tool 返回它们的顺序可能和法律里的不同。
  • 章节查找要匹配存下来的完整名字,比如 TAX CODE CHAPTER 171. FRANCHISE TAX。Agent 只有见过这样的名字才能给出来。
  • 加载会把大约四百万个字符发给 Mistral 做嵌入,至少 3,000 个片段。Mistral 的速率限制适用,停顿和批大小就是为它设的。
  • 工作流一旦激活,聊天就是公开的,所以任何拿到它地址的人都能花你的 OpenAI 和 Mistral 密钥。
  • 回答来自你运行工作流那天加载的一份法典副本,不是法律意见。
  • 问题会发给 OpenAI 和 Mistral。法条文本是公开的。
文件
NOTICE.md  678 B
README.md  7 KB
workflow.json  30 KB

3 个文件,共 37 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 的创作者。

新上架

法律类的相似商品

查看法律类的全部商品

rizzo-pii-0.3B

rizzoaiacademy · 工具包

一个小型、适合 CPU 的模型,能在意大利语法律文本中找出 22 类个人数据,包括 codice fiscale 和 partita IVA,用于可还原的匿名化。适合律师事务所和开发隐私过滤器的开发者。

新上架

PII-Tracer

perplexity-ai · 工具包

在聊天对话里找出个人数据并遮盖,用一个 600M 参数的编码器,带词元标注和敏感度打分。适合在使用前清理对话日志的团队。

新上架

privacy-filter-nemotron-v2

OpenMed · 工具包

在文本里找出并遮盖个人数据,涵盖姓名、联系方式和各类 ID 等 55 个细分类别。适合在分享或存储文本之前先做脱敏的团队。

新上架