添加语义搜索能力,支持自然语言查询找到相关项目。 - 数据库:新增 embedding 字段用于向量存储 - 前端:新增 AI 搜索栏和结果组件,支持传统/AI 模式切换 - API:新增 /api/search/ai 端点处理语义搜索请求 - 国际化:添加 AI 搜索相关中英文翻译 - 探索任务:允许 FAILED 状态直接转到 IN_PROGRESS 简化重试 Co-Authored-By: Claude <noreply@anthropic.com>
n8n 工作流导入指南
本指南将帮助您导入和配置 AI 智能搜索系统的两个 n8n 工作流。
前置条件
确保您已经完成:
- n8n 实例已运行
- 已配置
OpenAI Embeddings凭证 - 已配置
Neon Database凭证 - Neon 数据库已应用迁移(添加 embedding 字段)
工作流 1: Project Vectorization(项目向量化)
功能说明
每 5 分钟自动执行一次,查询未向量化的项目,生成 OpenAI embeddings 并存储到数据库。
导入步骤
-
导入工作流
- 打开 n8n 实例
- 点击右上角 + → Import from File
- 选择
project-vectorization.json - 点击 Import
-
配置凭证
-
点击 查询未向量化项目 节点
-
在 Credentials 下拉框中选择
Neon Database -
点击 Save
-
点击 OpenAI Embeddings 节点
-
在 Credentials 下拉框中选择
OpenAI Embeddings -
点击 Save
-
点击 更新 Embedding 节点
-
在 Credentials 下拉框中选择
Neon Database -
点击 Save
-
-
测试工作流
- 点击工作流右上角 Test Workflow
- 手动点击 Cron 节点的执行按钮
- 查看每个节点的输出:
查询未向量化项目应返回项目列表(或空数组)构造文本内容应添加textContent字段OpenAI Embeddings应返回向量数组更新 Embedding应成功更新数据库
-
激活工作流
- 点击左上角 Inactive 开关,变为 Active
- 工作流将每 5 分钟自动执行
节点说明
| 节点 | 功能 |
|---|---|
| Cron | 定时触发器(每 5 分钟) |
| 查询未向量化项目 | 查询 embedding 为空的 ACTIVE 项目 |
| 构造文本内容 | 合并项目字段生成用于向量化的文本 |
| Split in Batches | 分批处理(每批 5 个,避免 API 限流) |
| OpenAI Embeddings | 调用 OpenAI API 生成向量 |
| 更新 Embedding | 将向量写入数据库 |
工作流 2: AI Semantic Search(AI 语义搜索)
功能说明
接收 Webhook 请求,生成查询向量,执行向量相似度搜索,返回排序结果。
导入步骤
-
导入工作流
- 打开 n8n 实例
- 点击右上角 + → Import from File
- 选择
ai-semantic-search.json - 点击 Import
-
配置凭证
-
依次配置以下节点的凭证为
OpenAI Embeddings:- 生成查询向量 节点
-
依次配置以下节点的凭证为
Neon Database:- 向量相似度搜索 节点
- 查询标签 节点
-
-
获取 Webhook URL
- 点击 Webhook 节点
- 复制 Production URL(格式类似:
https://your-n8n.com/webhook/ai-search) - 将此 URL 更新到
.env.local的N8N_AI_SEARCH_WEBHOOK
-
测试工作流
- 点击工作流右上角 Test Workflow
- 在 Webhook 节点中点击 Listen for Test Event
- 使用以下命令测试:
curl -X POST https://your-n8n.com/webhook/ai-search \
-H "Content-Type: application/json" \
-d '{"query":"视频生成工具","locale":"zh","limit":5}'
- 预期响应:
{
"results": [
{
"project": { /* 项目数据 */ },
"similarity": 0.89,
"matchReason": "相似度: 89%"
}
],
"total": 5,
"searchTime": 1234
}
- 激活工作流
- 点击左上角 Inactive 开关,变为 Active
节点说明
| 节点 | 功能 |
|---|---|
| Webhook | 接收搜索请求(POST /webhook/ai-search) |
| 生成查询向量 | 将查询文本转换为向量 |
| 向量相似度搜索 | 使用 pgvector 执行余弦相似度搜索 |
| 准备标签查询 | 准备项目 ID 列表 |
| 查询标签 | 查询每个项目的标签 |
| 合并标签 | 将标签合并到搜索结果 |
| 格式化响应 | 生成最终的 JSON 响应 |
常见问题
Q1: 节点连接错误?
导入后如果节点连接线丢失,手动按以下顺序连接:
工作流 1 连接顺序:
Cron → 查询未向量化项目 → 构造文本内容 → Split in Batches → OpenAI Embeddings → 更新 Embedding → (循环回) Split in Batches
工作流 2 连接顺序:
Webhook → 生成查询向量 → 向量相似度搜索 → 准备标签查询 → 查询标签 → 合并标签 → 格式化响应
Q2: 凭证选择框为空?
- 确保已在 n8n 中创建了
OpenAI Embeddings和Neon Database凭证 - 如果凭证已创建但不可见,重新导入工作流
Q3: OpenAI API 错误?
- 检查 API Key 是否有效
- 确认 API Key 有足够的配额
- 检查网络连接
Q4: 数据库连接错误?
- 验证 Neon 数据库凭证配置正确
- 检查数据库是否已应用迁移
- 确认 pgvector 扩展已安装
更新环境变量
将获取的 Webhook URL 更新到项目的 .env.local 文件:
# n8n AI Search Webhook
N8N_AI_SEARCH_WEBHOOK="https://your-n8n.com/webhook/ai-search"
然后重启开发服务器:
pnpm dev
验证完整流程
- 启动向量化
- 确保 Project Vectorization 工作流已激活
- 等待 5 分钟或手动执行
- 在 Neon SQL Editor 中检查:
SELECT COUNT(*) FROM "projects" WHERE "embedding" IS NOT NULL;
- 测试 AI 搜索
- 访问
http://localhost:3000/zh/projects - 点击 ✨ 按钮切换到 AI 模式
- 输入查询:"帮我找能生成视频的 AI 工具"
- 验证返回相关结果
- 访问
完成后
所有工作流配置完成后,您的 AI 智能搜索系统就已就绪!
- 向量化工作流会在后台自动运行
- AI 搜索 API 可供前端调用
- 用户可以使用自然语言查询项目