Ollama + Docker + AnythingLLM 搭建本地多用户AI知识库

整个过程需要准备三个工具:

Ollama: 用于运行本地大模型的管理:llama3, qwen2等
Docker:用于运行AnythingLLM。
AnythingLLM:知识库运行平台,提供知识库构建及运行的功能。

Ollama, Docker

这二个安装不再重复,参考上个贴子:
https://blog.csdn.net/qq_28171389/article/details/140068915

AnythingLLM

安装AnythingLLM

一定要装Web版, 功能比Desktop版多
参考官网: https://github.com/Mintplex-Labs/anything-llm
网上很多介绍AnythingLLM的, 但搜了很少关于docker无脑的安装, 有的根关看不懂人家在写什么, 后面找到这个链接:
https://github.com/Mintplex-Labs/anything-llm/blob/master/docker/HOW_TO_USE_DOCKER.md
先拉取:

docker pull mintplexlabs/anythingllm

由于我的是windows, 在powerShell运行:

$env:STORAGE_LOCATION="$HOME\Documents\anythingllm"; `
If(!(Test-Path $env:STORAGE_LOCATION)) {New-Item $env:STORAGE_LOCATION -ItemType Directory}; `
If(!(Test-Path "$env:STORAGE_LOCATION\.env")) {New-Item "$env:STORAGE_LOCATION\.env" -ItemType File}; `
docker run -d -p 3101:3001 `
--cap-add SYS_ADMIN `
-v "$env:STORAGE_LOCATION`:/app/server/storage" `
-v "$env:STORAGE_LOCATION\.env:/app/server/.env" `
-e STORAGE_DIR="/app/server/storage" `
mintplexlabs/anythingllm;

anythingllm在powerShell里运行

STORAGE_LOCATION 缓存设为D盘路径
3101 自定义端口

还可用Docker Compose方式, 这里我没有去试用

配置 AnythingLLM

关联Ollama,从它调取模型,这里我用了qwen:7b
在这里插入图片描述
创建管理员,一定要先My team, 用于团队/公司
在这里插入图片描述
总的大概是这样设置:
在这里插入图片描述
上传文档让模型训练:
在这里插入图片描述
可以集成google搜索
在这里插入图片描述

使用 AnythingLLM

AnythingLLM有个优势,它可以按不同业务逻辑分别上传文档,再按不同的用户去登陆使用
在这里插入图片描述
还可以集成到你的内部OA系统里去
在这里插入图片描述
在这里插入图片描述
以下是 AnythingLLM 的一些功能总结:

  1. 支持多用户实例和权限
  2. 新的自定义可嵌入式聊天小部件,可以嵌入到你的网站
  3. 支持多种文件类型(PDF,TXT,DOCX等)
  4. 通过简单的用户界面管理你的向量数据库中管理文件
  5. 提供两种聊天模式:对话和查询。对话保留先前的问题和修订。查询是针对文档的简单QA
  6. 聊天过程中的引用
  7. 100%适合云部署。
  8. “自带LLM”模型
  9. 处理大文件时极有效的节约成本措施。你永远不必为将大型文件或记录输送到聊天机器人中支付费用,比其他的文件聊天机器人解决方案节省90%的费用。
  10. 提供全面的开发者API用于自定义集成!
    同类开源项目大多基于Python语言开发。AnythingLLM采用了Javascript,前端用React,后端用Node,对于全栈工程师非常友好。

前端: React和ViteJS,实现创建和管理大模型用到的知识库

后端: Node.js Express框架,实现向量数据库的管理和所有与大模型的交互

采集器: Node.js Express框架,实现对文档的处理解析

多用户模式

这一点对于企业级应用特别关键,AnythingLLM支持多用户模式,3种角色的权限管理。

系统会默认创建一个管理员(Admin)账号,拥有全部的管理权限。

第二种角色是Manager账号,可管理所有工作区和文档,但是不能管理大模型、嵌入模型和向量数据库。

普通用户账号,则只能基于已授权的工作区与大模型对话,不能对工作区和系统配置做任何更改。

交流q:

link :  316853809
在 Spring Boot 应用中,可以使用 Java 自带的 `java.io.File` 类来操作文件,将文件保存到本地临时文件目录,可以使用 `java.io.tmpdir` 系统属性来获取系统的临时文件目录。 可以使用以下代码来保存文件到本地临时文件目录: ```java @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws IOException { String filename = file.getOriginalFilename(); String tempFilePath = System.getProperty("java.io.tmpdir") + "/" + filename; File tempFile = new File(tempFilePath); file.transferTo(tempFile); // 处理文件 return "上传成功"; } ``` 在以上代码中,首先获取上传文件的原始文件名,然后使用 `java.io.tmpdir` 系统属性获取系统的临时文件目录,拼接出临时文件的完整路径,然后创建一个 `java.io.File` 对象,将上传文件内容保存到该文件中,最后进行文件处理,返回上传成功信息。 将 Spring Boot 应用部署到 Docker 中,可以将 Docker 容器和本地文件目录进行映射,将容器内的文件保存到本地文件目录中。可以使用以下命令将容器内的 `/app/tmp` 目录映射到本地的 `/data/tmp` 目录: ``` docker run -v /data/tmp:/app/tmp your-image ``` 然后修改上传文件的临时文件路径为 `/app/tmp` 目录即可: ```java @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws IOException { String filename = file.getOriginalFilename(); String tempFilePath = "/app/tmp/" + filename; File tempFile = new File(tempFilePath); file.transferTo(tempFile); // 处理文件 return "上传成功"; } ``` 这样上传的文件就会保存到 Docker 容器中的 `/app/tmp` 目录,然后通过 Docker 容器和本地文件目录的映射,将文件保存到本地的 `/data/tmp` 目录中。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值