AI PLAY玩法更新持续收录
← 回到更新流

2026-09-18 · 原文发布日

用n8n表单和Agent工具管理Gemini File Search知识库

面向搭建RAG的人:这个模板既是n8n Agent的工具,接收action、storeName、query等字段调用Google的生成式接口,完成列库、建库、 grounding查询、列文档、删文档(删库须显式传force);另一条线是n8n表单接收文件上传,新建或指定已有File Search库并导入索引,完成页给出查询用的库ID。适合想免代码管理Gemini文档检索库的用户。

原文要点

模板页说明该n8n工作流有两条线:一是作为Agent工具接收action、storeName、documentName、query、force等字段,规范化后路由到列库、建库、取状态、grounding查询、列文档、删文档;删整库必须显式force,否则返回需要force的错误。二是n8n表单收文件,可新建或指向既有fileSearchStores/... ID,上传并导入Gemini File Search索引,完成页显示后续查询用的storeName。设置需Google Generative Language凭据,发布表单公开URL,Agent要以分开字段传参;页面提到可调整pageSize与默认gemini-2.5-flash,未提供可导入JSON。

这次做成什么

照本站方案在n8n里复刻两条可测链路:表单上传文档进Gemini File Search并回显库ID;Agent工具用分字段action管理同一库。不提供原工作流下载,下面为独立字段映射与测试数据,未核实的按钮名以你账号为准。

准备什么

  • n8n实例可新建工作流、表单触发器与Agent工具,且能发布公开表单URL
  • 已配置Google Gemini/Google PaLM或Generative Language API凭据,且有File Search与Gemini模型权限
  • 准备一两个无敏感信息的练习PDF或TXT,大小先保持很小
  • 知道既有库ID形如fileSearchStores/...,没有就先用建库流程
  • Google接口与模型可能计费,先用隔离项目与低配额测试

具体怎么做

  1. 接上Agent工具入口

    把该模板思路加为Agent的Tool;要求Agent只送分开字段action、displayName、storeName、documentName、query、force,不把JSON塞进query。入口后先规范化空值、trim字符串、把缺省force设为false。

  2. 按action分支到七个操作

    用Switch或等价逻辑按action分流:listStores、createStore、getStore、query、listDocuments、deleteDocument、deleteStore。createStore用displayName;query必须带storeName和query;deleteDocument要带storeName与documentName;deleteStore在force不为true时直接返回需要显式force,不调用删除。

  3. 配置Google调用与输出字段

    各分支统一走已配置的Google凭据;返回给Agent的字段固定为ok、action、storeName、message、items或answer。查询分支把Gemini grounding答案放入answer,并把命中文档名放入citations;列表分支把名称数组放入items。

  4. 发布上传表单并导入索引

    另建表单触发器,字段含file、mode、existingStoreName、newStoreDisplayName。mode=existing时校验existingStoreName非空;mode=new时先建库。逐个文件上传并导入File Search,最后完成页显示storeName、导入文件数、失败文件名,提示复制该ID给Agent工具。

  5. 用一条测试数据收尾

    先发下方测试JSON给工具入口做createStore,再用表单上传练习文件到返回的storeName,最后action=query问一个只能由该文档回答的问题;删除库演练只在force=true时执行,测试后清理隔离项目。

可直接复制的材料

Agent工具输入与返回字段映射

本站独立示例配置,不是可导入n8n工作流;分支名可在原模板/你账号中核对。

{
  "toolInput": {
    "action": "listStores|createStore|getStore|query|listDocuments|deleteDocument|deleteStore",
    "displayName": "仅createStore必填,人类可读库名",
    "storeName": "查询、列文档、删文档、删库必填,形如fileSearchStores/abc123",
    "documentName": "仅deleteDocument必填",
    "query": "仅query必填,自然语言问题",
    "force": "布尔,缺省false;仅deleteStore为true才允许删整库"
  },
  "normalize": {
    "trim": ["action", "displayName", "storeName", "documentName", "query"],
    "default": {"force": false},
    "rejectIf": ["action为空", "query时storeName或query为空", "deleteStore且force不为true"]
  },
  "toolOutput": {
    "ok": true,
    "action": "回显实际执行动作",
    "storeName": "返回相关库ID",
    "message": "给人看的简短结果",
    "items": [],
    "answer": "query分支填写",
    "citations": []
  }
}

一条隔离测试数据

REPLACE_WITH_RETURNED_ID必须换成建库返回;内容为虚构,不含密钥。

{
  "firstToolCall": {"action": "createStore", "displayName": "aiplay-sandbox-kb", "force": false},
  "formUpload": {"mode": "existing", "existingStoreName": "fileSearchStores/REPLACE_WITH_RETURNED_ID", "file": "sandbox_note.txt"},
  "sandbox_note.txt": "AI PLAY沙盒条款:蓝莓客服热线只在工作日9点到17点提供,测试口令是ORANGE-77。",
  "queryCall": {"action": "query", "storeName": "fileSearchStores/REPLACE_WITH_RETURNED_ID", "query": "测试口令是什么,客服热线什么时间提供?", "force": false},
  "cleanup": {"action": "deleteStore", "storeName": "fileSearchStores/REPLACE_WITH_RETURNED_ID", "force": true}
}

给Agent的使用规则提示词

本站编写的护栏提示词,可按团队措辞改。

你调用Gemini File Search管理工具时必须把action、displayName、storeName、documentName、query、force作为独立字段发送,不要把JSON拼进query。列库用listStores;建库用createStore并给displayName;查状态用getStore;问答用query且必须带storeName;列文档用listDocuments;删单个文档用deleteDocument且带documentName。除非用户明确说永久删除整个库并复述库ID,否则不要把force设为true;删整库前必须先listDocuments并让用户确认数量。

输入与输出示例

本站虚构示意,未运行;真实返回结构以Google API与原模板节点为准。

输入

向工具入口发:{"action":"query","storeName":"fileSearchStores/demo123","query":"测试口令是什么,客服热线什么时间提供?","force":false},且库中已导入上面sandbox_note.txt。

对应输出

期望返回骨架:{"ok":true,"action":"query","storeName":"fileSearchStores/demo123","message":"查询完成","answer":"测试口令是ORANGE-77;蓝莓客服热线在工作日9点到17点提供。","citations":["sandbox_note.txt"],"items":[]}

做完检查这些

  • Agent调用在n8n执行记录里呈现分开字段,而不是query里嵌JSON
  • createStore后完成页或工具返回能拿到fileSearchStores/前缀ID
  • deleteStore在force缺省或false时被本地拦截并报需显式force
  • 表单同时支持新建库与粘贴既有库ID,失败文件名列得出来
  • 测试库、练习文件与Google项目配额在结束后可清理

容易卡住的地方

  • 来源页没有提供可导入n8n JSON,本文不编造节点文件
  • 凭据缺File Search或模型权限时,分支会到Google调用才失败
  • 把JSON塞进query会让规范化与路由失效,必须改Agent习惯
  • force语义要硬性编码,不能只靠模型自觉
  • gemini-2.5-flash与pageSize是页面提到的可核对默认值,项目不同要替换
  • 表单公开URL要加访问限制或仅沙盒使用,避免陌生人上传

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Manage Gemini File Search RAG stores and documents with n8n forms
原作者
KPendic
原始发布日期
2026-09-18T14:39:26.108Z
来源
https://n8n.io/workflows/19717