产品介绍

不只是能跑,是能交给别人维护

大多数 RAG 项目绕不开「改配置 → 跑脚本 → 重启」。这个项目把这些全搬到了网页上。

🤖

15 家厂商,选中就自动填

DeepSeek、通义千问、火山方舟、智谱、Kimi、千帆、OpenAI、Claude、Gemini、Ollama… 选中厂商自动填 Base URL 和模型名,点「🔄」还能拉取你账号真正可用的模型列表。

🔁

双协议适配

OpenAI 的 /chat/completions 和 Anthropic 的 /messages 都支持,切协议自动更新地址。认证头两种都发,兼容各家网关的实现差异。

🧠

结构感知切分

识别【章节】、Markdown 标题、第X章、Q&A 对、Excel 工作表,沿语义边界切分并保留标题上下文。实测检索得分从 0.719 提升到 0.791。

🗂

三种向量库

Chroma(本地文件、零部署)、Qdrant(生产级)、Milvus(含零安装 Lite 模式)。同一套接口,页面上切换。

🎯

回答策略可选

默认严格 RAG:资料外一律拒答,每句话都能追溯到你的文档。也可以开关允许 AI 用自身知识补充回答。

🪟

组件零依赖

单文件原生 JS,免构建免打包,不引入任何第三方库。内置 Markdown 渲染和链接识别,支持文件上传和四语言切换。丢到任何页面都能跑。

断点续传入库

大知识库入库遇到厂商配额限制会自动降批、退避重试。中断后进度保留,再点「入库」从上次位置继续,不重复消耗配额。

📲

跨平台嵌入

网站、微信小程序 web-view、Electron、Tauri、iOS/Android WebView 全覆盖。三种嵌入方式,代码一键复制。

🔓

MIT 协议

完全开源免费,可商用、可二次开发、可闭源分发。代码里留了大量「为什么是这个值」的注释,方便你改。

🔐

后台登录鉴权

管理后台需要登录,首次启动自动建号(admin / 123456),有效期 7 天。配置类和文档类接口全部受保护,聊天接口与嵌入组件仍对访客公开。改密码会立即让其他设备下线。

🌐

四语言 · 离线也判断得对

简中 / 繁中 / 日语 / 英语,后台、组件、独立聊天页都能切。默认语言按浏览器时区判断,不查 IP —— 纯内网、断网部署一样选得对。切换后 AI 回答也跟着换语言。

⬆︎

检测更新,但不擅自改代码

比对当前版本与 GitHub 最新 Release,有新版时按钮上出现红点,展示更新说明和更新命令 —— 只检测,不自动 pull。自动拉取会覆盖你未提交的改动,不适合放在一个按钮后面。

♻️

换 Embedding 模型,一键重建向量库

向量集合与建库时的模型终身绑定:维度不同直接报 dimension of 2048, got 1024,维度相同也会让检索静默变成噪声。点「测试并探测维度」发现不兼容时弹确认框,确认后后台自动删集合、重建、把全部文档重新嵌入,进度可见、限流退避、断点续跑。

模型厂商

15 项预设,两家火山产品分开列

选中厂商自动填 Base URL 和默认模型,点 🔄 还能拉取你账号下真正可用的模型列表。

厂商 协议 说明
DeepSeek(深度求索)OpenAI 兼容性价比高
阿里云 · 通义千问 / 百炼OpenAI 兼容共用 DashScope 兼容地址
火山方舟 · 包月套餐双协议/api/plan/v3(OpenAI)与 /api/plan/v1(Anthropic),模型固定填 ark-code-latest
火山方舟 · 豆包(按量付费)OpenAI 兼容/api/v3
智谱 GLMOpenAI 兼容
Kimi(Moonshot 月之暗面)OpenAI 兼容
百度千帆(ERNIE)OpenAI 兼容v2 端点
OpenAIOpenAI 兼容国内访问需代理
Anthropic ClaudeAnthropic 原生官方 Messages 协议
胜算云(模型路由)OpenAI 兼容一个 Key 聚合多家模型
优云智算 ⚠OpenAI 兼容预填参数未经实测,请自行核实
Google Gemini ⚠OpenAI 兼容通过 OpenAI 兼容端点接入
Ollama(本地部署)⚠OpenAI 兼容localhost:11434,Key 随便填
自定义 · OpenAI 协议OpenAI 兼容vLLM / one-api / LiteLLM / 自建网关
自定义 · Anthropic 协议Anthropic 原生任何 Anthropic 兼容层

⚠ 标记表示预填地址/模型未经实测核实,页面会显示橙色提示。请对照厂商文档确认,或点 🔄 拉取真实模型列表;其余各项均已实际验证可用。

⚠️ 火山方舟用户:两个计费产品别选错

ARK 有两个计费不同的产品,Base URL 不通用 —— 用错地址会产生额外费用

你的情况 选哪项 Base URL
买了 Coding Plan 包月套餐 火山方舟 · 包月套餐 /api/plan/v3(OpenAI)或 /api/plan/v1(Anthropic)
按量付费 火山方舟 · 豆包 /api/v3

包月套餐模型名固定填 ark-code-latest,路由到哪个具体模型在火山控制台选。报 401 十有八九是这里选错了。

向量库

三种向量库,同一个切换入口

页面上切换,选中哪个就只显示它需要的参数。切换向量库需重启后端并重新入库(向量数据不跨库迁移);只是换 Embedding 模型则不用手动删库,见下面的一键重建。

类型 说明 需要额外服务?
Chroma(默认) 本地文件持久化到 ./data/chroma_db ❌ 开箱即用
Qdrant Rust 实现,生产级 docker compose up -d qdrant
Milvus 企业级;填 .db 路径走 Milvus Lite(零安装),填 http://host:19530 连服务器,也支持 Zilliz Cloud 视模式而定
一键重建

换了 Embedding 模型?一键重建向量库

向量集合与建库时的 Embedding 模型终身绑定,换模型后旧向量无法继续使用:

维度不同(如 2048 维多模态模型 → 1024 维 text-embedding):新向量写不进去,入库直接报 Collection expecting embedding with dimension of 2048, got 1024即使把文档全删光也没用 —— 空集合依然锁着旧维度;

维度相同但模型不同:不报错,但两个模型的向量空间互不相通,检索会静默变成噪声。

正确做法:清空集合 + 全部文档重新嵌入,已做成页面上的一键操作

1

「模型配置」页改好向量模型,点 🔌 测试并探测维度

2

检测到不兼容时弹确认框:旧模型 → 新模型、两边维度、涉及文档数、预计消耗配额 —— 你确认了才执行

3

后台流水线执行:探针嵌入(Key 不对在动数据前就失败)→ 删集合并按真实维度重建 → 重置文档行 → 逐篇重新解析/切分/嵌入,进度实时可见

几个设计细节

设计点 行为
弹确认框,不全自动只是试模型也会点「测试连接」,全自动可能在你还没决定时给 9000 片段的知识库白烧配额
限流自动退避429 / 限流 / 超时自动等待重试(60 秒起、最多 4 倍);坏文件、Key 失效这类确定性错误立即失败并列出文件名
断点续跑每 50 个片段一批;中断或重启后再点重试,已完成的文档和片段不重复嵌入、不重复耗配额
模型签名配置里记录建库用的 {provider, model, base_url, dim};只轮换 API Key 不触发重建
空集合维度锁探测直接读现存集合锁定的维度,「文档全删了集合是空的却还报维度错」进页面就能看到提示
智能分词

结构感知切分:检索得分 0.719 → 0.791

默认策略。相比按字数硬切,它沿语义边界切分并保留标题上下文。以 595 字的示例知识库为例:

固定窗口 结构感知
片段数 2 6
问题 四个章节混在一片;另一片从 Q3 中间开始,丢了章节上下文 每章节独立成片,标题完整保留
问「保修期」Top-1 得分 0.719 0.791

能识别的结构【章节】 · Markdown #~######(含层级)· 第X章 · Q:/A: 问答对 · ## Sheet:(Excel)· ## Page N(PDF)。编号列表如「1. 整机保修期为 12 个月」不会被误判成标题。

在页面上调(RAG 设置 → 文本切分)

  • 切分策略 —— 结构感知 / 固定窗口
  • 标题前缀开关 —— 长章节被拆时每片带 [技术规格] 前缀
  • 🔍 预览切分效果 —— 立刻看到片段数、长度分布、章节归属,不用真的入库、不耗 embedding 配额
为什么还需要一条 0.76 的相关性分界线

中文 embedding 即使完全无关也有 0.65 左右的相似度;而 similarity_threshold 必须保持低值(0.5),否则「登录页」这类短查询会什么都检索不到。实测本站知识库:站内问题分数 0.813~0.905,站外问题 0.649~0.711,中间间隔 +0.102,于是用 relevance_threshold = 0.76 区分「检索到了」和「检索到了答案」。

回答策略

严格 RAG,还是允许自主回答

「RAG 设置 → 回答策略」的开关,默认关闭(严格 RAG)。

关闭(默认) 开启
知识库相关内容 依据资料回答 依据资料回答,资料不足时可补全
知识库没有相关内容 「抱歉,知识库中没有相关信息」 用模型自身知识回答
可追溯性 ✅ 每句都能追溯到你的文档 ❌ 用户分不清哪句来自资料
适用场景 价格、政策、承诺等不能出错的场景 通用问答、技术咨询

实测(问「珠穆朗玛峰的海拔」):关闭时回「抱歉,知识库中没有相关信息」;开启时答出「8848.86 米,2020 年 12 月中尼共同宣布」。开启后站内问题不受影响,知识库有的内容照样优先依据资料回答。

现在就把它跑起来

克隆、装依赖、点运行 —— 五分钟后你就有一个能用的智能客服

免费下载源码 快速开始