Compare commits
3 Commits
655eefb198
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 6dc6a405f2 | |||
| d4cdfe962e | |||
| 04c0172038 |
@@ -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"式的唤醒词功能 |
|
||||
|
||||
@@ -85,6 +85,14 @@ graph LR
|
||||
REDIS -->|"TTL 过期自动清理"| CLEANUP["自动清理"]
|
||||
```
|
||||
|
||||
#### PostgreSQL
|
||||
|
||||
- **一句话**:功能强大的开源关系型数据库,适合持久化存储结构化数据。
|
||||
- **展开**:Redis 存的数据在内存里,重启就丢了。**PostgreSQL**(简称 PG)则把数据写到磁盘上,永久保存。它用**SQL**语言查询,支持复杂的联表查询和事务(保证数据一致性)。在本项目里,上线后用来存对话历史、用量统计、用户偏好等需要「永久保留」的数据。MVP 阶段可以先不用,等产品验证后再引入。
|
||||
|
||||
> [!question] 想一想
|
||||
> Redis 超快但重启丢数据,PostgreSQL 慢一点但数据不丢。为什么不二选一?因为它们擅长的事情不同——Redis 做「热数据缓存」(频繁读写的会话状态),PG 做「冷数据持久化」(需要长期保存的记录)。两者配合才是生产级架构。
|
||||
|
||||
#### Viper
|
||||
|
||||
- **一句话**:Go 语言的配置管理工具,帮你读取各种格式的配置文件。
|
||||
@@ -136,6 +144,7 @@ graph LR
|
||||
| VAD | 语音技术 | 检测人有没有在说话 |
|
||||
| Go | 后端语言 | 高并发,轻量协程 |
|
||||
| Redis | 数据库 | 内存 KV 缓存,读写极快 |
|
||||
| PostgreSQL | 数据库 | 关系型数据库,数据持久化 |
|
||||
| LLM | AI 模型 | 大语言模型 |
|
||||
| STT | AI 能力 | 语音转文字 |
|
||||
| TTS | AI 能力 | 文字转语音 |
|
||||
|
||||
Reference in New Issue
Block a user