手把手教大家部署这个开源 AI 工具!太强了…支持碎片知识整理、知识图谱!
大家好,我是 Jack Bytes,一个专注于将人工智能应用于日常生活的程序猿,平时主要分享 AI、NAS、开源项目等。
兄弟们,你们是不是阅读了大量文章,但是过了一两天就回想不起来了?
明明自己摄取了很多知识,但却始终无法串起来,这些知识在大脑中存在,但却不知如何运用。
造成这个问题最主要的原因是我们每天获取了大量碎片化的知识,却没办法将其整理成个人的知识体系。
今天,手把手教大家部署一个 AI 功能,能够收藏你阅读过的文档、并自动整理成知识图谱!让你通过可视化的方式构建知识体系!
下面一起来看下吧!
一、什么是SparkNoteAI
知语拾光 · 让知识如光般照亮你的世界
SparkNoteAI 是一个现代化的知识整理与管理系统,融合了大模型智能总结、知识图谱可视化和多平台内容采集能力。帮助你从碎片化信息中构建结构化知识体系。
目前支持Web 端、桌面端、手机端,通过后端服务实现三端互通!

具备如下功能特点:
-
笔记管理:Markdown 编辑器、实时预览、标签分类、笔记导出(ZIP) -
碎片化内容采集: 支持微信公众号、小红书多平台导入,后台任务队列异步处理 -
知识图谱: LLM 智能提取概念与关系,2D 力导向图可视化,构建状态实时轮询 -
AI助手: 支持 多 LLM 提供商支持(OpenAI / Anthropic / Azure / 阿里云),可切换模型
同时具备可扩展的架构设计、安全机制、主题切换,最终的是支持本地部署!
项目地址(Github):spark-ai-boy/SparkNoteAI
二、部署
接下来,手把手教大家在腾讯云上部署这个开源项目。
2.1 准备部署环境
在部署之前,需要先创建一个服务器。
可以通过下面的链接购买服务器,限时99/年,也可以点击原文直接购买:
https://curl.qcloud.com/6zr7XNOj

服务器创建完成之后,就可以在控制台看到了:

进入到服务器详情页,把服务器的操作系统重装为 ubuntu:

等系统重装完成之后,通过 ssh 登录到服务器,执行下面命令安装宝塔面板:
if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec
宝塔面板安装完成之后,进入到面板首页(注意需要在腾讯云对应服务器的防火墙放行宝塔面板的端口):

点击进入到 Docker 页面,并点击立即安装:

安装完成之后,所依赖的环境就准备好了。
2.2 部署SparkNodeAI
在宝塔的 Docker 页面点击「容器编排」,并点击添加容器编排:

在弹出的页面中依次填写「编排名称」、「Compose 内容」、「.env内容」:

其中「Compose 内容」按如下填写:
# 生产环境 Docker Compose 配置# 包含前端 + 后端 + 数据库 + Redis + Neo4j# Nginx 内置反向代理:/api 自动转发到后端,无需额外配置services:# ==================== 前端服务 ====================frontend:image:sparknoteai/frontend:${APP_VERSION:-latest}container_name:sparknoteai-frontendports:-"20080:80"depends_on:backend:condition:service_healthynetworks:-sparknoteai-networkrestart:unless-stoppedlabels:-"com.sparknoteai.service=frontend"# ==================== 后端服务 ====================backend:image:sparknoteai/backend:${APP_VERSION:-latest}container_name:sparknoteai-backendports:-"8000:8000"environment:# 注意:不使用 env_file,避免 APP_VERSION 覆盖 Docker 镜像构建时的版本号-DATABASE_URL=postgresql://${POSTGRES_USER:-sparknoteai}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB:-sparknoteai}-REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379/0-SECRET_KEY=${SECRET_KEY}-ACCESS_TOKEN_EXPIRE_MINUTES=${ACCESS_TOKEN_EXPIRE_MINUTES:-10080}-ENCRYPTION_KEY=${ENCRYPTION_KEY}-COMPATIBLE_CLIENT_VERSIONS=${COMPATIBLE_CLIENT_VERSIONS:-}-ADMIN_USERNAME=${ADMIN_USERNAME:-admin}-ADMIN_PASSWORD=${ADMIN_PASSWORD}-ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}-NEO4J_URI=bolt://neo4j:7687-NEO4J_PASSWORD=${NEO4J_PASSWORD}-DEBUG=falsevolumes:-backend_uploads:/app/data/uploadsdepends_on:db:condition:service_healthyredis:condition:service_healthyneo4j:condition:service_healthynetworks:-sparknoteai-networkrestart:unless-stoppedhealthcheck:test:["CMD","curl","-f","http://localhost:8000/api/health"]interval:30stimeout:10sretries:3start_period:40slabels:-"com.sparknoteai.service=backend"# ==================== PostgreSQL 数据库 ====================db:image:postgres:15-alpinecontainer_name:sparknoteai-dbenv_file:-.envenvironment:POSTGRES_DB:${POSTGRES_DB:-sparknoteai}POSTGRES_USER:${POSTGRES_USER:-sparknoteai}POSTGRES_PASSWORD:${POSTGRES_PASSWORD}volumes:-postgres_data:/var/lib/postgresql/data-./postgres/init.sql:/docker-entrypoint-initdb.d/init.sql:ronetworks:-sparknoteai-networkrestart:unless-stoppedhealthcheck:test:["CMD-SHELL","pg_isready -U sparknoteai -d sparknoteai"]interval:10stimeout:5sretries:5labels:-"com.sparknoteai.service=database"# ==================== Redis 缓存 ====================redis:image:redis:7-alpinecontainer_name:sparknoteai-redisenv_file:-.envcommand:redis-server--appendonlyyes--requirepass${REDIS_PASSWORD}expose:-"6379"volumes:-redis_data:/datanetworks:-sparknoteai-networkrestart:unless-stoppedhealthcheck:test:["CMD","redis-cli","--pass","${REDIS_PASSWORD}","ping"]interval:10stimeout:5sretries:5labels:-"com.sparknoteai.service=redis"# ==================== Neo4j 知识图谱 ====================neo4j:image:neo4j:5-communitycontainer_name:sparknoteai-neo4jenvironment:-NEO4J_AUTH=neo4j/${NEO4J_PASSWORD}-NEO4J_PLUGINS=["apoc"]-NEO4J_dbms_security_procedures_unrestricted=apoc.*expose:-"7474"-"7687"volumes:-neo4j_data:/datanetworks:-sparknoteai-networkrestart:unless-stoppedhealthcheck:test:["CMD","wget","--no-verbose","--tries=1","--spider","http://localhost:7474/"]interval:15stimeout:10sretries:5labels:-"com.sparknoteai.service=neo4j"# ==================== 数据卷 ====================volumes:# 后端backend_uploads:# 数据库postgres_data:redis_data:neo4j_data:# ==================== 网络 ====================networks:sparknoteai-network:driver:bridge
「.env内容」按如下填写:
# SparkNoteAI 环境变量配置# 复制此文件为 .env 即可使用# 开发环境:cp docker/.env.example docker/.env# 生产环境:复制后修改密码和域名# ==================== 版本配置 ====================# APP_VERSION 由 Docker 镜像构建时写入(--build-arg),不需要在 .env 中设置# 仅用于 docker-compose 的 image 标签引用APP_VERSION=latest# ==================== 应用配置 ====================DEBUG=false# ==================== 数据库配置 ====================POSTGRES_USER=sparknoteaiPOSTGRES_PASSWORD=sparknoteai123POSTGRES_DB=sparknoteai# ==================== Redis 配置 ====================REDIS_PASSWORD=sparknoteai123# ==================== Neo4j 配置 ====================NEO4J_PASSWORD=sparknoteai123# ==================== JWT 配置 ====================# 生成方法:openssl rand -hex 32SECRET_KEY=change-me-in-productionACCESS_TOKEN_EXPIRE_MINUTES=10080# ==================== 加密密钥 ====================# 生成方法:openssl rand -base64 32ENCRYPTION_KEY=change-me-in-production# ==================== 客户端版本兼容 ====================# 服务端兼容的客户端版本,多个用逗号分隔(空表示兼容所有版本)COMPATIBLE_CLIENT_VERSIONS=# ==================== 管理员账号 ====================ADMIN_USERNAME=adminADMIN_PASSWORD=admin123ADMIN_EMAIL=admin@example.com
有几点需要注意的:
-
SECRET_KEY需要实际执行这个命令生成,并替换到.env中:openssl rand -hex 32 -
ENCRYPTION_KEY需要实际执行这个命令生成,并替换到.env中:openssl rand -base64 32 -
可以自行修改 .env中的管理员信息
填写完成之后,点击保存,即可启动项目。出现下面内容表示启动成功:

然后,需要在防火墙放行 20080 和 8000 端口。
这样,服务就部署好了。
2.3 web端
直接在浏览器输入http://ip:20080,即可访问 web 端界面:

登录之后界面如下:

可以在「设置」中配置大模型:

然后在场景配置中,分别在「笔记管理」、「知识图谱」、「AI 助手」中选择刚才添加的大模型:

接下来导入几篇文章看看:

导入完成之后,就可以在笔记列表看到导入的内容了:

同时系统也自动根据导入的笔记构建了知识图谱:

在知识图谱界面,点击对应的实体概念(也叫做节点),能够在右侧显示出关联的笔记:

除了支持导入笔记之外,还支持自己创建笔记:

除此之外,SparkNoteAI还支持 AI 助手:

2.4 桌面端
除了 web 端,SparkNoteAI还支持桌面端,可以在release页面下载:

在桌面端可以设置后端服务器的地址:http://ip:8000:

在桌面端登录之后,所有数据会自动同步:

知识图谱:

2.5 手机端
由于 IOS 的封闭生态,目前手机端只支持安卓端下载,IOS 端需要大家自行编译。安卓端同样可以在release页面下载。
手机端也可以配置服务器地址:

登录之后,可以看到刚才导入和创建的笔记:
还有知识图谱:

另外,大家在阅读公众号的时候,也可以直接把公众号文章分享到SparkNoteAI:

然后点击导入即可:

极大的方便了大家将喜欢的文章快速收藏到SparkNoteAI,并自动构建知识图谱。
三、总结
针对大众普遍存在的碎片化知识难以沉淀、信息无法串联形成结构化知识体系的痛点,本文全面介绍了开源知识管理系统SparkNoteAI,并提供了保姆级的云端部署教程与全端使用指南。
大家感兴趣的话快去试试吧!
我是 Jack Bytes
一个专注于将人工智能应用于日常生活的半吊子程序猿!
平时主要分享 AI、NAS、Docker、搞机技巧、开源项目等技术,喜欢的话请关注吧!

夜雨聆风