AI 本地私有知识库系统

Ollama+AnythingLLM 实现本地私有知识库系统

# 传统LLM应用的弊端
1 知识的局限性:模型自身的知识完全源于它的训练数据,而现有的主流大模型的训练集基本都是构建于网络公开的数据,对于一些实时性的、非公开的或离线的数据是无法获取到的,这部分知识也就无从具备。
2 幻觉问题:所有的AI模型的底层原理都是基于数学概率,其模型输出实质上是一系列数值运算,大模型自身不擅长的场景。而这种幻觉问题的区分是比较困难的,因为它要求使用者自身具备相应领域的知识。
3 数据安全性:对于企业来说,数据安全至关重要,没有企业愿意承担数据泄露的风险,将自身的私域数据上传第三方平台进行训练。

# 检索增强生成原理 
索增强生成(Retrieval-Augmented Generation,RAG),是一种使用外部知识库来补充大语言模型的上下文并生成响应的技术
RAG结合了LLM中的参数化知识和非参数化外部知识,缓解了幻觉问题,通过检索技术识别及时的信息,并增强了响应的准确性
此外,通过引用来源,RAG增加了模型输出的透明度和用户信任度。 RAG还可以通过索引相关文本语料库进行定制以适应特定领域

原理图

# 完整的RAG应用流程主要包含数据准备和应用两个阶段:
  1 数据准备:主要是将私域数据向量化后构建索引并存入数据库的过程
    主要包括:
      数据提取
      文本分割
        文本分割主要考虑两个因素
          embedding模型的Tokens限制情况
          语义完整性对整体的检索效果的影响
      向量化:向量化是一个将文本数据转化为向量矩阵的过程,该过程会直接影响到后续检索的效果
      数据入库:数据向量化后构建索引,并写入数据库的过程可以概述为数据入库过程

  2 应用阶段:根据用户的提问,通过高效的检索方法,召回与提问最相关的知识,并融入Prompt;大模型参考当前提问和相关知识,生成相应的答案,我们可以化繁为简。把RAG——Retrieval Augmented Generation理解为Retrieval And  Generation,也就是检索与生成,在加上一个数据向量和索引的工作,我们对RAG就可以总概方式地理解为“索引、检索和生成”

 

1 可以看到,RAG与LLM相结合,成为现阶段自动构建私有/本地知识库的主要手段
2 构建本地知识库有三个方面,一是LLM,懂得怎么处理自然语言;二是嵌入模型,它的工作就是把复杂的数据简化,转化成易于处理的格式;最后是向量数据库,专门存储和管理那些转化后的数据。
3 本文介绍利用Ollama和AnythingLLM构建自己的本地知识库

部署Ollama  支持GPU

# 下载ollama镜像
docker pull ollama/ollama:latest
# 启动ollama容器
docker run --gpus=all -itd -v /data2/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:latest
# 命令下载对应的模型(没有模型会自动下载)
docker exec -ti ollama bash -c "ollama run qwen:7b"
docker exec -ti ollama bash -c "ollama run llama3.1:8b"
# 命令查看模型
docker exec -ti ollama bash -c "ollama list"
# 命令运行模型 (有模型自动运行)
docker exec -ti ollama bash -c "ollama run llama3.1:8b"

部署AnythingLLM

# 创建数据目录并给权限
mkdir -p /data2/anythingllm/data
cd /data2/anythingllm
chmod -R 777 data
# 创建环境变量文件并给权限
echo """SERVER_PORT=3001
STORAGE_DIR="/app/server/storage"
UID='1000'
GID='1000'
""" >> env.txt
chmod -R 777 env.txt
# 运行容器
docker run -itd \
  --restart unless-stopped \
  --cap-add SYS_ADMIN \
  --name anythingllm \
  -p 3001:3001 \
  -v /data2/anythingllm/data:/app/server/storage \
  -v /data2/anythingllm/env.txt:/app/server/.env \
   mintplexlabs/anythingllm
   
浏览器访问 http://192.168.30.1:3001/

配置AnythingLLM

# 点中间的 Get started 开始设置向导
1 找到并点击ollama 框架 -- 选择已经下载的模型(如llama3.1:8b) 4096默认
2 其他选项 Ollama Base URL: http://192.168.30.1:11434   然后点击-->
3 多少人使用  Justme 只有我自己   my team 我的团队  你要设置密码吗? 我选No 然后点击-->  默认组件点击-->
4 邮件 地址  供我个人使用(For my personal use) 然后点击-->
5 创建工作区名称

 

posted on 2024-11-20 12:28  luokeli  阅读(142)  评论(0)    收藏  举报

导航