本文主要介绍给Nanobot添加知识库。知识库系统是一个轻量级但功能完备的本地向量检索解决方案,在隐私安全、检索性能和易用性之间取得了良好平衡。简单说:让 Agent 拥有长期记忆,而不只是每次对话的短期上下文。
一,为什么要安装知识库?知识库解决的核心问题: 1. 突破上下文限制 LLM 有 token 限制,无法一次性加载大量文档。知识库通过向量检索,只提取相关片段,让 Agent 能访问海量资料。 2. 私有数据安全 企业内部文档、个人笔记不能上传到云端。本地 ChromaDB 存储确保数据不外泄。 3. 减少重复搜索 网页搜过一次就入库,下次直接查知识库,省时间省 API 调用。 4. 定制化知识域 给 Agent 喂专业资料(技术文档、行业规范、产品手册),让它成为领域专家。 5. 离线可用 网络不好时,已入库的内容照样能查。 二,Nanobot知识库采用ChromaDB向量库的方案从Nanobot的小巧python结构考虑选择了ChromaDB向量库的方案(官网地址:https://chroma.org.cn/) 选择 ChromaDB 的原因: 1. 本地部署零配置 无需启动额外服务,pip 安装即用。不像 Milvus、Weaviate 需要容器或独立进程。 2. 轻量级 适合个人项目和小团队,资源占用低。nanobot 定位是本地助手,不需要分布式向量库。 3. Python 原生 纯 Python 实现,与 nanobot 技术栈无缝集成,调试方便。 4. 持久化简单 数据存为本地文件,备份就是复制文件夹,迁移无负担。 5. API 简洁 collection.add(documents=texts, embeddings=vectors)
collection.query(query_embeddings=vec, n_results=5) 几行代码完成入库和检索。 6. 成熟稳定 开源社区活跃,文档完善,问题好排查。 最终确定Nanobot 知识库是一个本地向量检索系统,基于 ChromaDB 存储和百度千帆嵌入模型,支持多种文档格式的导入和语义搜索。 核心特点:
1,数据完全本地存储,保密性强,
2,支持多种文档格式(PDF、DOCX、EPUB、HTML 等),
3,支持网页 URL 自动抓取入库,
4,基于语义相似度的向量检索。 三,Nanobot知识库安装和配置
- cd /home/Arduino/nanobot/
- uv add chromadb pymupdf python-docx ebooklib beautifulsoup4 httpx
复制代码
百度千帆 embedding-v1在`~/.nanobot/config.json` 配置如下:
- {
- "providers": {
- "baiduqianfan": {
- "apiKey": "bce-v3/ALTAK-xxx",
- "apiBase": "https://qianfan.baidubce.com/v2"
- }
- }
- }
复制代码
四,Nanobot知识库的技术架构
- Agent Layer
- Tools (agent/tools/knowledge.py)
- - kb_create - kb_delete - kb_list
- - kb_add - kb_search
-
- Manager Layer
- KnowledgeBaseManager
- - 统一管理多个知识库
- - 支持 URL 抓取、文件解析
-
- Backend Layer
- LocalKnowledgeBase (knowledge/local_kb.py)
- - ChromaDB 向量存储
- - 千帆 Embedding API
- - 文本分块与索引
-
- Storage Layer
- ~/.nanobot/workspace/knowledge/
- - chroma/ (向量数据库)
- - kb_metadata.json (知识库元数据)
复制代码
![]() 五,支持的文档格式[td]格式 | 扩展名 | 解析库 | | PDF | .pdf | PyMuPDF | | Word | .doc, .docx | python-docx | | EPUB | .epub | ebooklib | | HTML | .html, .htm | BeautifulSoup | | CSV | .csv | csv 模块 | | 文本 | .txt, .md | 直接读取 | 六,知识库工具接口[td]工具 | 功能 | 参数 | | kb_create | 创建知识库 | name | | kb_delete | 删除知识库 | kb_id | | kb_list | 列出知识库 | 无 | | kb_add | 添加文档 | kb_id + content/file_path/url | | kb_search | 搜索知识库 | kb_id, query | 七,实战将TinyML Cookbook入库1,获得一本TinyML Cookbook pdf的书籍,我在pc机上已经用GLM-OCR转为markdown格式,
2,用MobaXterm把文件上传到Q板的文件夹里面。文件位置"/home/arduino/Documents/TinyML Cookbook (2022).md"
![]()
3,在飞书中告诉Nanobot一句:将TinyML Cookbook加入知识库。
4,AI智能助手Nanobot秒级完成任务。 

知识库让 Nanobot 从"对话助手"升级为"领域专家",核心是本地存储、向量检索、多格式支持。装好依赖、配好千帆API,创建知识库后导入文档即可使用。
|