Deepseek本地部署详细指南!从 Ollama 到个人知识库应用(附教程)

利用LangChain实现RAG 通过实际代码例子详细阐述如何实现RAG(检索增强生成) 阅读详情

系统介绍

  1. mbp pro

一、Ollama 安装与配置

1.1 跨平台安装指南

Ollama 作为本地运行大模型的利器,支持三大主流操作系统:

# macOS一键安装
# Windows用户
访问官网 https://ollama.com/download 下载安装包

# Linux安装(Ubuntu/Debian为例)
curl -fsSL https://ollama.com/install.sh | sudo bash
sudo usermod -aG ollama $USER  # 添加用户权限
sudo systemctl start ollama    # 启动服务

1.2 服务验证

ollama -v  
  
# 输出ollama version is 0.5.7

出现上述则表示安装成功,可浏览器访问http://localhost:11434/验证


二、Deepseek 模型部署

2.1 模型下载与加载

以 deepseek r1 模型为例:

  1. 访问https://ollama.com/library/deepseek-r1,默认为 7b 模型,如需其他模型,可以在当前页搜索所需模型

  2. 模型详情页复制安装命令ollama run deepseek-r1

  3. 安装完成后在终端执行:

ollama run deepseek-r1
# 执行后
pulling manifest
pulling 96c415656d37... 100% ▕██████████████▏ 4.7 GB
pulling 369ca498f347... 100% ▕██████████████▏ 387 B
pulling 6e4c38e1172f... 100% ▕██████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕██████████████▏ 148 B
pulling 40fb844194b2... 100% ▕██████████████▏ 487 B
verifying sha256 digest
writing manifest
success
> > > Send a message (/? for help)
> > > `
> > > 当看到上述提示,即可开始模型对话。
  • mac 后台标识

  • win 后台标识

    见任务栏托盘区

2.2 模型验证测试

运行交互式对话测试:

请用Python写一个快速排序算法   

当看到完整代码输出,说明模型已成功加载。

硬件要求建议:

  • 最低配置:16GB 内存 + 8GB 显存

  • 推荐配置:32GB 内存 + 16GB 显存(RTX 3060 级别)

三、安装交互 ui

3.1 chatbox
  1. 下载地址chatboxai.app

  2. 配置本地模型

  • 进入设置页面

  • 选择 ollama api (本地部署)

  • 配置本机地址,默认http://127.0.0.1:11434

至此即可开启问答模式

3.2 Page Assist 浏览器插件

  1. 安装地址Page Assist - 本地 AI 模型的 Web UI

  2. 安装后简单配置即可开启问答模式,功能丰富,可以参考官方引导

  3. 本插件支持本地知识库建设,因本次使用 Dify 建设,在此不赘述。

四、Dify 知识库搭建

参考文档地址Docker Compose 部署

4.1 环境准备

1.拉取源代码,准备环境

# mac os
# 克隆 Dify 源代码至本地环境。
git clone https://github.com/langgenius/dify.git

# 进入 Dify 源代码的 Docker 目录
cd dify/docker

# 复制环境配置文件cp .env.example .env

2.启动 Docker 容器(需要先安装 D ocker)

docker compose up -d
# 如果版本是 Docker Compose V1,使用以下命令:
docker-compose up -d

# 正常返回
[+] Running 74/9
 ✔ db Pulled                                                    834.2s
 ✔ sandbox Pulled                                              1120.7s
 ✔ weaviate Pulled                                              526.5s
 ✔ web Pulled                                                   174.0s
 ✔ redis Pulled                                                 893.7s
 ✔ api Pulled                                                  2919.8s
 ✔ worker Pulled                                               2919.8s
 ✔ ssrf_proxy Pulled                                            494.0s
 ✔ nginx Pulled                                                 184.7s
[+] Running 11/11
 ✔ Network docker_default             Created                     0.0s
 ✔ Network docker_ssrf_proxy_network  Created                     0.0s
 ✔ Container docker-db-1              Started                     1.1s
 ✔ Container docker-web-1             Started                     1.1s
 ✔ Container docker-redis-1           Started                     1.1s
 ✔ Container docker-sandbox-1         Started                     1.1s
 ✔ Container docker-weaviate-1        Started                     1.1s
 ✔ Container docker-ssrf_proxy-1      Started                     1.1s
 ✔ Container docker-api-1             Started                     0.7s
 ✔ Container docker-worker-1          Started                     0.7s
 ✔ Container docker-nginx-1           Started                     0.8s

在此阶段可能会遇到下列失败的情况,可以尝试切换源解决 我当时的条件

  1. 修改配置后重启 docker

  2. 办公网环境下

docker compose up -d

[+] Running 9/9
 ✘ web Error        context canceled                             14.9s
 ✘ redis Error      context canceled                             14.9s
 ✘ db Error         context canceled                             14.9s
 ✘ nginx Error      context canceled                             14.9s
 ✘ ssrf_proxy Error context canceled                             14.9s
 ✘ sandbox Error    Head "https://registry-1.do...               14.9s
 ✘ api Error        context canceled                             14.9s
 ✘ worker Error     context canceled                             14.9s
 ✘ weaviate Error   context canceled                             14.9s
Error response from daemon: Head "https://registry-1.docker.io/v2/langgenius/dify-sandbox/manifests/0.2.10": Get "https://auth.docker.io/token?scope=repository%3Alanggenius%2Fdify-sandbox%3Apull&service=registry.docker.io": EOF

解决方法

  • 右上角齿轮图标进入设置 -> Docker engine,在配置中添加

  • 写入以下内容 ocker)


{
  // ...
  "registry-mirrors": [
    "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev"
  ]}
4.2 Dify 创建聊天
  1. 访问http://localhost/(默认 80 端口) 进入 dify

  2. 首次进入初始化设置账号密码

  3. 点击 Dify 平台右上角头像 → 设置 → 模型供应商,选择 Ollama,轻点“添加模型”。

在配置 url 时,因为是 docker 服务,http://localhost:11434 存在无法访问的情况,可以尝试http://host.docker.internal:11434

4.至此,可以开始创建应用,在主页选择 全部 -> 创建空白应用 -> 填入应用信息即可

4.3 Dify 知识库创建
  1. 主页选择 知识库 -> 创建知识库 -> 上传知识 -> 等待处理完成

  2. 进入聊天应用,选择刚才创建的知识库,即可开始带有私域知识的沟通

五、应用测试

5.1 翻译场景

1.本地客户端具有部分国际化测试文件需要执行翻译,格式示例如下,多层嵌套的 json 格式,value 为string类型。需要利用大模型对整个 json 文件进行翻译,将中文翻译为英文后按原格式返回


// zh.json
{
  "window": {
    "willUnload": {
      "title": "确认刷新当前页面吗?",
      "message": "系统可能不会保存您做的更改",
      "unload_bt": "重新加载",
      "cancel_bt": "取消"
    }
  }
}
ocker)

2.实际应用测试,以deepseek-r1:7b/14b模型做测试。得到结果如下

3.执行脚本trans.js

const fs = require("fs");
const axios = require("axios");

// 1. 读取本地JSON文件
const readJsonFile = (filePath) => {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, "utf8", (err, data) => {
      if (err) {
        reject(err);
      } else {
        resolve(JSON.parse(data));
      }
    });
  });
};

const MODEL = "deepseek-r1:14b";

// 2. 调用本地大模型接口进行翻译
const translateText = async (text, key) => {
  let response;
  try {
    console.time(`run worker ${key}`);
    response = await axios.post("http://localhost:11434/api/generate", {
      // model: 'deepseek-r1:7b',
      model: MODEL,
      prompt: `有部分客户端国际化的配置文件,内容为json格式,需要翻译,要求按步骤进行翻译:
      1. 将中文翻译为英文
      2. 保持原有json格式不变,将value替换成翻译后的文本
      3. 你始终以合法的JSON格式响应,返回结果格式如: {"key1":"翻译后的文本1","key2":"翻译后的文本2"},直接返回结果,不需要符号包裹
      配置文件
      """${JSON.stringify(text)}"""`,
      stream: false,
    });
    console.timeEnd(`run worker ${key}`);

    const splitText = "</think>";
    const startIndex = response.data.response.indexOf(splitText);
    const result = response.data.response
      .slice(startIndex + splitText.length)
      .trim()
      .replace(/<<+|>>+/g, "");
    // console.log('response.data.response:', response.data.response, JSON.parse(result), result)
    return JSON.parse(result); // 假设接口返回的翻译结果在response.data.translatedText中
  } catch (error) {
    console.error("翻译出错:", key);
    return translateText(text, key); // 如果翻译失败,返回原文
  }
};

// 3. 并行翻译逻辑(手动控制并发)
const translateJson = async (jsonData, concurrency = 5) => {
  const entries = Object.entries(jsonData);
  const translatedData = {};
  let currentIndex = 0; // 当前处理的任务索引

  // 定义工作线程:每个线程不断处理下一个任务
  const worker = async () => {
    while (currentIndex < entries.length) {
      const index = currentIndex++;
      if (index >= entries.length) break; // 所有任务已完成
      const [key, value] = entries[index];
      try {
        translatedData[key] = await translateText(value, key);
      } catch (error) {
        translatedData[key] = value; // 保留原文
      }
    }
  };

  // 启动指定数量的工作线程
  const workers = Array(concurrency).fill(null).map(worker);
  await Promise.all(workers); // 等待所有线程完成

  const result = {};

  // 保持原有顺序
  entries.forEach(([key, value]) => {
    result[key] = translatedData[key] || value;
  });

  return result;
};

// 4. 将翻译后的内容生成新的文件
const writeTranslatedJson = (filePath, data) => {
  return new Promise((resolve, reject) => {
    fs.writeFile(filePath, JSON.stringify(data, null, 2), "utf8", (err) => {
      if (err) {
        reject(err);
      } else {
        resolve();
      }
    });
  });
};

function compareObjectsWithPath(obj1, obj2, path = "") {
  // 类型不同时直接返回路径
  if (typeof obj1 !== typeof obj2) {
    return { success: false, path: path || "root" };
  }

  // 处理可遍历对象(对象或数组)
  if (typeof obj1 === "object" && obj1 !== null && obj2 !== null) {
    const isArr1 = Array.isArray(obj1);
    const isArr2 = Array.isArray(obj2);

    // 数组类型不一致
    if (isArr1 !== isArr2) {
      return { success: false, path: path || "root" };
    }

    if (isArr1) {
      // 数组长度不同
      if (obj1.length !== obj2.length) {
        return { success: false, path: path || "root" };
      }

      // 递归检查数组元素
      for (let i = 0; i < obj1.length; i++) {
        const currentPath = `${path}[${i}]`;
        const result = compareObjectsWithPath(obj1[i], obj2[i], currentPath);
        if (!result.success) return result;
      }
      return { success: true };
    } else {
      // 检查是否为纯对象(字面量对象)
      const isPlainObj1 = isPlainObject(obj1);
      const isPlainObj2 = isPlainObject(obj2);

      if (isPlainObj1 !== isPlainObj2) {
        return { success: false, path: path || "root" };
      }

      // 非纯对象(如 Date、RegExp)需检查是否均为字符串
      if (!isPlainObj1) {
        return typeof obj1 === "string" && typeof obj2 === "string"
          ? { success: true }
          : { success: false, path: path || "root" };
      }

      // 合并所有 key 并检查数量
      const keys1 = Object.keys(obj1);
      const keys2 = Object.keys(obj2);
      const allKeys = new Set([...keys1, ...keys2]);

      if (allKeys.size !== keys1.length || allKeys.size !== keys2.length) {
        return { success: false, path: path || "root" };
      }

      // 递归检查每个属性
      for (const key of allKeys) {
        const currentPath = path ? `${path}.${key}` : key;

        if (!keys1.includes(key) || !keys2.includes(key)) {
          return { success: false, path: currentPath };
        }
        const result = compareObjectsWithPath(
          obj1[key],
          obj2[key],
          currentPath
        );
        if (!result.success) return result;
      }
      return { success: true };
    }
  } else {
    // 基本类型:检查是否均为字符串
    return typeof obj1 === "string" && typeof obj2 === "string"
      ? { success: true }
      : { success: false, path: path || "root" };
  }
}

// 判断是否为纯对象(字面量对象)
function isPlainObject(value) {
  return Object.prototype.toString.call(value) === "[object Object]";
}

// 主函数
const main = async () => {
  console.time("run main");

  const inputFilePath = "./locales/zh.json"; // 输入的JSON文件路径
  const outputFilePath = `output_${MODEL}.json`; // 输出的JSON文件路径

  try {
    // 读取JSON文件
    const jsonData = await readJsonFile(inputFilePath);

    // 翻译JSON内容
    const translatedData = await translateJson(jsonData);

    // 将翻译后的内容写入新文件
    await writeTranslatedJson(outputFilePath, translatedData);

    console.log(
      "翻译完成,结果是否存在遗漏项:",
      compareObjectsWithPath(jsonData, translatedData)
    );
    console.log("翻译完成,结果已写入:", outputFilePath);
  } catch (error) {
    console.error("处理过程中出错:", error);
  }
  console.timeEnd("run main");
};

// 执行主函数
main();

7b


run worker window: 1:16.909 (m:ss.mmm)
翻译出错: window
run worker contextMenu: 1:19.915 (m:ss.mmm)
翻译出错: contextMenu
run worker autoUpdater: 1:24.182 (m:ss.mmm)
run worker menu: 1:54.272 (m:ss.mmm)
run worker openWindowWarn: 2:08.219 (m:ss.mmm)
翻译出错: openWindowWarn
run worker contextMenu: 54.257s
翻译出错: contextMenu
run worker createPreloadFileWarn: 1:05.595 (m:ss.mmm)
翻译出错: createPreloadFileWarn
run worker window: 1:13.320 (m:ss.mmm)
翻译出错: window
run worker openWindowWarn: 42.933s
run worker renderer: 1:06.620 (m:ss.mmm)
run worker contextMenu: 58.129s
run worker createPreloadFileWarn: 51.205s
run worker window: 1:10.067 (m:ss.mmm)
翻译出错: window
run worker window: 17.583s
翻译出错: window
run worker window: 16.479s
翻译出错: window
run worker window: 53.783s
翻译完成,结果是否存在遗漏项: { success: false, path: 'menu' }
翻译完成,结果已写入: output_deepseek-r1:7b.json
run main: 5:08.166 (m:ss.mmm)
![img_1.png](img_1.png)

----------------
run worker openWindowWarn: 27.835s
翻译出错: openWindowWarn
run worker window: 47.317s
翻译出错: window
run worker contextMenu: 1:00.365 (m:ss.mmm)
翻译出错: contextMenu
run worker openWindowWarn: 42.320s
run worker window: 1:00.580 (m:ss.mmm)
翻译出错: window
run worker menu: 2:01.575 (m:ss.mmm)
翻译出错: menu
run worker contextMenu: 1:05.158 (m:ss.mmm)
run worker autoUpdater: 2:08.553 (m:ss.mmm)
run worker createPreloadFileWarn: 1:41.123 (m:ss.mmm)
run worker window: 1:28.518 (m:ss.mmm)
翻译出错: window
run worker renderer: 1:46.725 (m:ss.mmm)
run worker menu: 1:54.031 (m:ss.mmm)
翻译出错: menu
run worker window: 57.867s
run worker menu: 1:16.267 (m:ss.mmm)
翻译完成,结果是否存在遗漏项: { success: false, path: 'menu' }
翻译完成,结果已写入: output_deepseek-r1:7b.json
run main: 5:11.880 (m:ss.mmm)
![img_2.png](img_2.png)

翻译结果

 "window": {
   "willUnload": {
     "title": "What should you confirm before refreshing the current page?",
     "message": "the system might not save your changes",
     "unload_bt": "Reload",
     "cancel_bt": "Cancel"
   }
 },

14b

run worker window: 2:15.983 (m:ss.mmm)
run worker contextMenu: 2:17.554 (m:ss.mmm)
run worker autoUpdater: 3:02.960 (m:ss.mmm)
run worker menu: 4:06.753 (m:ss.mmm)
run worker openWindowWarn: 4:14.074 (m:ss.mmm)
run worker createPreloadFileWarn: 2:04.443 (m:ss.mmm)
run worker renderer: 2:21.099 (m:ss.mmm)
翻译完成,结果是否存在遗漏项: { success: true }
翻译完成,结果已写入: output_deepseek-r1:14b.json
run main: 4:38.673 (m:ss.mmm)


------------------------

run worker autoUpdater: 1:34.068 (m:ss.mmm)
run worker openWindowWarn: 1:57.715 (m:ss.mmm)
run worker window: 2:09.907 (m:ss.mmm)
run worker contextMenu: 2:14.214 (m:ss.mmm)
run worker renderer: 1:38.631 (m:ss.mmm)
run worker createPreloadFileWarn: 2:24.484 (m:ss.mmm)
run worker menu: 4:16.409 (m:ss.mmm)
翻译出错: menu
run worker menu: 2:00.482 (m:ss.mmm)
翻译完成,结果是否存在遗漏项: { success: true }
翻译完成,结果已写入: output_deepseek-r1:14b.json
run main: 6:16.900 (m:ss.mmm)

翻译结果


"window": {
    "willUnload": {
      "title": "Confirm to refresh the current page?",
      "message": "The system may not save your changes.",
      "unload_bt": "Reload",
      "cancel_bt": "Cancel"
    }
  },

4.整体体验下来,14b 模型在翻译工作上比 7b 模型更为准确,一次性翻译成功率高。7B 模型翻译结果噪声多,返回结果可序列化效果差。翻译结果远远不如 14b。

结论

14b 在 macos 执行效率能满足特定业务场景要求

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

继科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

基于此,我用做产品的心态来打磨这份大模型教程,深挖痛点并持续修改了近70次后,终于把整个AI大模型的学习门槛,降到了最低!

在这个版本当中:

第一您不需要具备任何算法和数学的基础
第二不要求准备高配置的电脑
第三不必懂Python等任何编程语言

您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型教程已经给大家整理并打包,现在将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

五、AI产品经理大模型教程

在这里插入图片描述

LLM大模型学习路线 ↓

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容:

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容:

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容:

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容:

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

LangChain入门2 RAG详解 最常见的方法是嵌入每个文档分割的内容,并将这些嵌入插入到矢量数据库(或矢量存储)中。当我们想搜索分割时,我们采用文本搜索查询,嵌入它,并执行某种“相似性”搜索,以识别嵌入与查询嵌入最相似的存储分割。我们将使用LCEL Runnable协议来定义链,使我们能够以透明的方式将组件和函数管道连接在一起,在LangSmith中自动跟踪我们的链,从而获得流式、异步和批量调用。我们想要创建一个简单的应用程序,该应用程序接受用户问题,搜索与该问题相关的文档,将检索到的文档和初始问题传递给模型,并返回答案。 阅读详情

相关推荐

本地部署大模型记录

ollama主要简化了部署大模型的复杂度github地址:ollama/ollama:启动并运行 Llama 2、Mistral、Gemma 和其他大型语言模型。github上可以看ollama相关介绍,包括如何使用vllm主要作用其实是可以提高推理性能,但是必须在linux下运行,而且必须有GPU官网地址vllm官网 Welcome to vLLM!— vLLM。

龙井茶的Sky 2211

Ollama:一个在本地部署、运行大型语言模型的工具

所谓自定义模型就是不适用Ollama官方模型库中的模型,理论可以使用其他各类经过转换处理的模型Ollama库中的模型可以通过提示进行自定义。# 设置温度参数# 设置SYSTEM 消息SYSTEM """作为AI智能助手,你将竭尽所能为员工提供严谨和有帮助的答复。"""Modelfile文档One-API是一个OpenAI接口管理 & 分发系统,支持各类大模型。这里使用Docker快速进行部署。拉取镜像创建挂载目录启动容器访问IP:3001初始账号用户名为 root,密码为 123456。

weixin_59191169的博客 8450

5 分钟用满血 DeepSeek R1 搭建个人 AI 知识库(含本地部署)

备注:评论区回复“DeepSeek”,免费领取万字DeepSeek指南。看到这里,相信你已经找到最适合自己的 DeepSeek 个人知识库方案了。如果你和大多数人一样,选择使用官方 API ,那就不用再为性能和本地硬件资源发愁;如果你恰好有充足的算力和技术储备,本地部署也是个不错的选择。不过,在整个过程中,我想和你分享的不仅仅是这些技术细节。而是一个中国团队能做出世界级大模型,一个需要 +86 才能注册的大模型。很庆幸,我们能作为中国 AI 技术进步的见证人。当然,暂时的领先不是终点。

Jay的个人博客 6万+

【ollama】ollama配置本地大模型并运行

ollama的Github链接ollama官网链接打开后点击下载下载完成后进行安装,安装完毕后在终端输入以下,代表安装成功ollama在ollama官网的模型库中找到需要的模型,这里使用阿里最新开源的qwen2.5复制这里的命令代码然后在终端中输入这行命令,等待模型下载完毕,然后可以开始对话ollama的模型默认安装位置ollama本地运行状态在浏览器中输入以上链接,出现以下则代表ollama运行模型成功ollama官方api接口docker配置的时候需要此接口。

xudawu201的博客 3748

Deepseek R1 模型本地部署(ollama+cherry studio)详细指南! 个人知识库搭建与使用

对于想要在本地或自托管环境中运行 LLM 的用户而言,Ollama 提供了一个无需 GPU、在 CPU 环境也可高效完成推理的轻量化 “本地推理” 方案,接下来跟着笔者学习怎么一步步搭建自己的本地知识库吧

代码时光 7276

Windows系统Deepseek本地部署指南详细教程

它通过将模型权重、配置和数据打包为Modelfile,优化了LLM的设置和配置过程,使得非专业用户也能方便地管理和运行这些模型。2.其次,你需要有一个稳定的网络,后续会涉及到下载模型,根据模型选择不同可能会有较多的流量消耗。1.首先,你需要有一台电脑,本文以Windows系统为例,需要注意系统Win10及以上。找到我们需要的版本,复制下载即可,注意正常来说我们都是选择1.5b的版本。打开终端,输入我们对应的版本号,等待下载即可,注意下载会有点慢。下载ollama完成后,我们找到安装包,双击运行安装。

al_student的博客 8413

Deepseek本地部署详细指南!Ollama 到个人知识库应用(附教程)

Deepseek本地部署详细指南!Ollama 到个人知识库应用(附教程)

2401_82469710的博客 1065

一文看懂如何进行DeepSeek本地部署及搭建个人知识库

DeepSeek本地部署及搭建个人知识库教程

weixin_40404356的博客 1906

DeepSeek 本地部署详细教程,小白也能轻松搞定!

DeepSeek 作为国产开源大模型,近期因在线服务压力过大,本地部署需求激增。本教程将结合全网优质资源,手把手教你完成从环境配置到交互界面搭建的全流程,即使是零基础用户也能轻松掌握。

qq_20890935的博客 5万+

超详细!本地部署 DeepSeek 模型全流程指南,搭建你的本地知识库

你是否好奇,那些强大的大语言模型是如何在电脑上 “跑起来” 的?想象一下,你可以在自己的设备上拥有一个智能助手,随时与它交流,获取知识,这是不是很酷?DeepSeek 模型就是这样一个强大的工具,它能为我们带来智能问答、文本生成等多种功能。然而,对于很多人来说,在本地部署这样的模型可能听起来有些复杂。别担心,本文将以最通俗易懂的方式,一步一步带你完成 DeepSeek 模型的本地部署,让你轻松拥有属于自己的智能小天地。

我是晚秋,我在这里,谢谢你的看见。 4657

STM32实战:5分钟搞定MXL90614红外测温模块的I2C驱动(附完整代码)

本文提供了一份快速集成MLX90614红外测温模块的STM32实战指南。通过详细的软件I2C驱动代码,重点解析了SMBus通信协议、CRC校验及温度数据转换,帮助开发者避开常见陷阱,实现5分钟内完成模块驱动并读取准确温度值。

wasm7browser的博客 353

Deepseek本地部署详细指南!从 Ollama 到个人知识库应用

Deepseek本地部署详细指南!从 Ollama 到个人知识库应用

2401_85379281的博客 5564

手把手教你用Zynq-7100 FPGA实现100Mbps OOK信号定时同步(含完整Verilog代码)

本文详细介绍了如何在Zynq-7100 FPGA平台上实现100Mbps OOK信号的定时同步,涵盖插值算法、Gardner定时误差检测等关键技术。通过完整的Verilog代码和优化技巧,解决了50MHz外部时钟条件下的400MHz采样率同步挑战,为无线通信系统设计提供实用解决方案。

weixin_42522374的博客 301

Ollama下载安装+本地部署DeepSeek+UI可视化+搭建个人知识库——详解!(Windows版本)

①首先。

Future_yzx的博客 4万+

若依框架集成saToken

若依版本3.8.8,鉴权采用security框架,这种框架太重,项目中想实现对外提供接口功能。尽快减少修改原框架的逻辑基础上,采用satoken实现。

sccd2009的专栏 1482

SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

二维回波信号分析

zr2006_7的专栏 2万+
上一篇: 大模型入门教程:从入门到精通,通俗易懂!|附391页PDF文件下载
下一篇: 转做大模型开发,能不能挽救职业生涯?(附大模型教程)
Llama-Turbo
博客等级 码龄4年 9901粉丝 2023原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值