当前位置:首页 » 《随便一记》 » 正文

【大模型】Ollama+WebUI+AnythingLLM搭建本地知识库

14 人参与  2024年11月14日 11:21  分类 : 《随便一记》  评论

点击全文阅读


目录

1 部署Ollama

1.1 下载镜像ollama

1.2 运行ollama

1.3 验证

2 模型选型

3 安装模型

3.1 选择模型安装

 3.2 删除模型(选看)

4 安装webUI

4.1 拉镜像

 4.2 启动服务

5 访问

5.1 注册

5.2 登录 

5.3 设置

6 使用 

7 使用api来调用

8 安装AnythingLLM搭建本地知识库

8.1 拉取镜像

8.2 创建目录等

8.3 为目录赋权限

8.4 启动服务

8.5 验证访问

8.6 配置 AnythingLLM,搭建本地知识库

8.7 知识库管理


前言:部署属于自己的大模型,优点:离线运行、隐私保护、开发和测试,配合AnythingLLM搭建本地知识库,同时支持API接口调用

1 部署Ollama

Download Ollama on macOS

上面可下载不同版本的,这里是docker版本的

1.1 下载镜像ollama

docker pull ollama/ollama:latest

1.2 运行ollama

docker run -d \  -v /opt/ai/ollama:/root/.ollama \  -p 11434:11434 \  --restart always \  --name ollama \  ollama/ollama:latest

1.3 验证

http://IP:11434/

 

2 模型选型

根据电脑选型

3 安装模型

3.1 选择模型安装

不是都需要按 根据需求安装,这里去找https://ollama.com/library

docker exec -it  ollama ollama run gemma:2b  docker exec -it  ollama ollama run llama3.1  docker exec -it  ollama ollama run phi3  docker exec -it  ollama ollama run qwen2.5

 这里就注意了模型版本了哦,我就没有使用上面的 现在了下面的这个

docker exec -it  ollama ollama run qwen2.5:1.5b

 3.2 删除模型(选看)

ollama listollama rm  模型名称

4 安装webUI

4.1 拉镜像

docker pull ghcr.io/open-webui/open-webui:main

 4.2 启动服务

docker run -d -p 3001:8080 --add-host=host.docker.internal:host-gateway -e OLLAMA_BASE_URL="http://IP:11434" -v open-webui:/app/backend/data  --name open-webui --restart always ghcr.io/open-webui/open-webui:main   # IP 要记得改

5 访问

http://IP:3001

5.1 注册

5.2 登录 

5.3 设置

右上角可设置系统回复语言和规则

6 使用 

7 使用api来调用

import requestsimport json# 设置API端点和请求数据api_url = "http://IP:11434/api/generate"  # 替换为实际的API端点payload = {    "model": "qwen2.5:1.5b", # 你使用的模型    "prompt": "这是我第一次来测试,为什么我问的每次都不一样",  # 替换为实际的输入文本    "stream": False}# 发送POST请求response = requests.post(api_url, headers={"Content-Type": "application/json"}, data=json.dumps(payload))# 处理响应数据if response.status_code == 200:    response_data = response.json()    # 提取并打印所需的信息    print(response_data)  # 假设响应数据中包含"generated_text"字段    print(response_data['response'])  # 假设响应数据中包含"generated_text"字段else:    print(f"Error: {response.status_code}, {response.text}")

8 安装AnythingLLM搭建本地知识库

是一款私人ChatGPT工具,由LangChain公司(原Mintplex Labs Inc.)开发。它是一个全栈应用程序,能够将任何文档、资源或内容片段转化为上下文,供任何大语言模型(LLM)在聊天时作为参考使用。AnythingLLM旨在为用户提供构建私有ChatGPT的便利,使用户能够充分利用现有的LLM技术,在私有环境中构建自己的ChatGPT。

主要功能:

多用户管理和权限控制: 让团队协作更轻松,每个人都能安全地使用 LLM。
AI Agent 加持: 内置强大的 AI Agent,可以执行网页浏览、代码运行等复杂任务,自动化程度更高。
可嵌入聊天窗口: 轻松集成到您的网站或应用中,为用户提供 AI 驱动的对话体验。
广泛的文件格式支持: 支持 PDF、TXT、DOCX 等多种文档类型,满足不同场景需求。
向量数据库管理: 提供简单易用的界面来管理向量数据库中的文档,方便知识管理。
灵活的对话模式: 支持聊天和查询两种对话模式,满足不同场景需求。
信息来源追踪: 聊天过程中会提供引用的文档内容,方便追溯信息来源,增强结果可信度。
多种部署方式: 支持 100% 云部署,也支持本地部署,满足不同用户的需求。
自定义 LLM 模型: 可以使用您自己的 LLM 模型,定制化程度更高,满足个性化需求。
高效处理大型文档: 相较于其他文档聊天机器人解决方案,AnythingLLM 在处理大型文档时效率更高,成本更低,最多可节省 90% 的成本。
开发者友好: 提供全套开发者 API,方便自定义集成,扩展性更强。

8.1 拉取镜像

  docker pull mintplexlabs/anythingllm

8.2 创建目录等

export STORAGE_LOCATION=$HOME/anythingllm && \mkdir -p $STORAGE_LOCATION && \touch "$STORAGE_LOCATION/.env"

 这个命令可检查目录

ls -la $STORAGE_LOCATION

8.3 为目录赋权限

cd root# 为目录anythingllm赋写权限chmod 777 anythingllm 

8.4 启动服务

这个命令可以

sudo docker run -d \ --name anythingllm \ --add-host=host.docker.internal:host-gateway \ --env STORAGE_DIR=/app/server/storage \ --health-cmd "/bin/bash /usr/local/bin/docker-healthcheck.sh || exit 1" \ --health-interval 60s \ --health-start-period 60s \ --health-timeout 10s \ --cap-add SYS_ADMIN \ -p 3002:3001/tcp \ --restart=always \ --user anythingllm \ -v ${STORAGE_LOCATION}:/app/server/storage \ -v ${STORAGE_LOCATION}/.env:/app/server/storage/.env \ -w /app \ mintplexlabs/anythingllm 

--add-host 配置是为了访问同台机器上的ollama服务

8.5 验证访问

http://IP:3002/

8.6 配置 AnythingLLM,搭建本地知识库

选择大模型,在这里我们选择刚刚安装好的 Ollama,然后设置参数:

指定 Ollama Base URL 为 http://host.docker.internal:11434  (我没有变直接使用默认)
指定 Chat Model Selection 为 qwen2.5:1.5b
指定 Token context window 为 4096 (这里的 token 数量视情况而定,一般来说越大会越准确但解析等待时间越长)

 

 后面一步我跳过了

确认相关信息之后,制定工作空间名称,下一步,就会得到如下界面

这个时候就可以上传文档,并将文档移入工作区,作为本地知识库 

这个时候就可以进行问答测试了,如下图。第一次未上传本地文件提问时,LLM 并没有给出答案,在上传了本地文件作为知识库后,再次提出相同问题,LLM 根据知识库内容给出了相应的回答。

 

8.7 知识库管理

当然这些是最简单的本地知识库搭建,除此之外 AnythingLLM 还提供了灵活的配置供给管理,可以设置例如语料分割参数、修改 Chat mode、修改 Embedding chunk 的大小(用于设置向量模型处理资料的颗粒度)等等。

另外值得说明一下的是,一般来说,参数更大的模型处理能力以及回答的内容效果会更好,举个例子,在之前用 Ollama 下载的 llama3.1:8b 模型与 llama3.1:70b 模型相比,肯定是 llama3.1:70b 的效果更好。

扩展:在大模型中,b 指的是 10 亿的参数量,8b就是 80 亿的参数,70b 就是 700 亿的参数。

当前最新开源的 Meta 的 llama3.1:405b 就意味着有 4050 亿的参数量,是当前最大最强的开源大模型(在基准测试中 llama3.1 在大多数方面都强过了 GPT4O)

当然参数越多所需要的算力就越大,需要的性能也就越高,在本地部署就需要根据自身的设备条件进行适合的选择


点击全文阅读


本文链接:http://zhangshiyu.com/post/185911.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1