diff --git a/课题一/AI 视觉对话助手/项目实现/技术选型.md b/课题一/AI 视觉对话助手/项目实现/技术选型.md index bb72f6b..0ef9cff 100644 --- a/课题一/AI 视觉对话助手/项目实现/技术选型.md +++ b/课题一/AI 视觉对话助手/项目实现/技术选型.md @@ -192,10 +192,11 @@ func GetWeeklyUsage(ctx context.Context, pool *pgxpool.Pool, userID string) ([]U } ``` -JSONB 查询示例——在对话上下文中搜索包含特定关键词的消息: +JSONB 包容查询示例——精确匹配 JSONB 子结构: ```sql --- 在 messages.content(JSONB)中搜索包含"花"的用户消息 +-- @> 是包容操作符,检查 content 是否包含 {"text": "花"} 这个子结构 +-- 适合"字段精确匹配"场景;若需模糊关键词搜索,应使用 tsvector 全文检索 SELECT id, content, created_at FROM messages WHERE role = 'user' @@ -292,7 +293,7 @@ graph TD | **Transformers.js** | Hugging Face 生态,直接跑 HuggingFace 上的模型 | 想快速集成 NLP/CV 预训练模型(如 Whisper、CLIP) | > [!question] 思考 -> 为什么 ONNX Runtime Web 胜出?项目需要同时跑**两种**轻量模型——VAD 和关键帧检测,这是自定义 pipeline,不是单一 CV 任务。ONNX 是跨框架的通用格式,可以在 Python 端用 PyTorch 训练,导出 ONNX,然后在浏览器用统一引擎加载。TensorFlow.js 被锁死在 TF 生态,MediaPipe 虽然开箱即用但灵活性不够(不能自定义模型逻辑)。**ONNX Runtime 的核心优势是"模型无关"**。 +> 为什么 ONNX Runtime Web 胜出?项目需要同时跑**两种**轻量模型——VAD 和关键帧检测,这是自定义 pipeline,不是单一 CV 任务。ONNX 是跨框架的通用格式,无论模型用什么框架训练,都可以导出为 ONNX 并在浏览器中用统一引擎加载。TensorFlow.js 被锁死在 TF 生态,MediaPipe 虽然开箱即用但灵活性不够(不能自定义模型逻辑)。**ONNX Runtime 的核心优势是"模型无关"**。 ### 语音检测:@ricky0123/vad-web @@ -300,7 +301,7 @@ VAD(Voice Activity Detection)是交互流程的**起始触发器**——用 | 方案 | 特点 | 适用场景 | |------|------|---------| -| **@ricky0123/vad-web** | 基于 WebRTC VAD,2KB,纯前端零延迟 | 只需要"有没有人说话"的二分类判断 | +| **@ricky0123/vad-web** | 基于 WebRTC VAD,体积极小(~100KB 含 WASM),纯前端零延迟 | 只需要"有没有人说话"的二分类判断 | | **Web Audio API + 能量检测** | 用 AnalyserNode 计算音量 RMS,阈值判断 | 极简场景,但抗噪能力差 | | **ONNX 跑 Silero VAD** | 神经网络级 VAD,准确率高,但推理开销更大 | 嘈杂环境下需要更精准的检测 | | **Picovoice Porcupine** | 商业级唤醒词引擎,支持自定义唤醒词 | 需要"嘿 Siri"式的唤醒词功能 |