LLocalSearch是GitHub用户nilsherzig开发的一个完全本地运行的搜索聚合工具,基于大语言模型(LLM)代理实现。它的核心是通过本地LLM模型调用工具搜索互联网信息,帮助用户获取问题答案,且无需依赖OpenAI、Google等第三方API密钥。
核心功能
LLocalSearch是本地LLM模型的“ wrapper”(包装器),允许模型自主选择工具(如互联网搜索)获取当前信息。整个过程是递归的——模型会根据用户问题和工具返回的信息,自由决定是否多次调用工具,直到生成最终答案。用户可以实时看到代理的工作进度(如工具调用过程),以及答案对应的来源链接和日志,便于追踪信息出处。
主要特点
1. 完全本地运行:所有计算都在本地设备完成,无需上传数据到第三方服务器,隐私性更强。
2. 低硬件要求:可在“低端”硬件上运行(演示使用300欧元的GPU),门槛较低。
3. 过程透明:答案附带实时日志和来源链接,用户能清楚看到代理的思考和信息来源,便于深入研究。
4. 交互友好:支持后续问题( Follow up questions),适配手机端( mobile friendly),提供明暗模式切换。
安装与使用
项目推荐通过Docker部署,步骤如下:
1. 克隆仓库:`git@github.com:nilsherzig/LLocalSearch.git` 并进入目录。
2. 创建并编辑`.env`文件(如需修改默认设置,比如Ollama运行地址),可参考`OLLAMA_GUIDE.md`解决Ollama连接问题。
3. 启动容器:`dockercompose up d`。
开发规划
正在进行的工作:
支持LLama3模型:解决langchain库不兼容LLama3停止词的问题(已有补丁在`experiments`分支);
界面重构:参考Obsidian布局,优化面板灵活性和空间利用;
聊天历史支持:重构内部数据结构,实现对话记录存储。
未来计划:
用户账户系统:支持上传个人文档、连接Google Drive/Confluence等服务;
长期记忆功能:存储用户偏好,通过向量数据库实现个性化响应。
项目状态
当前公开版本已一年多未更新,作者正在重写项目并开展私人beta测试(避免发布不完整功能),感兴趣的用户可联系作者加入测试。
技术栈
项目主要使用以下技术开发:
Go(53.8%):后端逻辑;
Svelte(37.0%):前端界面;
TypeScript(4.3%)、JavaScript(2.0%):前端交互;
Dockerfile(1.4%)、Makefile(1.2%):部署与构建工具。
贡献与支持
项目有6位贡献者(包括作者和dependabot机器人),用户可通过Liberapay赞助作者(liberapay.com/nilsherzig)。
