huangjianwu
|
3e9f908d7b
|
fix(chat): 按固定配额检索,确保三种来源均被召回
之前各来源各取 n_results 条再按距离排序取 top-n,
markdown 距离普遍更近导致 transcript 被挤掉。
改为固定配额:meta 1 条、markdown 2 条、transcript 3 条。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-23 15:44:25 +08:00 |
|
huangjianwu
|
8a8e448e22
|
feat(chat): 索引视频元信息(标题、作者、简介、标签等)
- 新增 _build_meta_chunk,将 audio_meta 中的标题、UP主、
简介、标签、时长、平台、链接等构建为可检索的 chunk
- query 时同时从 meta/markdown/transcript 三种来源检索
- is_indexed 检测旧索引缺少 meta 时返回 false,自动触发重建
- system prompt 新增 [视频信息] 来源说明
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-23 15:41:07 +08:00 |
|
huangjianwu
|
a92c779dd6
|
fix(chat): RAG 检索同时召回笔记和转录内容
之前 query 只做一次全局检索,embedding 模型倾向匹配笔记,
导致转录原文几乎不会被召回。
- 改为分别对 markdown 和 transcript 各检索 n_results 条,
合并后按距离排序取 top-n
- 更新 system prompt,明确区分笔记和转录两种来源,
引导 LLM 根据问题类型选择合适的来源回答
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-23 15:35:31 +08:00 |
|
huangjianwu
|
fdc888512a
|
fix(chat): 修复 ChromaDB 1.x 兼容性问题导致索引失败
- ChromaDB 1.x delete/get 不存在的 collection 抛 NotFoundError
而非 ValueError,统一改为 except Exception
- 简化 _collection_name,UUID 格式本身就是合法的 collection name
- requirements.txt 放宽 chromadb 版本约束
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-23 14:43:57 +08:00 |
|
huangjianwu
|
efadbc267d
|
feat(chat): 基于 RAG 的笔记内容 AI 问答功能
实现类似 Google NotebookLM 的效果:笔记生成后自动向量化,
用户可针对笔记内容进行 LLM 问答。
### 后端
- 新增 VectorStoreManager(ChromaDB),按标题/转录分块建立向量索引
- 新增 chat_service.py RAG 问答:检索相关片段 → 构建 prompt → 调用 LLM
- 新增 /chat/index, /chat/ask, /chat/status API 端点
- 笔记生成完成后自动建立向量索引
### 前端
- 使用 @ant-design/x Bubble.List + Sender 组件构建聊天面板
- 新增 chatStore(Zustand + persist)持久化聊天记录
- MarkdownViewer 右侧嵌入 ChatPanel,通过"AI 问答"按钮切换
- 首次打开自动检查/触发索引,支持重新索引
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-23 14:38:39 +08:00 |
|