[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74299":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},74299,"bilibili-rag","via007\u002Fbilibili-rag","via007","B站收藏夹RAG知识库：收藏不吃灰，B 站收藏夹 → 语音转写 → 向量检索 → 对话问答","",null,"Python",1161,86,1,8,0,14,60,94,42,18.82,"MIT License",false,"main",[26],"rag-bilibili-knowledge-base-llm-chroma-qwen","2026-06-12 02:03:25","# 🚀 Bilibili RAG：把收藏夹变成可对话的知识库\n\n把你在 B 站收藏的访谈\u002F演讲\u002F课程，变成可检索、可追溯来源的**个人知识库**。  \n适合：访谈\u002F演讲\u002F课程、技术视频与学习视频整理、公开课复盘、知识总结、会议\u002F分享回顾、播客内容归档等。\n\n> 亮点：自动拉取内容 → 语音转写 → 向量检索 → 对话问答\n\n---\n\n## ✨ 功能一览\n\n- ✅ B 站扫码登录，读取收藏夹\n- ✅ 音频转文字（ASR），自动兜底处理\n- ✅ 语义检索（向量检索）\n- ✅ 基于 RAG 的对话问答\n- ✅ 本地 SQLite + ChromaDB 存储\n\n---\n\n## 🖼️ 演示与截图\n\n![首页截图](assets\u002Fscreenshots\u002Fhome.png)\n![对话界面截图](assets\u002Fscreenshots\u002Fchat.png)\n\n## B站演示视频：\n[演示视频](https:\u002F\u002Fb23.tv\u002FbGXyhjU)\n\n## ⭐ Star History\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=via007\u002Fbilibili-rag&type=Date)](https:\u002F\u002Fstar-history.com\u002F#via007\u002Fbilibili-rag&Date)\n\n---\n\n## ⚡ 快速开始（3 步）\n\n0) 安装 ffmpeg（并确保在 PATH 中）  \n- macOS: `brew install ffmpeg`  \n- Windows: 下载安装包后将 `bin` 目录加入 PATH  \n- Linux: `apt\u002Fyum\u002Fpacman` 安装 `ffmpeg`  \n\n1) 安装依赖  \n```bash\nconda activate bilibili-rag\npip install -r requirements.txt\n```\n\n2) 配置环境变量  \n```bash\ncp .env.example .env\n# 编辑 .env，填写 DashScope API Key 等配置\n```\n\n推荐的百炼 \u002F DashScope OpenAI 兼容配置：\n```env\nDASHSCOPE_API_KEY=你的百炼 API Key\nOPENAI_API_KEY=\nOPENAI_BASE_URL=https:\u002F\u002Fdashscope.aliyuncs.com\u002Fcompatible-mode\u002Fv1\nLLM_MODEL=qwen3-plus\nEMBEDDING_MODEL=text-embedding-v4\n```\n\n注意：\n- `.env` 必须放在项目根目录，不是 `frontend\u002F` 目录\n- `OPENAI_BASE_URL` 用于 LLM 对话，推荐使用 `https:\u002F\u002Fdashscope.aliyuncs.com\u002Fcompatible-mode\u002Fv1`\n- `DASHSCOPE_BASE_URL` 只用于 ASR，不要和 `OPENAI_BASE_URL` 混用\n- 修改 `.env` 后需要重启后端服务\n- 不要把真实 API Key 提交到 GitHub\n\n3) 启动服务  \n```bash\npython -m uvicorn app.main:app --reload\n```\n后端文档：`http:\u002F\u002Flocalhost:8000\u002Fdocs`\n\n前端：\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n前端页面：`http:\u002F\u002Flocalhost:3000`\n\n---\n\n## 🧠 工作流程\n\n1. 选择收藏夹  \n2. 拉取视频 → 音频转写（ASR）  \n3. 生成向量 → 构建知识库  \n4. 对话\u002F检索问答  \n\n---\n\n## 🤖 OpenClaw Skill（本地接入）\n\n本仓库已提供一个可直接使用的 Skill：`skills\u002Fbilibili-rag-local\u002FSKILL.md`。  \n作用：把本地运行的 `bilibili-rag` 服务接入 OpenClaw，让 OpenClaw 直接调用你的收藏夹知识库进行检索和问答。\n\n### 前置条件\n\n1. 先按上面的步骤完成本项目本地部署。  \n2. 确认后端接口可访问：`http:\u002F\u002F127.0.0.1:8000\u002Fdocs`。  \n3. 确认 OpenClaw 已安装并可加载本地 Skills。  \n\n### 接入方式\n\n1. 将本仓库中的 `skills\u002Fbilibili-rag-local` 放到 OpenClaw 的 Skills 目录（例如 `~\u002F.openclaw\u002Fskills\u002F`）。  \n2. 重启或刷新 OpenClaw Skills。  \n3. 在 OpenClaw 中调用该 Skill，让它通过本地 API 执行：  \n   - `POST \u002Fchat\u002Fask`（问答）  \n   - `POST \u002Fchat\u002Fsearch`（检索片段）  \n   - `GET \u002Fknowledge\u002Ffolders\u002Fstatus`（入库状态）  \n\n### 使用建议\n\n1. 先同步\u002F入库收藏夹，再进行问答。  \n2. 问题越具体，召回效果越好。  \n3. 若出现“无命中”，优先检查是否完成入库或是否选错收藏夹。  \n\n---\n\n## 🧩 基于 Skill 的扩展示例\n\n你可以在 `skills\u002F` 目录继续开发更多 Skill，把收藏夹真正变成可持续运营的知识系统。  \n例如结合 OpenClaw 的定时能力（Cron）做自动化：\n\n1. 每日\u002F每周统计收藏夹入库状态（新增、未入库、失败项）。  \n2. 定时生成“新增收藏学习摘要”（按主题聚合要点）。  \n3. 定时输出“待补全内容清单”（ASR 失败、内容过短、召回弱视频）。  \n4. 将统计结果自动推送到你常用的消息渠道，形成固定复盘节奏。  \n\n---\n\n## 🧪 测试与诊断脚本\n\n> 注意：`test\u002F` 目录下的脚本需要 **移动到项目根目录** 再运行（依赖相对路径与配置）。\n\n- `debug_asr_single.py`：测试单个视频是否能正确获取音频  \n- `diagnose_rag.py`：测试向量检索召回是否准确  \n- `sync_cache_vectors.py`：同步数据库缓存数据到向量库  \n\n---\n\n## 🎧 ASR 说明（音频不可达兜底）\n\n部分 B 站音频 URL 可能返回 403（直链不可拉取），系统会自动执行兜底流程：\n\n1. 本地下载音频（带 Cookie）\n2. ffmpeg 转码为 16k 单声道\n3. 上传到 DashScope 后再识别\n\n> 请确保本机已安装 `ffmpeg` 并加入 PATH。\n\n---\n\n## 💰 费用说明（DashScope）\n\n模型相关费用包括：\n- LLM 对话（按 Token）\n- Embedding（按 Token）\n- ASR 音频转写（按时长）\n\n建议：\n- 部署\u002F测试阶段先用 **短视频（约 10 分钟）**验证流程与费用  \n- 正式使用按需启用，注意费用；大多数模型有免费额度，通常足够日常使用  \n\n### 模型配置常见错误\n\n**Q：报错 `The api_key client option must be set` 是什么原因？**  \nA：后端没有读到有效 API Key。请检查 `.env` 是否在项目根目录，并确认至少配置了 `DASHSCOPE_API_KEY` 或 `OPENAI_API_KEY`。\n\n**Q：百炼 \u002F DashScope 的 `OPENAI_BASE_URL` 应该填什么？**  \nA：推荐填 `https:\u002F\u002Fdashscope.aliyuncs.com\u002Fcompatible-mode\u002Fv1`。不要填 `https:\u002F\u002Fcoding.dashscope.aliyuncs.com\u002Fv1`，也不要把 ASR 的 `DASHSCOPE_BASE_URL` 填到这里。\n\n**Q：报错 `AllocationQuota.FreeTierOnly` 是什么原因？**  \nA：这是上游模型服务返回的配额错误，通常表示免费额度已耗尽，或控制台开启了“仅使用免费额度”。这不是本项目代码错误，需要在模型服务控制台调整额度\u002F付费设置，或切换可用模型。\n\n**Q：改了 `.env` 但模型没有变化？**  \nA：配置在后端启动时读取。修改 `.env` 后请重启 `uvicorn` 后端服务。\n\n---\n\n## 🧩 技术栈\n\n- 后端：FastAPI  \n- LLM：LangChain + DashScope  \n- 向量库：ChromaDB  \n- 前端：Next.js + Tailwind  \n- 数据库：SQLite  \n\n---\n\n## 📂 目录结构（简版）\n\n```\nbilibili-rag\u002F\n├── app\u002F                # 后端逻辑\n├── frontend\u002F           # 前端界面\n├── data\u002F               # 数据库与向量库\n├── skills\u002F             # OpenClaw Skills（含 bilibili-rag-local）\n├── test\u002F               # 测试脚本（需移动到根目录再运行）\n└── README.md\n```\n\n---\n\n## ✅ 常见问题\n\n**Q：为什么有些音频 URL 可达、有些不可达？**  \nA：B 站音频直链存在鉴权\u002F过期\u002F区域限制，只有公网可直接拉取的 URL 才可达。\n\n---\n\n> 免责声明：本项目仅供个人学习与技术研究，使用者需自行遵守相关平台协议与法律法规，禁止用于未授权的商业或违规用途。\n\n---\n\n## 📜 License\n\nMIT\n\n---\n\n## 🧩 TodoList\n\n- 对话存储、会话管理、检索历史对话记录\n- 支持 B 站分 P 视频\n- 适配更多 LLM 与向量模型\n","Bilibili RAG 项目旨在将用户在 B 站收藏的视频内容转化为可检索和对话的知识库。其核心功能包括通过 B 站扫码登录读取收藏夹，自动进行音频转文字处理，基于向量检索实现语义搜索，并利用 RAG（Retrieval-Augmented Generation）技术提供对话问答服务。该项目使用 Python 开发，结合了 SQLite 和 ChromaDB 作为数据存储方案。它非常适合用于整理访谈、演讲、课程等视频内容，帮助用户更好地复盘学习资料或归档重要信息。",2,"2026-06-11 03:49:52","high_star"]