前一段时间写了一个思源 AI 助手,之后在工作之余一直在完善它的功能。终于在最近完成了我基本的想法,于是在一系列的更新之后,项目发布了新版本。请大家多多试用和提意见,可以在帖子下方留言或者在 GitHub 上开 issue。
项目地址:Firefox2100/siyuan-ai-companion
前端仓库(编译后的版本已经包含在后端里):Firefox2100/siyuan-ai-companion-ui
界面
基本功能
目前实现了的功能有:
- 对整个笔记库进行嵌入和查询
- 在发送到 LLM 前对笔记进行分割,只保留相关度高的部分
- OpenAI 代理层,即本服务有一个 OpenAI 兼容的接口,会在提示词内插入笔记内容然后提交给上游服务
- 部分更新,只对更新了的块进行嵌入更新
- 能够对音频附件直接进行下载,转文字,说话人分析,然后写进笔记本里
- 比较用户友好的前端界面,直接捆绑进后端,更新和部署更方便
- LLM 聊天的语音输入
- 支持 CUDA,如果有大量语音转文本的需求建议使用 GPU 来处理。但是如果你的 LLM 也在 GPU 上运行,很有可能导致两个进程争抢资源,建议确保在转文本的时候没有别的东西占用 GPU
- 不再处理思源的 JSON 文件块,而是使用思源自己的 API 来获取 Markdown 格式的文档,支持所有能被转换成 Markdown 的块
目前有计划实现的功能有:
- 界面和 LLM 提示词的中文支持
- 语音转文本的中文支持
目前收到的功能请求,但是短时间内不会支持的有:
- 服务端聊天内容同步:目前所有的聊天都缓存在浏览器里,而非存在服务端。实现这个功能需要再加一个数据库,因为我觉得没有必要,暂时不打算实现。如果确实有需要,欢迎提交 PR。
- 使用 MCP 或者 function calling 获取思源笔记:这种方式对云端大模型比较有利,因为算力没有问题,模型也足够好。但是对于本地模型而言,主动查询需要模型有足够的 context 和逻辑能力,也会慢很多,暂时不考虑
部署和使用
这个服务并非思源插件,而是独立于思源笔记的服务。建议通过 docker 部署:
services:
siyuan-ai-companion:
image: firefox2100/siyuan-ai-companion:testing
restart: always
container_name: siyuan-ai-companion
environment:
SIYUAN_URL: "http://siyuan:6806"
SIYUAN_TOKEN: "your-siyuan-token"
QDRANT_LOCATION: "http://qdrant:6333"
QDRANT_COLLECTION_NAME: "siyuan_ai_companion"
OPENAI_URL: "https://api.openai.com/v1/"
COMPANION_TOKEN: "your-companion-token"
HUGGINGFACE_HUB_TOKEN: "your-huggingface-token"
# CUDA_VISIBLE_DEVICES: "" # Leave empty to use CPU
# COMPANION_LOGGING_LEVEL: "INFO"
ports:
- "8000:8000"
qdrant:
image: qdrant/qdrant:latest
restart: always
container_name: qdrant
configs:
- source: qdrant_config
target: /qdrant/config/production.yaml
volumes:
- ./qdrant_data:/qdrant/storage
siyuan:
image: b3log/siyuan:latest
command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=your-auth-code']
ports:
- 6806:6806
volumes:
- /siyuan/workspace:/siyuan/workspace
restart: unless-stopped
environment:
# A list of time zone identifiers can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
- TZ=${YOUR_TIME_ZONE}
- PUID=${YOUR_USER_PUID} # Customize user ID
- PGID=${YOUR_USER_PGID} # Customize group ID
configs:
qdrant_config:
content: |
log_level: INFO
docker 部署的思源笔记不是必须,只要有一个 API 能够连接到思源后端即可。如果你完全在自己的电脑上运行,可以用桌面版的思源笔记。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于