思源 AI 小助手 1.3.2 更新

前一段时间写了一个思源 AI 助手,之后在工作之余一直在完善它的功能。终于在最近完成了我基本的想法,于是在一系列的更新之后,项目发布了新版本。请大家多多试用和提意见,可以在帖子下方留言或者在 GitHub 上开 issue。

项目地址:Firefox2100/siyuan-ai-companion

前端仓库(编译后的版本已经包含在后端里):Firefox2100/siyuan-ai-companion-ui

界面

Login Screen

Chat Interface

基本功能

目前实现了的功能有:

  • 对整个笔记库进行嵌入和查询
  • 在发送到 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 能够连接到思源后端即可。如果你完全在自己的电脑上运行,可以用桌面版的思源笔记。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25482 引用 • 105378 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • SCHa1

    顶一个 👍 毕竟是用到 docker 了,对纯粹使用笔记的人来说天生有门槛,难免热度低一点