Skip to content

AI 聊天机器人

概述

RAG 工作器是一款专为检索增强生成(RAG)任务设计的工具,旨在通过相关文档检索和摘要技术提升 AI 聊天机器人的功能。该工具集成于 Hugo 网站,并通过 Cloudflare Workers 实现无服务器部署。

主要特性

  • 多语言支持:支持中英文内容检索与处理
  • 嵌入模型可选:可使用 Qwen 或 Gemini 嵌入模型进行高效文档向量化
  • 高效存储与检索:利用 Cloudflare Vectorize 存储嵌入并实现快速检索
  • 角色一致性与自定义提示词:根据文档上下文和用户历史构建自定义提示词
  • 目录递归导入:可批量处理 Markdown 文件(自动过滤 Hugo draft,支持 cascade 继承)

架构与组件

组件 说明
worker.ts 处理 HTTP 请求、路由,并构建提示词
retriever.ts 向量相似度检索文档,支持语言过滤和回退
prompt.ts 根据检索结果、语言和历史对话生成 Prompt
fast-ingest.ts 批量导入内容,并行处理优化吞吐量
ingest-directory 目录递归导入脚本(推荐主入口)
其他脚本 manual-ingestgenerate-titlesfull-reindex

使用指南

环境准备

  1. Cloudflare 账户 + 已安装 wrangler
  2. 创建 Vectorize 索引并在 wrangler.toml 绑定:
[[vectorize]]
binding = "VECTORIZE"
index_name = "website-rag"
  1. 配置 Secrets / Vars:
wrangler secret put ADMIN_TOKEN         # 登录 Vectorize
wrangler secret put GOOGLE_API_KEY      # 若 PROVIDER=gemini
wrangler secret put QWEN_API_KEY        # 若 PROVIDER=qwen
# (可选) wrangler secret put QWEN_BASE
# (可选) wrangler secret put QWEN_EMBED_MODEL
  1. wrangler.toml 中还需配置:PROVIDER、EMBED_DIM、LLM_MODEL

本地开发与部署

# 安装依赖
npm install

# 启动开发模式
cd tools/rag-worker
npm run dev

# 部署到 Cloudflare
cd tools/rag-worker
npm run deploy

内容导入

# 高速批量导入(推荐)
cd tools/rag-worker
npm run fast-ingest
# 目录递归导入(支持多目录、自动过滤 Hugo draft)
npm run ingest-directory -- ../../content/zh/book
npm run ingest-directory -- ../../content/zh/book ../../content/en/docs

# 手动指定文件导入
npm run manual-ingest

# 生成双语标题对照
npm run generate-titles

# 重新索引所有条目
npm run full-reindex

测试

cd tools/rag-worker
npm test
npm run test:e2e

网站 RAG 聊天机器人

使用 Cloudflare Workers 构建可嵌入网站的聊天机器人,数据源为 website/content/ 中的 Markdown 内容。

工作流程

Markdown -> 纯文本 -> 分片 -> 嵌入向量 -> 写入 Vectorize
/chat -> 查询 Top-K -> 拼接 Prompt -> 调用 LLM -> 生成回答(含 source/url)

支持将 widget.js 嵌入到 Hugo 网站前端,轻松部署交互式 RAG Chatbot。

文档目录

  • docs/README.md:文档索引
  • docs/directory-recursive-processing.md:目录递归导入功能说明
  • 其他技术文档见 docs/ 目录

🚀 新增功能:目录递归处理(智能导入)

# 安装依赖
npm install

# 设置环境变量
export ADMIN_TOKEN=your-token
export WORKER_URL=<https://your-worker.workers.dev>
export QWEN_API_KEY=your-key  # 或 GOOGLE_API_KEY

# 一键导入整个目录
npm run ingest-directory -- ../../content/zh/book

# 同时处理多个目录
npm run ingest-directory -- ../../content/zh/book ../../content/en/docs

✨ 自动排除 Hugo draft,支持 cascade 继承。