Skip to content

RAG #2

Description

@OpaqueGlass

此issue转移,由主体功能另一个项目处理 OpaqueGlass/syplugin-vectorIndexClient#1

基于lightrag的问答已经迁移到新插件:OpaqueGlass/syplugin-vectorIndexClient,对应服务端有所更改、直接使用LightRAG-server,不再使用我再封装的API。

问题

  • 完成外接插件的基本功能;
  • 本插件重新接入API;
  • 为段落块返回时,提供1层的双链信息;
  • 支持排除文档;
原有尝试过程记录 尝试中,如果您有更好的实现方案,请在此issue下评论。

问题

  • python服务端;(P.S.但完全可以做成python-mcp应用,这样的话会放弃本插件;使用前端插件做mcp,或许有点抽象了)
  • 连接服务;
  • 选择提交索引的内容;
  • 拆分插件:将自动提交索引等拆分为vectorIndexClient;
  • 文件路径过滤:不索引黑名单
  • 开始:全量索引;
  • 插件启动后端服务(命令行);
  • 过滤,避免分块结果过于细碎没有实质内容;
  • 通知文档变更;(对变化做出响应,重新索引或计算嵌入向量,注意性能问题,编辑期间应避免反复触发)
  • 以RAGProvider的形式直接接入其他后端:使用Chroma API、LightRAG server API;
  • 回答超时;(MCP客户端对响应回复有时间要求) (定时汇报进度)
  • 插件后端调整:
    • 后端接入chroma;
    • 返回前K个相似结果,结果返回携带docId, blockId;
    • update形式的更新,而不是新增条目;
    • 缓存队列,避免停止后丢失为索引的内容;
  • 本插件重新接入API;
    • 为段落块返回时,提供1层的双链信息;

另外创建一个插件,提供将数据(定时或根据变动触发)传送到向量数据库后端的功能。

A. 使用 transformer.js 与 Chroma 的ts客户端功能,和Chroma服务端通信,在思源笔记前端完成文本特征嵌入,再保存到后端;

B. 另外实现python脚本,启动http服务,对外暴露api(基于id的向量更新;查询等);本插件通过API将文本发送到python后端,在python后端完成文本特征嵌入,插件也通过python服务端完成查询;


考虑到目前有大量工作致力于RAG后端构建,插件将转为使用(或套壳)已有的RAG后端,主要结合Python完成;在web端使用transformer.js进行嵌入初步尝试可行,但将不再进一步尝试。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Status
In Progress 正在进行

Relationships

None yet

Development

No branches or pull requests

Issue actions