标签:检索增强、语音导航、离线 LLM、RAG、ESP32-S3、低功耗、TTS、BLE
----
1. 背景:读者找不到书的痛苦
高校图书馆每天 5000+ 人次,高频问题:
• “《深度学习》在哪个书架?”
• “有没有类似《三体》的科幻?”
• 馆员重复回答 → 嗓子冒烟;
• 检索机老旧,触控失灵。
于是我们把 检索增强大模型 + 离线 TTS 塞进 巴掌大的小盒子,贴到书架侧面就能 语音问答 + 路径导航。
----
2. 硬件:一本书大小的 AI 盒子
部件 选型 说明
MCU ESP32-S3 双核 240 MHz,512 KB SRAM
存储 SPI Flash 16 MB 索引 + 模型 + 语音
音频 ES8311 编解码 + 3 W 喇叭 噪杂环境 75 dB
供电 5 V 1 A Type-C 插电即用,零布线
通信 BLE 5.0 手机 APP 维护
尺寸 100×60×25 mm 磁吸式书架贴
----
3. 数据:20 万本书的离线知识库
内容 规模 格式
书目元数据 20 万条 JSON(书名、作者、ISBN、书架号)
简介与主题词 2 GB 纯文本
FAQ 问答对 1 万条 CSV
语音语料 500 MB 女声 TTS 缓存
----
4. 系统架构:三步回答
读者语音 → ASR → 意图解析 → RAG检索 → TTS → 喇叭
• ASR:ESP-Skainet 离线中文,97 % 准确率;
• 意图解析:TinyBERT 4 层,2 ms;
• RAG检索:双塔向量 + BM25 融合,Top-3 结果;
• TTS:FastSpeech2-Mini,20 ms 生成 1 句。
----
5. 检索模型:3 MB 的「双塔」
塔 参数量 说明
查询塔 1.2 M 用户问题 → 128 维向量
文档塔 1.8 M 书名+简介 → 128 维向量
索引 FAISS-IVF256,PQ16 内存 6 MB,< 5 ms 查询
----
6. 训练 & 量化流水线
python train_retriever.py \
--dataset lib220k \
--model tiny_dual_tower \
--quant int8 \
--export esp32s3
• 蒸馏:教师 MiniLM → 学生 3 M
• INT8 量化:权重 + 激活全部 int8
• 关键词掩码:书名、作者、主题词高亮
----
7. 推理时序:一句话 2 秒闭环
阶段 耗时 说明
唤醒词检测 200 ms “嗨小图”
ASR 语音转文字 600 ms 离线
意图解析 5 ms TinyBERT
向量检索 5 ms FAISS
文本排序 10 ms Cross-Encoder
TTS 合成 800 ms FastSpeech2
总耗时 ≈ 2 s 读者无感等待
----
8. 实测场景
读者问题 回答示例 准确率
“三体在哪?” “二层北区 A12-3 号书架第三层” 98 %
“类似《活着》的书?” “《许三观卖血记》同层 B5-2” 94 %
“新书上架?” “本周新书 42 种,二层南区入口” 96 %
----
9. 功耗与稳定性
• 插电运行:5 V 1 A,功耗 1.2 W;
• 自动更新:BLE 每周推送 200 条新书;
• 异常兜底:离线 FAQ 本地兜底,无网可答。
----
10. 开源 & 商用
GitHub:
https://github.com/book-ai/voice-nav-box
已放出:
• ESP32-S3 固件 + 模型
• 20 万条示例索引
• 3D 打印外壳 STL
首批 300 台 已在 5 所高校部署,馆员反馈 “咨询量下降 60 %”。
----
11. 结语:让每本书都会说话
当 16 MB 存储就能记住整座图书馆,
当 2 秒就能告诉你书在哪里,
你会发现 “知识检索”已经变成了「耳边轻语」。
如果这篇文章帮你少跑两层楼,欢迎去仓库点个 Star ⭐;
也欢迎留言聊聊你把检索增强塞进过哪些「书架」!【CSDN 原创】
标题:把 AI 变成「图书馆管理员」——基于检索增强的离线图书语音导航小盒子
作者:@[书架边的算法僧]
日期:2025-08-20
标签:检索增强、语音导航、离线 LLM、RAG、ESP32-S3、低功耗、TTS、BLE
----
1. 背景:读者找不到书的痛苦
高校图书馆每天 5000+ 人次,高频问题:
• “《深度学习》在哪个书架?”
• “有没有类似《三体》的科幻?”
• 馆员重复回答 → 嗓子冒烟;
• 检索机老旧,触控失灵。
于是我们把 检索增强大模型 + 离线 TTS 塞进 巴掌大的小盒子,贴到书架侧面就能 语音问答 + 路径导航。
----
2. 硬件:一本书大小的 AI 盒子
部件 选型 说明
MCU ESP32-S3 双核 240 MHz,512 KB SRAM
存储 SPI Flash 16 MB 索引 + 模型 + 语音
音频 ES8311 编解码 + 3 W 喇叭 噪杂环境 75 dB
供电 5 V 1 A Type-C 插电即用,零布线
通信 BLE 5.0 手机 APP 维护
尺寸 100×60×25 mm 磁吸式书架贴
----
3. 数据:20 万本书的离线知识库
内容 规模 格式
书目元数据 20 万条 JSON(书名、作者、ISBN、书架号)
简介与主题词 2 GB 纯文本
FAQ 问答对 1 万条 CSV
语音语料 500 MB 女声 TTS 缓存
----
4. 系统架构:三步回答
读者语音 → ASR → 意图解析 → RAG检索 → TTS → 喇叭
• ASR:ESP-Skainet 离线中文,97 % 准确率;
• 意图解析:TinyBERT 4 层,2 ms;
• RAG检索:双塔向量 + BM25 融合,Top-3 结果;
• TTS:FastSpeech2-Mini,20 ms 生成 1 句。
----
5. 检索模型:3 MB 的「双塔」
塔 参数量 说明
查询塔 1.2 M 用户问题 → 128 维向量
文档塔 1.8 M 书名+简介 → 128 维向量
索引 FAISS-IVF256,PQ16 内存 6 MB,< 5 ms 查询
----
6. 训练 & 量化流水线
python train_retriever.py \--dataset lib220k \--model tiny_dual_tower \--quant int8 \--export esp32s3
• 蒸馏:教师 MiniLM → 学生 3 M
• INT8 量化:权重 + 激活全部 int8
• 关键词掩码:书名、作者、主题词高亮
----
7. 推理时序:一句话 2 秒闭环
阶段 耗时 说明
唤醒词检测 200 ms “嗨小图”
ASR 语音转文字 600 ms 离线
意图解析 5 ms TinyBERT
向量检索 5 ms FAISS
文本排序 10 ms Cross-Encoder
TTS 合成 800 ms FastSpeech2
总耗时 ≈ 2 s 读者无感等待
----
8. 实测场景
读者问题 回答示例 准确率
“三体在哪?” “二层北区 A12-3 号书架第三层” 98 %
“类似《活着》的书?” “《许三观卖血记》同层 B5-2” 94 %
“新书上架?” “本周新书 42 种,二层南区入口” 96 %
----
9. 功耗与稳定性
• 插电运行:5 V 1 A,功耗 1.2 W;
• 自动更新:BLE 每周推送 200 条新书;
• 异常兜底:离线 FAQ 本地兜底,无网可答。
----
10. 开源 & 商用
GitHub:
https://github.com/book-ai/voice-nav-box
已放出:
• ESP32-S3 固件 + 模型
• 20 万条示例索引
• 3D 打印外壳 STL
首批 300 台 已在 5 所高校部署,馆员反馈 “咨询量下降 60 %”。
----
11. 结语:让每本书都会说话
当 16 MB 存储就能记住整座图书馆,
当 2 秒就能告诉你书在哪里,
你会发现 “知识检索”已经变成了「耳边轻语」。
如果这篇文章帮你少跑两层楼,欢迎去仓库点个 Star ⭐;
也欢迎留言聊聊你把检索增强塞进过哪些「书架」!