手把手教大家部署这个开源 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-frontend
ports:
-"20080:80"
depends_on:
backend:
condition:service_healthy
networks:
-sparknoteai-network
restart:unless-stopped
labels:
-"com.sparknoteai.service=frontend"
# ==================== 后端服务 ====================
backend:
image:sparknoteai/backend:${APP_VERSION:-latest}
container_name:sparknoteai-backend
ports:
-"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=false
volumes:
-backend_uploads:/app/data/uploads
depends_on:
db:
condition:service_healthy
redis:
condition:service_healthy
neo4j:
condition:service_healthy
networks:
-sparknoteai-network
restart:unless-stopped
healthcheck:
test:["CMD","curl","-f","http://localhost:8000/api/health"]
interval:30s
timeout:10s
retries:3
start_period:40s
labels:
-"com.sparknoteai.service=backend"
# ==================== PostgreSQL 数据库 ====================
db:
image:postgres:15-alpine
container_name:sparknoteai-db
env_file:
-.env
environment:
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:ro
networks:
-sparknoteai-network
restart:unless-stopped
healthcheck:
test:["CMD-SHELL","pg_isready -U sparknoteai -d sparknoteai"]
interval:10s
timeout:5s
retries:5
labels:
-"com.sparknoteai.service=database"
# ==================== Redis 缓存 ====================
redis:
image:redis:7-alpine
container_name:sparknoteai-redis
env_file:
-.env
command:redis-server--appendonlyyes--requirepass${REDIS_PASSWORD}
expose:
-"6379"
volumes:
-redis_data:/data
networks:
-sparknoteai-network
restart:unless-stopped
healthcheck:
test:["CMD","redis-cli","--pass","${REDIS_PASSWORD}","ping"]
interval:10s
timeout:5s
retries:5
labels:
-"com.sparknoteai.service=redis"
# ==================== Neo4j 知识图谱 ====================
neo4j:
image:neo4j:5-community
container_name:sparknoteai-neo4j
environment:
-NEO4J_AUTH=neo4j/${NEO4J_PASSWORD}
-NEO4J_PLUGINS=["apoc"]
-NEO4J_dbms_security_procedures_unrestricted=apoc.*
expose:
-"7474"
-"7687"
volumes:
-neo4j_data:/data
networks:
-sparknoteai-network
restart:unless-stopped
healthcheck:
test:["CMD","wget","--no-verbose","--tries=1","--spider","http://localhost:7474/"]
interval:15s
timeout:10s
retries:5
labels:
-"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=sparknoteai
POSTGRES_PASSWORD=sparknoteai123
POSTGRES_DB=sparknoteai
# ==================== Redis 配置 ====================
REDIS_PASSWORD=sparknoteai123
# ==================== Neo4j 配置 ====================
NEO4J_PASSWORD=sparknoteai123
# ==================== JWT 配置 ====================
# 生成方法:openssl rand -hex 32
SECRET_KEY=change-me-in-production
ACCESS_TOKEN_EXPIRE_MINUTES=10080
# ==================== 加密密钥 ====================
# 生成方法:openssl rand -base64 32
ENCRYPTION_KEY=change-me-in-production
# ==================== 客户端版本兼容 ====================
# 服务端兼容的客户端版本,多个用逗号分隔(空表示兼容所有版本)
COMPATIBLE_CLIENT_VERSIONS=
# ==================== 管理员账号 ====================
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123
ADMIN_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、搞机技巧、开源项目等技术,喜欢的话请关注吧!
