当前位置:首页 > 技术分析 > 正文内容

智能私有知识库RAG企业级解决方案:开源工具AnythingLLM实操指南

ruisui884个月前 (02-28)技术分析35

点击上方“顶层架构领域”,关注精彩与你分享

在数据安全和隐私保护日益受到重视的背景下,私有化部署大模型的需求日益增长。Mintplex Labs Inc. 推出的开源项目 AnythingLLM,为个人和企业提供了一种安全、高效且可定制的解决方案。该工具基于RAG(Retrieval-Augmented Generation)模型,允许用户将本地文档转换为可由大型语言模型(LLM)引用的格式,实现对话式问答和知识管理。

一、AnythingLLM的主要功能

  • 多用户支持与权限管理:支持多用户同时访问,并可设置不同权限。
  • 文档管理:支持PDF、TXT、DOCX等多种文档类型,并通过简易界面管理。
  • 聊天模式:提供对话和查询两种模式,保留历史记录,支持引用标注。
  • 技术栈简单:便于快速迭代和云部署。
  • 成本效益:对大型文档一次性嵌入,显著节约成本。
  • 开发者API:提供完整API支持自定义集成。
  • LLM:包括任何开源的 llama.cpp 兼容模型、OpenAI、Azure OpenAI、Anthropic ClaudeV2、LM Studio 和 LocalAi。
  • 嵌入模型:AnythingLLM 原生嵌入器、OpenAI、Azure OpenAI、LM Studio 和 LocalAi。
  • 向量数据库:LanceDB(默认)、Pinecone、Chroma、Weaviate 和 QDrant。

二、AnythingLLM 部署实战

1. 安装Chroma Vectorstore:通过Docker容器部署,创建集合并验证设置。

git clone https://github.com/chroma-core/chroma.git
cd chroma
docker compose up -d --build

访问向量存储API文档: http://localhost:8000/docs

2. LocalAI部署:使用CLI应用程序启动API服务器,与开源模型交互。

git clone https://github.com/go-skynet/LocalAI
cd LocalAI
docker compose up -d --pull always

容器运行后,我们需要下载、安装模型以供测试使用

增加Bert 的转换器嵌入模型:MiniLM L6

# 增加 Bert 的转换器嵌入模型
curl http://localhost:8080/models/apply 
  -H "Content-Type: application/json"
  -d '{ "id": "model-gallery@bert-embeddings" }'

# 测试嵌入模型
curl http://localhost:8080/v1/embeddings 
  -H "Content-Type: application/json"
  -d '{ "input": "The food was delicious and the waiter...",
"model": "bert-embeddings" }'


{
"created": 1702050873,
"object": "list",
"id": "b11eba4b-d65f-46e1-8b50-38d3251e3b52",
"model": "bert-embeddings",
"data": [
    {
"embedding": [
        -0.043848168,
0.067443006,
    ...
0.03223838,
0.013112408,
0.06982294,
        -0.017132297,
        -0.05828256
      ],
"index": 0,
"object": "embedding"
    }
  ],
"usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 0
 }
}

增加大模型LLM:Zephyr-7B-β

# 增加 Zephyr-7B-β 的模型
curl http://localhost:8080/models/apply 
  -H "Content-Type: application/json" 
  -d '{ "id": "huggingface@thebloke__zephyr-7b-beta-gguf__zephyr-7b-beta.q4_k_s.gguf", 
        "name": "zephyr-7b-beta" }'

# 开始 Zephyr-7B-β 对话
curl http://localhost:8080/v1/chat/completions 
  -H "Content-Type: application/json" 
  -d '{ "model": "zephyr-7b-beta", 
        "messages": [{
          "role": "user", 
          "content": "Why is the Earth round?"}], 
        "temperature": 0.9 }'


{
  "created": 1702050808,
  "object": "chat.completion",
  "id": "67620f7e-0bc0-4402-9a21-878e4c4035ce",
  "model": "thebloke__zephyr-7b-beta-gguf__zephyr-7b-beta.q4_k_s.gguf",
  "choices": [
    {
      "index": 0,
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": "\nThe Earth appears round because it is
actually a spherical body. This shape is a result of the 
gravitational forces acting upon it from all directions. The force 
of gravity pulls matter towards the center of the Earth, causing 
it to become more compact and round in shape. Additionally, the 
Earth's rotation causes it to bulge slightly at the equator, 
further contributing to its roundness. While the Earth may appear 
flat from a distance, up close it is clear that our planet is 
indeed round."
      }
    }
  ],
  "usage": {
    "prompt_tokens": 0,
    "completion_tokens": 0,
    "total_tokens": 0
  }
}

3. 部署AnythingLLM:利用Mintplex Labs官方Docker镜像安装,然后配置LocalAI后端和嵌入模型。

docker pull mintplexlabs/anythingllm:master

export STORAGE_LOCATION="/var/lib/anythingllm" && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
docker run -d -p 3001:3001 \
-v ${STORAGE_LOCATION}:/app/server/storage \
-v ${STORAGE_LOCATION}/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
mintplexlabs/anythingllm:master

访问:http://localhost:3001,我们可以在其中使用直观的 GUI 开始配置。

在配置中,我们选择 LocalAI 后端配置:通过 http://172.17.0.1:8080/v1 URL 访问

嵌入模型配置与相同的 LocalAI 后端保持一致。

接下来,配置 Chroma 向量数据库,使用URL http://172.17.0.1:8000

AnythingLLM 还有自定义选项和安全配置。为了本教程的简单起见,这里跳过这一步配置。

创建一个工作区,命名为“Playground”。

在“Playground”工作区,我们可以上传文档,进一步扩展本地知识库。

至此我们能够与文档开始进行交互式对话。

总结:

AnythingLLM是Mintplex Labs提供的创新开源工具,它们极大地简化了私有知识库的构建和管理。通过高效的RAG模型实现和直观的用户界面,这些工具不仅保障了数据的安全性,同时也提供了强大的交互式文档处理能力。随着技术的不断进步,这些工具将为企业和个人用户提供更多的可能性和价值。

了解更多详情:

AnythingLLM GitHub: https://github.com/Mintplex-Labs/anything-llm

LocalAI Docs: https://localai.io/

AnythingLLM: https://useanything.com/

关注公众号|顶层架构领域|精彩与您分享

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2353.html

标签: docker plex
分享给朋友:

“智能私有知识库RAG企业级解决方案:开源工具AnythingLLM实操指南” 的相关文章

编码 10000 个小时后,开发者悟了:“不要急于发布!”

【CSDN 编者按】在软件开发的道路上,时间是最好的老师。根据“一万小时定律”,要成为某个领域的专家,通常需要大约一万小时的刻意练习。本文作者身为一名程序员,也经历了一万小时的编程,最终悟出了一个道理:慢即是快,重视架构设计和代码质量,确保每一行代码都经得起时间的考验。作者 | Sotiris Ko...

前端路由简介以及vue-router实现原理

作者:muwoo 来源:https://zhuanlan.zhihu.com/p/37730038后端路由简介路由这个概念最先是后端出现的。在以前用模板引擎开发页面时,经常会看到这样http://www.xxx.com/login 大致流程可以看成这样:浏览器发出请求服务器监听到80 端口(或443...

Vue进阶(二十六):详解router.push()

在Vue2.0路由跳转中,除了使用 <router-link> 声明式创建 a 标签来定义导航链接,还可以借助 router 的实例方法,通过编码式编写代码来实现。router.push(location)想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 hi...

三勾点餐系统java+springboot+vue3,开源系统小程序点餐系统

项目简述前台实现:用户浏览菜单、菜品分类筛选、查看菜品详情、菜品多属性、菜品加料、添加购物车、购物车结算、个人订单查询、门店自提、外卖配送、菜品打包等。后台实现:菜品管理、订单管理、会员管理、系统管理、权限管理等。 项目介绍三勾点餐系统基于java+springboot+element-plus+u...

uni-app开发微信小程序和h5应用

#头条创作挑战赛#本文同步本人掘金平台的文章:https://juejin.cn/post/6986465633114259469最近,有个需求需要开发H5应用和微信小程序。如果针对不同的平台开发自己的一套代码,那将是一件很糟糕的事情:如果下次需要兼容支付宝小程序、快应用,那工作量随着平台的添加而...

同步和异步的区别是什么,同步和异步的代码

同步和异步的区别在于程序执行操作时是否需要等待操作完成。同步操作意味着程序在执行一个操作时会一直等待操作完成才继续执行下一个操作,而异步操作则是指程序执行一个操作时,不会等待操作完成,而是立即返回,继续执行后面的操作。以下是同步和异步的代码示例:同步代码示例:console.log("sta...