搭建个人知识库 | 手把手教你本地部署大模型 一、引言今天给大家分享的是手把手教你如何部署本地大模型以及搭建个人知识库读完本文你会学习到如何使用Ollama一键部署本地大模型通过搭建本地的聊天工具了解ChatGPT的信息是如何流转的RAG的概念以及所用到的一些核心技术如何通过AnythingLLM这款软件搭建完全本地化的数据库虽然我们大多数人不需要在自己部署大模型但是我期望在本文的帮助下能够带你手把手折腾一遍。这样在使用任何软件的时候可以做到知其然知其所以然。二、你的硬件达标了么所有人都会手把手教你部署XX大模型听起来很诱人因为不需要科学上网不需要高昂的ChatGPT会员费用。但是在开启下面的教程之前我希望你能有个概念运行大模型需要很高的机器配置个人玩家的大多数都负担不起所以虽然你的本地可能可以搭建出一个知识库但是它不一定能跑的起来下面我通过一组数据来让大家有个感性的认知。以下文字来源于视频号博主黄益贺非作者实操生成文字大模型最低配置8G RAM 4G VRAM建议配置16G RAM 8G VRAM理想配置32G RAM 24G VRAM如果要跑GPT-3.5差不多性能的大模型生成图片大模型比如跑SD最低配置16G RAM 4G VRAM建议配置32G RAM 12G VRAM生成音频大模型最低配置8G VRAM 建议配置24G VRAM而最低配置我就不建议了真的非常慢这个我已经用我自己8G的Mac电脑替你们试过了。讲这个不是泼大家冷水而是因为我的文章目标是要做到通俗易懂不希望通过夸大的方式来吸引你的眼球。这是这篇文章的第二次修改我专门加的这段。原因就是因为好多小伙伴看了文章之后兴致冲冲的去实验结果发现电脑根本带不动。但是这并不妨碍我们去手把手实操一遍因为实操可以加深我们对大模型构建的知识库底层原理的了解。如果你想要私滑的体验知识库可以参考我的另一篇文章造企业级知识库好了废话不多说下面教程还是值得亲自上手搞一遍的相信走完一遍流程后你会对知识库有更深的理解。三、Ollama的安装以及大模型下载Ollama是什么Ollama是一个开源的框架旨在简化在本地运行大型语言模型LLM的过程。Ollama作为一个轻量级、可扩展的框架提供了一个简单的API来创建、运行和管理模型以及一个预构建模型库进一步降低了使用门槛。它不仅适用于自然语言处理研究和产品开发还被设计为适合初学者或非技术人员使用特别是那些希望在本地与大型语言模型交互的用户总的来说Ollama是一个高效、功能齐全的大模型服务工具通过简单的安装指令和一条命令即可在本地运行大模型极大地推动了大型语言模型的发展和应用安装Ollama官方下载地址https://ollama.com/download当安ollama之后我们可以通过访问如下链接来判断ollama是否安装成功http://127.0.0.1:11434/使用Ollama运行本地大模型当安装完成ollama之后我们就可以在命令行中运行如下命令既可以ollama run [model name]其中[model name]就是你想运行的本地大模型的名称如果你不知道应该选择哪个模型可以通过model library进行查看。这里我们选择llama2大模型llama2考虑到我机器的配置以及不同版本的内存要求我这里选择7b参数的模型当我们运行大模型的时候ollama会自动帮我们下载大模型到我们本地。三、通过Open WebUI使用大模型在默认的情况下我们需要在终端中跟大模型进行交互但是这种方法太古老了。我们基本不会使用终端命令跟Mysql打交道而是使用Navcat等客户端和Mysql进行交互。大模型也有其交互客户端这就是Open WebUI安装Open WebUIOpen WebUI是github上的一个开源项目这里我们参考其官方文档进行下载和安装。在安装之前我们需要先安装Docker安装说明如下如果是Win或者Mac系统参考文档Docker Desktop release notes注意要下载跟自己的电脑系统适配的版本例如目前的最新版本的Docker仅支持Mac OS12.0以后的系统如果Linux系统请自己上网找教程日常都可以使用Linux系统了安装Docker小Case在官方文档中我们会看到两种安装Open WebUI的方式ollama和open webui一起安装仅仅安装open webui由于我们已经安装了ollama因此我们只需要安装open webui即可复制如下命令docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main当Open WebUI安装下载完成之后我们就可以愉快的玩耍啦使用Open WebUI首先访问如下网址http://localhost:3000/auth/当你打开这个页面的时候会让你登陆这个时候我们随便使用一个邮箱注册一个账号即可和本地大模型进行对话登陆成功之后如果你已经使用过ChatGPT等类似的大模型对话网站我相信你对这个页面并不陌生。Open WebUI一般有两种使用方式第一种是聊天对话第二种是RAG能力也就是可以让模型根据文档内容来回答问题。这种能力就是构建知识库的基础之一如果你的要求不高的话我们已经搭建了一个本地大模型了并且通过Web UI实现了和大模型进行对话的功能。相信通过这么一通折腾你就理解了ChatGPT的信息流至于为什么ChatGPT的访问速度比我们自己的要快而且回答效果要好有两个原因快是因为GPT大模型部署的服务器配置高好是因为GPT大模型的训练参数多数据更优以及训练算法更好暂时无法在飞书文档外展示此内容如果你想要更加灵活的掌握你的知识库请接着往下看四、RAG是什么因为利用大模型的能力搭建知识库本身就是一个RAG技术的应用。所以在进行本地知识库的搭建实操之前我们需要先对RAG有一个大概的了解。以下内容会有些干我会尽量用通俗易懂的描述进行讲解。我们都知道大模型的训练数据是有截止日期的那当我们需要依靠不包含在大模型训练集中的数据时我们该怎么做呢实现这一点的主要方法就是通过检索增强生成RAGRetrieval Augmented Generation。在这个过程中首先检索外部数据然后在生成步骤中将这些数据传递给LLM。我们可以将一个RAG的应用抽象为下图的5个过程文档加载Document Loading从多种不同来源加载文档。LangChain提供了100多种不同的文档加载器包括PDF在内的非结构化的数据、SQL在内的结构化的数据以及Python、Java之类的代码等文本分割Splitting文本分割器把Documents切分为指定大小的块我把它们称为“文档块”或者“文档片”**存储Storage**存储涉及到两个环节分别是将切分好的文档块进行嵌入Embedding转换成向量的形式将Embedding后的向量数据存储到向量数据库检索Retrieval一旦数据进入向量数据库我们仍然需要将数据检索出来我们会通过某种检索算法找到与输入问题相似的嵌入片Output输出把问题以及检索出来的嵌入片一起提交给LLMLLM会通过问题和检索出来的提示一起来生成更加合理的答案文本加载器Document Loaders文本加载器就是将用户提供的文本加载到内存中便于进行后续的处理文本切割器Text Splitters文本分割器把Documents切分为指定大小的块我把它们称为“文档块”或者“文档片”文本切割通常有以下几个原因为了更好的进行文本嵌入以及向量数据库的存储通常大语言模型都有上下文的限制如果不进行切割文本在传递给大模型的时候可能超出上下文限制导致大模型随机丢失信息文本切割器的概念是非常容易理解的这里我们简单了解下文本切割器的工作流程将文本切割成小的语义上有意义的块通常是句子开始将这些小块组成一个较大的块直到达到某个块的大小这个会通过某种函数测量一旦达到该大小就将该块作为自己的文本片段并开始创建一个新的文本块同时保留一些重叠以保持块之间的上下文。文本嵌入模型Text Embedding models文本嵌入模型是用来将文本转换成数值向量的工具这些向量能够捕捉文本的语义信息使得相似的文本在向量空间中彼此接近。这对于各种自然语言处理任务如文本相似性比较、聚类和检索等都是非常有用的。下面是一段对嵌入的解释词嵌入Word Embedding是自然语言处理和机器学习中的一个概念它将文字或词语转换为一系列数字通常是一个向量。简单地说词嵌入就是一个为每个词分配的数字列表。这些数字不是随机的而是捕获了这个词的含义和它在文本中的上下文。因此语义上相似或相关的词在这个数字空间中会比较接近。举个例子通过某种词嵌入技术我们可能会得到“国王” - [1.2, 0.5, 3.1, …]“皇帝” - [1.3, 0.6, 2.9, …]“苹果” - [0.9, -1.2, 0.3, …]从这些向量中我们可以看到“国王”和“皇帝”这两个词的向量在某种程度上是相似的而与“苹果”这个词相比它们的向量则相差很大因为这两个概念在语义上是不同的。词嵌入的优点是它提供了一种将文本数据转化为计算机可以理解和处理的形式同时保留了词语之间的语义关系。这在许多自然语言处理任务中都是非常有用的比如文本分类、机器翻译和情感分析等。向量数据库Vector Stores向量存储Vector stores是用于存储和检索文本嵌入向量的工具。这些向量是文本数据的数值表示它们使得计算机能够理解和处理自然语言。向量存储对于支持复杂的搜索和检索任务至关重要尤其是在处理大量文本数据时。向量存储的主要功能包括高效地存储大量的文本向量快速检索与给定向量最相似的文本向量支持复杂的查询操作如范围搜索和最近邻搜索文本检索一旦数据进入向量数据库我们仍然需要将数据检索出来我们会通过某种检索算法找到与输入问题相似的嵌入片。这里主要利用了大模型的能力五、本地知识库进阶如果想要对知识库进行更加灵活的掌控我们需要一个额外的软件AnythingLLM。这个软件包含了所有Open WebUI的能力并且额外支持了以下能力选择文本嵌入模型选择向量数据库AnythingLLM安装和配置安装地址https://useanything.com/download当我们安装完成之后会进入到其配置页面这里面主要分为三步第一步选择大模型第二步选择文本嵌入模型第三步选择向量数据库构建本地知识库AnythingLLM中有一个Workspace的概念我们可以创建自己独有的Workspace跟其他的项目数据进行隔离。首先创建一个工作空间上传文档并且在工作空间中进行文本嵌入选择对话模式AnythingLLM提供了两种对话模式Chat模式大模型会根据自己的训练数据和我们上传的文档数据综合给出答案Query模式大模型仅仅会依靠文档中的数据给出答案测试对话当上述配置完成之后我们就可以跟大模型进行对话了六、写在最后我非常推崇的一句话送给大家看十遍不如实操一遍实操十遍不如分享一遍如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】