返回首页
最新
两者之间的区别,以及它们各自有用的原因。
嗨,HN,
我开发了一个命令行工具(CLI),用于上传文档并通过一个使用搜索工具的LLM代理进行查询,而不是将所有内容塞入上下文窗口。我录制了一个演示,使用了《CrossFit 2025 规则手册》,展示了这种方法与传统的RAG和直接上下文注入的比较。
核心见解是,运行在循环中的LLM与工具访问结合时,在知识检索任务中表现得极为有效。与其寄希望于正确的片段进入上下文,不如让代理进行迭代搜索、优化查询,并对找到的内容进行推理。
这个CLI处理完整的工作流程:
```bash
trieve upload ./document.pdf
trieve ask "关键发现是什么?"
```
您可以自定义RAG行为,检查上传状态,响应会以可扩展的来源引用流回。我非常喜欢在终端中使用这个工作流程,并且我很好奇其他人是否也觉得这种范式如此吸引人。
如果有兴趣,我考虑增加更多命令和自定义选项。该工具对于最多1000个文档片段是免费的。
源代码在GitHub上可用,并通过npm提供。
欢迎对这种方法或CLI设计提供反馈!
[1]: [https://www.youtube.com/watch?v=SAV-esDsRUk](https://www.youtube.com/watch?v=SAV-esDsRUk)
[2]: [https://news.ycombinator.com/item?id=43998472](https://news.ycombinator.com/item?id=43998472)
[3]: [https://github.com/devflowinc/trieve/blob/main/clients/cli/index.ts](https://github.com/devflowinc/trieve/blob/main/clients/cli/index.ts)
[4]: [https://www.npmjs.com/package/trieve-cli](https://www.npmjs.com/package/trieve-cli)
我一直觉得能够在帮助年轻一代学习技能以拥有光明未来的角色中工作是很酷的。这种角色我通过几种方式来实现(作为父母、机器人导师、学校董事会顾问和主日学校老师),我怀疑大多数HN读者也有相同的角色和感受。在培养软件技能方面,显而易见的是,学生和我都需要一个高效的软件环境,以便我们能够共同工作。经验丰富的工程师与初学者共同工作的这一主题是我创建`dk`作为脚本工具的背景。
我的测试对象是修过一两门AP计算机科学课程的学生(美国的高中计算机科学课程),其中一些学生曾和我实习。我需要解决几个问题:
- 开发环境必须简单易设,编程语言不能太复杂。
- 认识到编写小的、易于测试的工作单元(例如“脚本”)是我发现的初级程序员开发大型应用程序的唯一方法。
- 便宜的、受限的开发硬件(例如,内存有限且没有管理员权限的学校电脑)有时用于部署到廉价硬件目标(例如,二手安卓平板)。
我的解决方案是编写一个名为`dk`的独立二进制文件,它将脚本作为工作单元,交叉编译为独立的可执行文件,并按需下载所需的运行时和系统根。它大致位于Python和Go的同一领域。
`dk`可用于Windows、macOS和Linux/glibc主机,支持越来越多的交叉编译目标。你的`dk`脚本几乎是OCaml 4的一个完整子集:所有`dk`脚本都是OCaml,但并非所有OCaml代码都可以在`dk`中运行。与常规OCaml的其他不同之处在于,`dk`附带了一个大型库,并且我认为任何功能如果在所有支持的操作系统上都无法正常工作,就算是有缺陷的。
上述`dk`的起源确实有些奇怪(且简略),所以我并没有预料到`dk`会成为一个通用的脚本工具。然而,它确实成为了。我可以将我手写的软件封装、重用并组织成一组`dk`脚本。
温馨提示:`dk`中的交叉编译支持最近进行了全面改造,并不是所有的错误都已修复。错误信息不太友好(你需要向上滚动才能看到根本原因和解决方案),但它们会有所改善。有些进度条缺失。此外,还有一些实验性功能……`uv`风格的导入和交互式解释器是其中重要的功能……这些功能故意文档不足,因为我担心`dk`的API表面。
但它仍然运行良好,你可以在示例部分看到一些实际应用。如果你能试用一下并给`dk`一些反馈,我将非常感激!问题列表在这里:<a href="https://github.com/diskuv/dk/issues">https://github.com/diskuv/dk/issues</a>。