[FEAT]: 一般扩展钩子,用于自定义文档处理
作者: dimsmaul创建于 2026年9月17日更新于 2026年9月17日
标签enhancementfeature request
□你希望看到什么?
我想为选定的 AnythingLLM 处理点提出一个一般的插件/扩展机制,从文件处理开始,然后嵌入。
这一提议源于#6364,但有意提出不同的解决方案.
在6364中,我提议对SOP式文件进行结构意识/平面分解。 这个问题没有按计划解决,我认为,这实际上更清楚地突出了更广泛的问题:这种专门处理战略也许不应成为头等大事。
但是,对于受不同RAG限制的部署,这一要求本身仍然存在。
而不是将另一个块化算法上游,我想探索AnythingLLM能否暴露一个被支持的扩展接合,这样用户就可以在核心外实施专门的处理行为.
换句话说:
#6364提出了这种行为.
这个问题提出了可以让部署人员自己拥有类似行为的接合。
在概念上,摄取管道可能在文件被嵌入之前的某个地方暴露出可选的钩子:
页:1 收集器 ↓ 已解析文档 ↓ [可选扩展钩] ↓ 普通文档/块 ↓ 嵌入 ↓ 向量 DB
默认路径将完全维持在今天。
如果没有配置扩展名, AnythingLLM 将继续使用其现有的文档处理和分拆行为.
如果配置了一个扩展,它可以接收解析后的文件,并返回应通过现有嵌入管道继续运行的正态单元。
例如,界面在概念上可以看起来像:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
进程文件( {
文档,
上下文,
选项,
- 答应我
文档: 阵列
页面关联:字符串,
元数据 ?: 对象,
}>
}>
准确的API对我来说不重要. 重要部分是核心定义了稳定的输入/输出合同和生命周期,而处理算法则仍然处于核心之外.
然后插件可以执行诸如:
- 结构意识或专题意识块;
- 语义分解;
- 每平方厘米加工;
- 桌子意识处理;
- 元数据浓缩;
- 过滤或正常化;
- 特定文档格式的自定义处理;
- 其他具体部署预处理战略。
所有这些行为都无需成为核心的“任何LLM”特征。
□为什么这对我们来说很重要
我们的 AnythingLLM 部署被作为RAG 层在语音呼叫助手后方使用,而不是传统的聊天界面.
这造成了一些不同的检索限制。
在聊天中,额外的上下文往往相对便宜. 用户还可以检查之前的消息,询问后续问题,或者更自然地从微弱的回答中恢复.
在语音互动中,不必要的检索上下文的操作成本较高:
- 更多的背景可以增加端到端反应延迟;
- 不相关的相邻内容可以 . . . . . . .
内容来源: Mintplex-Labs/anything-llm