Deepseek构建本地知识库

发布于:2025-09-14 ⋅ 阅读:(33) ⋅ 点赞:(0)

一.本地部署Deepseek

Ollama 介绍

目前市面上主流的,成本最低的部署本地大模型的方法就是通过 Ollama 了:

Ollama 是一个开源的本地大语言模型运行框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。

核心功能:

  • 简化部署:Ollama 简化了在 Docker 容器中部署大型语言模型的过程,即使是非专业用户也能轻松管理和运行这些复杂的模型。
  • 模型管理:支持多种流行的大型语言模型,如 Llama、Falcon 等,并提供丰富的命令行工具和用户友好的 WebUI 界面。
  • 模型定制:用户可以通过 Modelfile 文件自定义模型参数和行为,实现模型的个性化设置。

技术优势:

  • 轻量级与可扩展:Ollama 保持较小的资源占用,同时具备良好的可扩展性,允许用户根据硬件条件和项目需求进行优化。
  • API 支持:提供简洁的 API 接口,方便开发者集成到各种应用程序中。
  • 兼容 OpenAI 接口:Ollama 支持 OpenAI 的 API 标准,可以作为 OpenAI 的私有化部署方案。

使用场景:

  • 本地开发:开发者可以在本地环境中快速部署和测试大型语言模型,无需依赖云端服务。
  • 数据隐私保护:用户可以在本地运行模型,确保数据不离开本地设备,从而提高数据处理的隐私性和安全性。
  • 多平台支持:Ollama 支持 macOS、Windows、Linux 以及 Docker 容器,具有广泛的适用性。

Ollama 的目标是让大型语言模型的使用更加简单、高效和灵活,无论是对于开发者还是终端用户。

Ollama 安装和使用

Ollama 的下载和安装非常简单,尤其是对于 MAC 用户:

打开浏览器,访问 Ollama 官方网站:https://ollama.com/download,下载适的安装包。

下载完成后,直接双击安装包并按照提示完成安装。

安装完成后,我们直接打开命令行执行 ollama --version 判断是否安装成功:

在这里插入图片描述
ollama 会在我们本地服务监听 11434 端口:

在这里插入图片描述
然后我们可以直接使用 ollama run 模型名称 来下载和运行我们想要的模型。

Ollama 支持的模型

ollama 支持的模型列表,我们可以到 https://ollama.com/search 查看:
在这里插入图片描述
另外 ollama 还支持下面这些主流模型:在模型详情页我们可以看到目前支持的模型的不同版本(具体的参数含义我们在上见介绍过了),包括每个模型展用的磁盘大小:注意这里不是说你磁盘有这么大就够了,满血版(671b)虽然只需要 404GB 的磁盘空间,对内存、显卡、CPU 等其他硬件也有极高要求。

我试了下,我的设备比较垃圾,最多只能带动7b、14b 这些。

然后,直接在控制台使用 ollama run 模型名称 来下载我们想要的模型就可以了:

在这里插入图片描述

下载完成后可以直接在命令行运行:

在这里插入图片描述
目前我们已经拥有了一个基础的本地模型,但是这种交互方式太不友好了,下面我们通过一些工具来提升我们本地模型的使用体验。

二.Chatbox客户端

Chatbox客户端 + Ollama - 交互

目前市面上有很多可以在本地与 AI 模型交互的客户端,我认为做的较好的还是 Chatbox

Chatbox 的安装和使用

Chatbox 是一款开源的 AI 客户端,专为与各种大型语言模型进行交互而设计。它支持包括 Ollama 在内的多种主流模型的 API 接入,无论是本地部署的模型,还是其他服务提供商的模型,都能轻松连接。此外,Chatbox 提供了简洁直观的图形界面,让用户无需复杂的命令行操作,就能与模型进行流畅的对话。它支持了目前市面上所有主流模型,并且兼容多个平台,交互体验也比较好,目前在 Github 上已经有接近 29K Star

使用方式也比较简单,官方(https://chatboxai.app/zh)直接下载适合你系统的客户端:

在这里插入图片描述

下载后打开客户端,模型提供方选择 Ollama API,API 域名就是我们上面提到了本地 11434 端口的服务,另外它可以自动识别你的电脑上已经通过 Ollama 安装的模型:

在这里插入图片描述
在这里插入图片描述
然后就可以在聊天窗选择到你的本地模型了:
在这里插入图片描述

三.Anything LLM 客户端-打通本地知识库

RAG 架构介绍

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索与生成模型的人工智能技术,旨在通过检索外部知识库中的信息来增强语言模型的生成能力。

有点抽象,简单来说就是一种让 AI 更聪明回答问题的方法,它分为三个步骤:找资料、整理资料和回答问题。首先,它会在一个知识库(就像一个装满资料的书架)里找到和问题相关的部分;然后,把找到的内容整理成简单易懂的形式;最后,用整理好的内容生成一个清晰准确的回答。这种方法让机器的回答更准确、更有依据,还能随时更新知识库,用最新的信息来回答问题。
在这里插入图片描述

在这个架构图里,主要有三个概念:LLM(Large Language Model,大语言模型)、Embedding(嵌入)和 Vector Database(向量数据库),这三个概念大家最好了解一下,因为后面工具的使用就是围绕这三个概念来的,LLM 就不用多说了,主要看另外两个概念:

  • Embedding(嵌入):通过一个专门的模型来把你上传的文本、表格数据等本地文件处理成机器能理解的 “数字代码”。相似的文本在这个向量空间中距离会更近。比如,“苹果”和“水果”这两个词的嵌入向量就会比较接近,而“苹果”和“汽车”就会离得很远。
  • Vector Database(向量数据库):用来存储上一步处理好的 “数字代码” 的数据库,它能够高效地存储和检索这些向量。当你有一个问题时,它会把问题转换成向量,然后在这个仓库里快速找到和问题最相关的向量。比如,你问“苹果是什么?”它会在这个仓库里找到和“苹果”相关的向量,比如“水果”“红色”“圆形”等。

那这三个概念的协作就组成了 RAG 架构:

  • 检索(Retrieve):当用户提出一个问题时,首先通过 Embedding 模型将问题转换成向量,然后在 Vector Database 中检索与问题向量最相似的文档向量。这一步就像是在图书馆里找到和问题最相关的书籍。
  • 增强(Augment):检索到的文档向量会被提取出来,作为上下文信息,和原始问题一起输入到 LLM 中。这一步就像是把找到的书里的关键内容摘抄下来,整理成一个简洁的笔记,然后交给写作助手。
  • 生成(Generate):LLM 根据整理好的上下文信息,生成一个准确且连贯的回答。这一步就像是写作助手根据笔记,写出一个完整的、让人容易理解的答案。

Anything LLM 的安装和使用

这里我们用到的工具叫 Anything LLM

Anything LLM 是一款基于 RAG架构的本地知识库工具,能够将文档、网页等数据源与本地运行的大语言模型(LLM)相结合,构建个性化的知识库问答系统。它支持多种主流模型的 API 接入方式,如 OpenAI、DeepSeek 等。

安装使用的方式也比较简单,我们直接访问 Anything LLM 的官方网站:https://anythingllm.com/desktop,选择适合你操作系统的版本进行下载。

在这里插入图片描述

下载完成后,运行安装包并按照提示完成安装,安装完成后,打开 Anything LLM 应用,第一步就是选择大模型,这里我们看到 AnythingLLM 同样支持大部分的主流模型提供商,我们选择 Ollama,工具会自动读取我们本地已经安装的模型:

在这里插入图片描述

然后下一步应该是选择前面我们提到的 Embedding(嵌入模型)和 Vector Database(向量数据库),由于我之前选择过了,所以这里默认记住了我之前的选项,然后向量数据库我们也选择默认的 LanceDB,它也是完全运行在本地且免费的。

嵌入模型其实也非常重要,它处理的准确性直接决定了基于知识库回答的准确度,我们可以看到 OPEN AI 也提供了嵌入模型,而且 OPEN AI 的嵌入模型目前应该是最强大的,但是 OPEN AI 的嵌入模型需要联网和付费。我们这里先选的是默认的 AnythingLLM 提供的嵌入模型,它是完全运行在本地且免费的嵌入模型,当然准确度就比较一般了。

在这里插入图片描述

然后进来就是一些引导话术,我们可以到设置里先把语言改为中文:

在这里插入图片描述

Anything LLM 设置知识库

知识库的质量其实也直接决定了模型基于知识库回答的效果,AI 友好的知识库结构,首先应层次清晰,按主题、领域或功能分类,建立从概括到具体的合理层级,像图书馆分类摆放书籍;还要易于检索,有精准关键词索引、全文检索功能和智能联想,方便快速定位知识;并且通过知识图谱、交叉引用建立数据关联,形成知识网络。

准备知识库数据:这里我随便搞了点数据:

在这里插入图片描述

然后我们点击工作区的上传图标:

在这里插入图片描述

Anything LLM 支持上传多种类型的文件,包括常见的文本文件(如 TXT、Markdown)、文档文件(如 PDF、Word、PPT、Excel)、数据文件(如 CSV、JSON) 等等:

把准备的知识库文件上传上去,并且添加到当前工作区,点击保存:

在这里插入图片描述

然后我们测试一下:

在这里插入图片描述

另外 Anything LLM 还支持直接贴网页链接来构建知识库,我们尝试贴一个 Vue 的文档进去:

在这里插入图片描述

效果也是可以的:

在这里插入图片描述

不过网页一般都属于非结构化的数据,不利于模型检索,推荐还是先在本地处理成 AI 友好的格式再上传,效果更好。

Anything LLM 也可以联网

另外, Anything LLM 本身还提供了非常强大的 Agent 能力,例如网页深度抓取、生成图表、链接 SQL 数据库、等等。

当然也支持 Web 搜索的 Agent,测试的话推荐大家选 SearXNGDuckDuckGo 两个免费的搜索引擎,当然效果不如付费的 Google、Bing 的要好。

在这里插入图片描述
下面我们测试一下,在聊天区打出 @ 就可以调起 agent:

在这里插入图片描述

现在,你拥有了一个带本地知识库的本地大模型,完全不用担心信息泄漏、卡顿、付费等问题。

Anything LLM 的 API 调用

但是,在客户端下使用还是太局限了,Anything LLM 还提供了 API 调用的能力,这样我们就可以通过代码来灵活定制我们的使用场景,可以做很多事情,比如:私人知识管理工具、企业内部智能客服等等。

在开始 API 调用之前,我们先要明确 Anything LLM 的两个核心概念:

  • Workspace:一个独立的环境,用于存储和管理与特定主题或项目相关的文件和数据。用户可以在工作区中上传文件、配置参数,并与模型进行交互。每个工作区的数据是独立的,互不干扰,方便用户对不同主题或项目进行分类管理。
  • Thread:工作区中的一次具体对话记录,代表用户与模型之间的一系列交互。它会记录用户的问题和模型的回答,保持对话的连贯性。用户可以在一个工作区中创建多个线程,分别处理不同的问题或任务,方便管理和追溯每次对话的内容。

我们可以在设置 - 工具 - API 密钥下创建 API 密钥,并且查看 Anything LLM 提供的 API 文档:

在这里插入图片描述
可以看到, Anything LLM 提了非常详细的 API,基本上客户端内能做的事情都能使用 API 调用,包括各种设置、知识库上传、与大模型交互等等 ,点开每个 API 可以看到具体的参数详情,也可以直接测试调用:

复制创建好的API 秘钥到这里

在这里插入图片描述

调用获取workspace的方法获得workspace的slug

在这里插入图片描述
最常用的当然就是和大模型聊天的接口,因为 Anything LLM 中与大模型的交互都发生在 Workspace 下的 Thread 中:
Anything LLM 在本地启动的端口默认是 3001 ,关键参数:apiTokenslugthreadSlug
在这里插入图片描述

我们看到关键的两个参数是 slugthreadSlug ,其实这两个参数就分别代表 WorkspaceThread 的唯一标识,在客户端我们是看不到这两个标识的,我们可以通过接口创建新的 WorkspaceThread 来获取,或者通过接口查询已有的 WorkspaceThreadslug