Mindket

基于 Qdrant 和 OpenAI 的电影推荐聊天机器人

新上架第 1 版 · 更新于

概览

一个 n8n 工作流,在聊天窗口里推荐电影。它用 OpenAI 嵌入向量把你的电影 CSV 载入 Qdrant,再由一个 AI Agent 要来三部接近你喜欢的、远离你不喜欢的电影。

基于 Qdrant 和 OpenAI 的电影推荐聊天机器人 是一款 n8n 工作流,属于开发类,由 Mindket 上架。可免费获取。当前为第 1 版,最近更新于 。在本页下载,或复制它的 JSON,再导入 n8n 画布。在 n8n 里启用之前,它不会运行。

速览

用在
  • n8n Cloud:在那里新建一个工作流,把文件导入进去
  • 你自己的 n8n 服务器:同一个文件,同样的步骤
  • 其他条目:载入列相同的 CSV,就能推荐书、商品或歌曲
  • 换一个集合名:在 Qdrant Vector Store 和两个 Qdrant 地址里一起改

平台

连接 2 个应用

运行方式

触发

聊天窗口

你先手动把电影载入一次,之后每当你在 n8n 聊天里发一条消息,它就会作答:

  • 在聊天里输入的一个电影请求,最好写明你喜欢什么、不喜欢什么

动作

  1. Test workflow 下载你的电影 CSV,并读取每一行
  2. OpenAI(text-embedding-3-small)把每条简介变成嵌入向量,电影被存进一个名为 movies 的 Qdrant 集合
  3. 一条聊天消息交给带着短窗口记忆的 AI Agent(gpt-5.6-terra)
  4. 智能体把一个喜欢的简介和一个不喜欢的简介交给一个工具,工具给两者做嵌入,再向 Qdrant 要 3 个最佳匹配
  5. 工具取回每个匹配的片名、年份和简介,智能体按从好到差列出它们

结果

在 n8n 聊天里得到三部电影推荐,每部带年份和一句说明,接近你喜欢的,远离你不喜欢的

集成

开始之前要准备好这些。

OpenAI

语言模型和嵌入

给电影和每个请求生成嵌入向量,并用 gpt-5.6-terra 运行智能体。

需要一个 OpenAI API 密钥

Qdrant

向量数据库

存放做过嵌入的简介,并返回离喜欢的例子最近、离不喜欢的例子最远的电影。

需要一个 Qdrant 地址和一个 API 密钥

工作流检查

由 Mindket 于 2026年11月13日检查

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

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

关于

它是什么

这个 n8n 工作流是一个电影推荐聊天机器人。一部分把一份电影 CSV 载入 Qdrant 集合,并给每条简介做一个 OpenAI 嵌入向量。另一部分是一个聊天窗口,由一个 AI Agent 把你的请求变成一个喜欢的例子和一个不喜欢的例子,再调用一个工具。工具向 Qdrant 要最接近的三部电影,返回它们的片名、年份和简介。干活的是二十五个节点,旁边还有两张便签。

适合谁

想在 n8n 里看到按例子推荐是怎么做的开发者和数据团队,以及想把它改成产品、文章或其他带短简介的条目的人。如果你要的是依据观影记录来推荐,就别选它,它只比较简介。

谁在用,怎么用
行业谁在用怎么用例子
媒体产品经理在做推荐系统之前先做个原型一位经理载入一份片单,看推荐的结果合不合感觉。
零售电商团队把电影换成带短简介的商品一个团队载入自己的商品目录,要“像这件、但不像那件”的礼物。
教育数据课程的老师用一个小文件教向量搜索和推荐一位老师在课上跑一遍载入,再试三个请求。
软件开发者研究智能体怎么调用一个本身就是另一个工作流的工具一位开发者读了工具节点,把这个模式用到别的查询上。

你需要懂一点 n8n:导入一个文件,添加两个凭据,设置两个地址,并准备一份电影 CSV。

用在哪里

任何能访问 OpenAI、你的 Qdrant 和 CSV 地址的 n8n 都能运行它。聊天在 n8n 里面打开,所以推荐结果留在你的编辑器里。

  • n8n Cloud:在那里新建一个工作流,把文件导入进去
  • 你自己的 n8n 服务器:同一个文件,同样的步骤
  • 其他条目:载入列相同的 CSV,就能推荐书、商品或歌曲
  • 换一个集合名:在 Qdrant Vector Store 和两个 Qdrant 地址里一起改

设置

点“下载”会把一个压缩包存到你的下载文件夹,里面有 workflow.json 和 Mindket 写的设置说明。Qdrant 可以用云端集群,也可以用你自己的服务器。

先准备好这些
需要说明
n8nn8n Cloud,或者你自己的服务器
OpenAI一个 API 密钥,用于 OpenAI 凭据
Qdrant一个地址和一个 API 密钥,用于 Qdrant 凭据
一份电影 CSV放在某个网址上的文件,有 Movie Name、Year of Release 和 Description 三列
  1. 在 n8n 里新建一个工作流,打开它的菜单,选 Import from File,选中 workflow.json。
  2. 添加一个 OpenAI 凭据,并在 Embeddings OpenAI、OpenAI Chat Model、Embedding Recommendation Request with Open AI 和 Embedding Anti-Recommendation Request with Open AI 里选上它。
  3. 添加一个 Qdrant 凭据,并在 Qdrant Vector Store、Calling Qdrant Recommendation API 和 Retrieving Recommended Movies Meta Data 里选上它。
  4. 在这两个 HTTP Request 节点里,把 <YOUR_QDRANT_URL> 换成你的 Qdrant 地址,例如 https://your-cluster.cloud.qdrant.io:6333。
  5. 在 Download movies CSV 里,把 <YOUR_CSV_URL> 换成你那份 CSV 的地址。
  6. 保存工作流,点手动触发上的 Test workflow,等它跑完。
  7. 打开聊天,请它推荐一部电影。

如何使用

打开聊天,说出你想看什么、不想看什么,例如一部轻松的爱情喜剧,但别太血腥。智能体把一个喜欢的简介和一个不喜欢的简介交给工具,再按从好到差列出三部电影,不显示它们的分数。它会把最近的几条消息当作记忆。

想要不同的效果,改这里
要改的在哪里改
CSVDownload movies CSV 里的地址,以及 Default Data Loader 里的列名
集合名Qdrant Vector Store 和两个 Qdrant 地址
返回几部电影Calling Qdrant Recommendation API 里的 limit,以及系统消息
智能体的口吻AI Agent 里的 System Message
告诉工具什么Call n8n Workflow Tool 里的描述和输入结构
模型OpenAI Chat Model 里的 Model

示例

一位产品经理在聊天里写道,她想要类似一部温暖的爱情喜剧的片子,但不要血腥的恐怖片。智能体把前一句当作喜欢的例子,把后一句当作不喜欢的例子。

工具给两句话都做嵌入,向 Qdrant 要离喜欢的例子最近、离不喜欢的例子最远的三部电影。智能体回复三部电影,附上年份和一句话的说明。

新手与专家

新手:n8n 把工作流画成用线连起来的方框,每个方框是一个节点,只做一件事。这个文件里有两条流程。第一条把电影载入一次。第二条是一个聊天,它的智能体会调用一个工具,而这个工具就是同一个工作流里下面那一组方框。

专家:Call n8n Workflow Tool 用 $workflow.id 找到它自己所在的工作流,所以不用改任何 id,Execute Workflow Trigger 会在 query 下收到智能体给的两个字符串。Qdrant 的调用是普通的 HTTP Request 节点,因为推荐查询不是 Qdrant 节点的一种模式。

值得细看的地方
节点做什么要知道的
Download movies CSVHTTP Request 4.2,以文件形式取回它把 CSV 当作二进制数据交给 Extract from File
Extract from FileExtract From File 1,读 CSV每一行变成一个条目,列名作为键
Default Data Loader 和 Token Splitter每条简介一个文档元数据保留 movie_name、movie_release_date 和 movie_description
Qdrant Vector Store插入 movies 集合,配合 Embeddings OpenAI集合不存在时会创建,大小与嵌入向量一致,距离用 Cosine
AI AgentAgent 1.6,带系统消息、窗口记忆和一个工具它以 Tools Agent 的方式运行
Call n8n Workflow ToolTool Workflow 1.2,输入结构是两个字符串子工作流把它们收作 query.positive_example 和 query.negative_example
Calling Qdrant Recommendation APIHTTP Request,向 /points/query 用 recommend 发 POST平均向量策略,上限 3,只返回 id 和分数
Retrieving Recommended Movies Meta DataHTTP Request,向 /points 发 POST它取回每个 id 的载荷,好让 Merge1 按 id 合并

注意事项

原来的文件要先改过,别人才用得起来,而且你仍然需要自己的 CSV 和 Qdrant 地址。

  • 模型:OpenAI 的弃用页面(2026 年 11 月 12 日读取)写着 gpt-4o-mini 将在 2027 年 1 月 14 日停用。它的替代品 gpt-6-luna 在 Chat Completions 里只有关闭推理强度时才支持函数调用,所以 Mindket 的版本给智能体用 gpt-5.6-terra。嵌入模型 text-embedding-3-small 不在那个页面上
  • 你自己的数据:原来的文件读的是作者自己仓库里的 CSV,调用的是作者自己的 Qdrant 集群。Mindket 的版本改成要你填 <YOUR_CSV_URL> 和 <YOUR_QDRANT_URL>
  • 集合名:原来载入的集合叫 imdb,搜索的却是 imdb_1000_open_ai,所以全新的设置会去搜一个空的或不存在的集合。Mindket 的版本两处都用 movies
  • 上映年份:原来读的是一个叫 release_year 的字段,但载入时从没写过它,所以年份是空的。Mindket 的版本读 movie_release_date
  • 请求体:两个 Qdrant 请求体都用 JSON.stringify 生成,所以向量不会被错误地拼成文字,id 列表也跟着结果的数量走
  • 需要一个不喜欢的例子:工具要一个喜欢的简介和一个不喜欢的简介,所以如果请求里没有提到不喜欢什么,智能体就得自己编一个
  • 载入只跑一次:载入两遍会把每部电影再存一遍,用新的 id,之后同一部电影可能在推荐里出现两次
  • 记忆:智能体的窗口记忆放在 n8n 自己的内存里,闲置一小时就会被清掉,也不适合队列模式
  • 费用:每一轮聊天会用到一次智能体调用和两次嵌入,载入时每行还要做一次嵌入,全部由 OpenAI 计费
  • 你的数据:你的请求会发给 OpenAI,电影简介会发给 OpenAI 和 Qdrant
  • 凭据:JSON 里没有任何凭据,所以请自己添加 OpenAI 和 Qdrant 凭据

README 和文件

README

基于 Qdrant 和 OpenAI 的电影推荐聊天机器人

一个 n8n 工作流,是一个电影推荐聊天机器人。一部分把一份电影 CSV 载入 Qdrant 集合,并给每条简介做一个 OpenAI 嵌入向量。另一部分是一个聊天窗口,由一个 AI Agent 把请求变成一个喜欢的例子和一个不喜欢的例子,再向一个工具要最接近的三部电影。

包里有什么

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

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

  • 原来的 CSV 是用一个 GitHub 节点从作者自己的仓库读的。Mindket 的版本改用一个 HTTP Request 节点 Download movies CSV,里面是要你填的 <YOUR_CSV_URL>。
  • 两个 Qdrant 请求原来调用的是作者自己的集群。现在它们以 <YOUR_QDRANT_URL> 开头。
  • 原来载入的集合叫 imdb,搜索的却是 imdb_1000_open_ai。现在两处都用 movies。
  • 上映年份读的是一个载入时从没写过的字段,所以返回的是空的。Selecting Fields Relevant for Agent 现在读 movie_release_date。
  • 两个嵌入请求里原来带着一个以明文写的多余 Authorization 头。现在去掉了,由 OpenAI 凭据来完成签名。
  • 两个 Qdrant 请求体现在都用 JSON.stringify 生成,所以向量不会被错误地拼成文字。
  • Call n8n Workflow Tool 现在用 $workflow.id 找到它自己所在的工作流,不用再改 id。
  • 智能体的模型是 gpt-5.6-terra,取代了 gpt-4o-mini。见“需要知道的”。
  • 固定的示例数据去掉了,两张便签重写了。

开始之前

  • 一个 n8n 实例,n8n Cloud 或自己的服务器都行。
  • 一个 OpenAI API 密钥。
  • 一个 Qdrant 地址和一个 API 密钥。云端集群或你自己的服务器都可以。
  • 一份放在某个网址上的电影 CSV,有 Movie Name、Year of Release 和 Description 三列。

设置

  1. 在 n8n 里新建一个工作流,打开它的菜单,选 Import from File,选中 workflow.json。
  2. 添加一个 OpenAI 凭据,并在 Embeddings OpenAI、OpenAI Chat Model、Embedding Recommendation Request with Open AI 和 Embedding Anti-Recommendation Request with Open AI 里选上它。
  3. 添加一个 Qdrant 凭据,并在 Qdrant Vector Store、Calling Qdrant Recommendation API 和 Retrieving Recommended Movies Meta Data 里选上它。
  4. 在这两个 HTTP Request 节点里,把 <YOUR_QDRANT_URL> 换成你的 Qdrant 地址,例如 https://your-cluster.cloud.qdrant.io:6333。
  5. 在 Download movies CSV 里,把 <YOUR_CSV_URL> 换成你那份 CSV 的地址。
  6. 保存工作流,点手动触发上的 Test workflow,等它跑完。第一次运行时会创建 movies 集合。
  7. 打开聊天,请它推荐一部电影。

一次运行是怎么走的

载入,从手动触发开始:

  1. Download movies CSV 取回文件,Extract from File 把每一行变成一个条目。
  2. Default Data Loader 给每条简介做一个文档,并把片名、年份和简介留作元数据。
  3. Embeddings OpenAI 把每个文档变成向量,Qdrant Vector Store 把它存进 movies 集合。

聊天,从聊天触发开始:

  1. When chat message received 把消息交给 AI Agent,它带着窗口记忆和一条系统消息。
  2. 智能体带着一个喜欢的简介和一个不喜欢的简介去调用 Call n8n Workflow Tool。
  3. 在同一个工作流里,Execute Workflow Trigger 收到它们,两个嵌入请求把它们变成向量。
  4. Calling Qdrant Recommendation API 请求三个最佳匹配,Retrieving Recommended Movies Meta Data 取回它们的详情。
  5. Merge1 按 id 把分数和详情合在一起,Aggregate 把它们打成一包,智能体再写出回复。

想要不同的效果,改这里

  • CSV:Download movies CSV 里的地址,以及 Default Data Loader 里的列名。
  • 集合名:Qdrant Vector Store 和两个 Qdrant 地址。
  • 返回几部电影:Calling Qdrant Recommendation API 里的 limit,以及系统消息。
  • 智能体的口吻:AI Agent 里的 System Message。
  • 告诉工具什么:Call n8n Workflow Tool 里的描述和输入结构。

需要知道的

  • OpenAI 的弃用页面(2026 年 11 月 12 日读取)写着 gpt-4o-mini 将在 2027 年 1 月 14 日停用,替代品是 gpt-6-luna。gpt-6-luna 的页面说,Chat Completions 只有在关闭推理强度时才支持它的函数调用,所以智能体用 gpt-5.6-terra。嵌入模型 text-embedding-3-small 不在那个页面上。
  • 如果请求里没有提到不喜欢什么,智能体就得自己编一个,因为工具两样都要。
  • 载入只跑一次。载入两遍会把每部电影再存一遍,用新的 id,之后同一部电影可能在推荐里出现两次。
  • 智能体的窗口记忆放在 n8n 自己的内存里,闲置一小时就会被清掉,也不适合队列模式。
  • 每一轮聊天会用到一次智能体调用和两次嵌入,载入时每行还要做一次嵌入。
  • 你的请求会发给 OpenAI,电影简介会发给 OpenAI 和 Qdrant。
文件
NOTICE.md  696 B
README.md  5 KB
workflow.json  18 KB

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

更新内容

  • 第 1 版 · 2026-11-12

评价

还没有评分

写评价

还没有评价。

Mindket 的更多商品

查看 Mindket 的全部商品

Bonsai-27B-GGUF

lmstudio-community · 工具包

面向 LM Studio 的 27B Bonsai 模型 GGUF 转换版,含 3.80 GB 的 Q1_0 语言文件和 0.93 GB 的 BF16 视觉投影器。已测试文本、视觉和并行工具调用。

新上架

以每权重 2.9 位的 EXL3 量化运行 DeepSeek-V4.1-Flash-1017,这是一份 196 GiB 的副本,适合在自己硬件上部署大模型的人。困惑度与原模型相差不大。

新上架

MusicGen Small

facebook · 工具包

根据文字描述或音频提示生成短音乐片段,是 facebook MusicGen 的 small 检查点。适合想在自己电脑上试用文字生成音乐的开发者和音乐爱好者。

新上架

开发类的相似商品

查看开发类的全部商品

Lexnet

alpindale · 工具包

用一个只有约 984 个权重的小型神经网络,为 C 源代码的每个字符打上语法高亮标签,通过一个小小的 C 程序运行。适合对手工设计的网络好奇的开发者和研究者。

新上架

FLUX.2 Klein LoRA Studio

prithivMLmods · 工具包

在浏览器或你自己的电脑上,用一个 Gradio 应用试用 FLUX.2 Klein 图像模型的一组 LoRA。适合制作或测试 AI 图片的人。

新上架

anaksor-ocr

Sokheng · 工具包

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

新上架