低成本+高性能+超灵活!Deepseek 671B+Milvus重新定义知识库搭建
“老板说,这个项目得上Deepseek,还得再做个知识库...”
还有哪个开发者,最近没听到这样的抱怨?
Deepseek爆火,推理端的智能提速,算力成本急剧下降,让不少原本不想用大模型,用不起大模型的企业,一夕之间全部拥抱AI,开启了降本增效。在这个过程中,对于大部分拥有优质私有数据,敏感数据的企业来说,如果不想数据泄露,那么部署本地知识库,就成了拥抱大模型的必经之路。
可是当你真正开始调研的时候,就会发现这事儿没那么简单:
想用开源的蒸馏版模型?效果差强人意,连基本的问答准确度都难以保证。
比如,前不久,我们推出了基于Deepseek 7b+Milvus的本地部署教程,就有不少开发者反应,7B版本,即使加上了向量数据库,也依然效果差强人意。
可是上满血版的大模型?满血的R1,参数有671B,即使已经是FP16精度,需要的显存也高达1342GB,换算成80G的A100,也需要足足17张。而个人电脑,即使采用顶配的24GB的4090,需要的数量也足足高达56张(MoE+量化会降低实际显存需求)……
很显然,别说个人,就是一些中小企业,也没这么多显卡。
那就用开源方案搭建?光是配置环境就够喝一壶的:向量库选型、模型部署、前端界面...每一步都像是在考验你的耐心。
难道就没有一个简单可行的方案吗?
被老板抓着加班部署了一个月后,相信我,Deepseek+Milvus+AnythingLLM,绝对是你部署本地知识库的最优解!
这个方案不仅解决了性能问题,更重要的是,它真的做到了"零门槛",只需要30分钟,就能搭建一个具备企业级性能的私有知识库。而且,整个过程真的像搭积木一样简单,小白也能快速上手。
01
选型思路
首先我们来看一下,这次选型,为什么采用Deepseek+Milvus+AnythingLLM这个组合,它主要解决了目前RAG落地的三大痛点:
1.1 模型性能问题
用过ollama提供的蒸馏版Deepseek的朋友,应该都有同感,虽然也是Deepseek,但效果实在不怎么聪明。总结来说,就是7B太智障,671B用不起。
所以,在这里,我们推荐使用硅基流动以及一些云服务企业的API服务,通过API调用的方式,我们可以用很低的成本获得满血版Deepseek的算力支持。而且,最近一段时间,新注册用户还有免费的额度尝鲜。
1.2 部署难度问题
市面上开源的RAG方案不少,但要么需要复杂的环境配置,要么需要大量的运维工作。而AnythingLLM则提供完整的UI界面,天然的支持向量数据库Milvus以及各种类型的大模型接口,降低了入门用户的使用门槛。
而Milvus在召回效率、支持的数量规模等方面,也是业内毋庸置疑的第一梯队,与此同时,Milvus也是目前github上向量数据库方向,star数量最多的开源产品,属于大部分AI开发者的入门基础课程。
1.3 扩展性问题
这个组合最大的亮点在于它的灵活性。可以轻松切换不同的大语言模型,Milvus支持亿级数据的高性能检索,AnythingLLM的插件机制让功能扩展变得简单。
总的来说,这个组合方案既保证了效果,又降低了使用门槛,还具备良好的扩展性。对于想要快速搭建私有知识库的个人来说,是一个非常理想的选择。
02
实战:搭建本地RAG
环境配置要求说明:
本文环境均以MacOS为例,Linux和Windows用户可以参考对应平台的部署文档。
docker和ollama安装不在本文中展开。
本地部署配置:最低CPU:4核、内存8G,建议 CPU:8核、内存16G
(1)Milvus部署
官网:https://milvus.io
1.1下载Milvus部署文件
bash-3.2$ wget https://github.com/milvus-io/milvus/releases/download/v2.5.4/milvus-standalone-docker-compose.yml -O docker-compose.yml
1.2修改配置文件
说明:anythingllm对接milvus时需要提供milvus账号密码,因此需要修改docker-compose.yml文件中的username和password字段。
version: '3.5'
services:etcd:container_name: milvus-etcdimage: registry.cn-hangzhou.aliyuncs.com/xy-zy/etcd:v3.5.5environment:- ETCD_AUTO_COMPACTION_MODE=revision- ETCD_AUTO_COMPACTION_RETENTION=1000- ETCD_QUOTA_BACKEND_BYTES=4294967296- ETCD_SNAPSHOT_COUNT=50000volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcdcommand: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcdhealthcheck:test: ["CMD", "etcdctl", "endpoint", "health"]interval: 30stimeout: 20sretries: 3minio:container_name: milvus-minioimage: registry.cn-hangzhou.aliyuncs.com/xy-zy/minio:RELEASE.2023-03-20T20-16-18Zenvironment:MINIO_ACCESS_KEY: minioadminMINIO_SECRET_KEY: minioadminports:- "9001:9001"- "9000:9000"volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_datacommand: minio server /minio_data --console-address ":9001"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3standalone:container_name: milvus-standaloneimage: registry.cn-hangzhou.aliyuncs.com/xy-zy/milvus:v2.5.4command: ["milvus", "run", "standalone"]security_opt:- seccomp:unconfinedenvironment:ETCD_ENDPOINTS: etcd:2379MINIO_ADDRESS: minio:9000COMMON_USER: milvusCOMMON_PASSWORD: milvusvolumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvushealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]interval: 30sstart_period: 90stimeout: 20sretries: 3ports:- "19530:19530"- "9091:9091"depends_on:- "etcd"- "minio"
networks:default:name: milvus
1.3启动并检查Milvus服务
bash-3.2$ docker-compose up -d
(2)ollama下载向量模型
官网:https://ollama.com/
2.1 下载查看向量模型
bash-3.2$ ollama pull nomic-embed-text
bash-3.2$ ollama list
(3)注册硅基流动获取API密钥
官网:https://siliconflow.cn/zh-cn/
3.1复制满血版deepseek模型名称
3.2 创建API密钥并记录
(4)下载安装AnythingLLM
官网:https://anythingllm.com/
4.1 安装时点击GetStarted
4.2 暂不配置先点下一步
4.3 点击Skip跳过
4.4 部署完成进入首页
(5)配置AnythingLLM
5.1添加deepseek模型
说明:点击LLM首选项选择提供商Generic OpenAI并填入刚才注册的API密钥、baserul、deepseek模型名称并保存
5.2 添加milvus向量数据库
说明:点击向量数据库选项选择Milvus并填入刚才部署好的milvus的地址、用户名、密码并保存
5.3 添加embeding模型
说明:点击Embedder首选项选择ollama并填入刚才部署好的ollama的URL和模型名称并保存
(6)效果演示
6.1 回到首页新建工作区
6.2 上传测试数据集
说明:数据集可以从huggingface上获取 网址:https://huggingface.co/datasets
上传区域传入数据集并点击Move向量化后存入milvus
6.3 测试问答效果
说明:对话框中输入“怎么实现向量检索检索?”得到的回复是符合预期的,可以看到回复中引用了本地知识库中的内容。
03
写在结尾:RAG落地的思考与展望
看到这里,相信你已经成功搭建起了自己的知识库系统。不过除了具体的搭建步骤,我觉得这个方案背后还有一些值得分享的思考。
1.架构设计的前瞻性
这套方案采用了"模型服务+向量数据库+应用前端"的解耦设计。这种架构的好处是显而易见的:
当新的大模型出现时,我们只需要替换模型服务
数据规模扩大时,可以单独升级向量库
业务需求变化时,前端界面也能独立演进
这种松耦合的设计理念,让系统具备了持续进化的能力。在AI技术快速迭代的今天,这一点尤为重要。
2.技术选型的平衡之道
在选择技术栈时,我们需要在多个维度之间找到平衡:
性能与易用性:通过API调用满血版模型,而不是本地部署蒸馏版
开发效率与扩展性:选择开箱即用的AnythingLLM,但保留了插件扩展能力
成本与效果:利用硅基流动等云服务,避免了高昂的硬件投入
这些选择背后,体现的是一种务实的工程思维。
3.RAG应用的演进趋势
从更大的视角来看,这套方案的出现其实反映了几个重要的行业趋势:
知识库建设正在从企业级需求向个人需求扩展
RAG技术栈正在标准化、组件化,降低了使用门槛
云服务的普及让高性能AI能力变得触手可及
未来,随着更多优秀的开源组件出现,RAG的应用场景会越来越丰富。我们可能会看到:
更多细分领域的专业知识库方案
更智能的数据处理和检索算法
更便捷的部署和运维工具
总的来说,这个"Deepseek+Milvus+AnythingLLM"的组合不仅解决了当前的实际需求,也为未来的演进预留了空间。对于想要探索RAG应用的个人和团队来说,现在就是最佳的入局时点。
如对以上案例感兴趣,或想对Milvus做进一步了解,欢迎扫描文末二维码交流进步。
作者介绍
Zilliz 黄金写手:尹珉
推荐阅读
相关文章:

低成本+高性能+超灵活!Deepseek 671B+Milvus重新定义知识库搭建
“老板说,这个项目得上Deepseek,还得再做个知识库...” 还有哪个开发者,最近没听到这样的抱怨? Deepseek爆火,推理端的智能提速,算力成本急剧下降,让不少原本不想用大模型,用不起大模型的企业&a…...

TCP服务器与客户端搭建
一、思维导图 二、给代码添加链表 【server.c】 #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <fcntl.h> #include <arpa/inet.h> #include <unistd.h> #include <stdlib.h> #include <string.…...
PDF 文件的安全功能概述
由于安全问题始终存在,我们希望重点介绍 PDF 文件格式提供的一些安全功能。如果您希望控制或限制用户可以执行的操作,这些功能可以启用。本文将介绍可以阻止哪些类型的操作,以及可以实施哪些不同的身份验证技术来提高 PDF 的安全性。 可以控制…...
在Linux上部署Jenkins的详细指南
引言 在当今快速迭代的软件开发环境中,持续集成和持续交付(CI/CD)变得越来越重要。Jenkins作为一个开源自动化服务器,能够帮助开发者更高效地进行代码集成、测试和部署。本文将详细介绍如何在Linux系统上安装和配置Jenkins。 准…...

碳纤维复合材料制造的六西格玛管理实践:破解高端制造良率困局的实战密码
碳纤维复合材料制造的六西格玛管理实践:破解高端制造良率困局的实战密码 在全球碳中和与高端制造升级的双重驱动下,碳纤维复合材料行业正经历前爆发式增长。航空航天、新能源汽车、风电叶片等领域对碳纤维产品的性能稳定性提出近乎苛刻的要求࿰…...
Day83:图形的绘制
Python 提供了多种绘图工具,其中最常用的是 Turtle(海龟绘图)和 Matplotlib(数据可视化)。今天,我们主要介绍 Turtle,它可以轻松绘制各种几何图形、艺术图案和动画。 1. Turtle 库简介 Turtle 是 Python 内置的绘图工具,主要用于教学、趣味绘画和简单图形的创建。 基…...

C# Dll嵌入到.exe
将dll属性作为 嵌入的资源 修改引用属性为不复制 增加dll识别来源 AppDomain.CurrentDomain.AssemblyResolve new ResolveEventHandler(CurrentDomain_AssemblyResolve);private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, Reso…...
o3-mini、Gemini 2 Flash、Sonnet 3.5 与 DeepSeek 在 Cursor 上的对决
最新的 OpenAI 模型 o3-mini 已于 1 月 31 日(星期五)发布,并已在 Cursor 上架。不久后,Gemini 2 Flash 也会陆续登场。 上周,对 DeepSeek V3、DeepSeek R1 以及 Claude 3.5 Sonnet 做过类似测试。那次测试结果显示&am…...

如何在Vscode中接入Deepseek
一、获取Deepseek APIKEY 首先,登录Deepseek官网的开放平台:DeepSeek 选择API开放平台,然后登录Deepseek后台。 点击左侧菜单栏“API keys”,并创建API key。 需要注意的是,生成API key复制保存到本地,丢失…...

6 maven工具的使用、maven项目中使用日志
文章目录 前言一、maven:一款管理和构建java项目的工具1 基本概念2 maven的安装与配置(1)maven的安装(2)IDEA集成Maven配置当前项目工程设置 maven全局设置 (3)创建一个maven项目 3 pom.xml文件…...
Day82:创建图形界面(GUI)
在 Python 中,我们可以使用 Tkinter(标准 GUI 库)来创建图形用户界面(GUI)。Tkinter 提供了一系列工具和控件,使开发者可以轻松地创建窗口、按钮、输入框等界面组件。 1. Tkinter 简介 Tkinter 是 Python 内置的 GUI 库,使用它可以创建窗口应用程序,而无需安装额外的库…...

字节跳动大模型应用 Go 开发框架 —— Eino 实践
前言 开发基于大模型的软件应用,就像指挥一支足球队:组件是能力各异的队员,编排是灵活多变的战术,数据是流转的足球。Eino 是字节跳动开源的大模型应用开发框架,拥有稳定的内核,灵活的扩展性,完…...

【Golang学习之旅】Go + MySQL 数据库操作详解
文章目录 前言1. GORM简介2. 安装GORM并连接MySQL2.1 安装GORM和MySQL驱动2.2 连接MySQL 3. GORM数据模型(Model)3.1 定义User结构体3.2 自动迁移(AutoMigrate) 4. GORM CRUD 操作4.1 插入数据(Create)4.2 …...
Http 的响应码有哪些? 分别代表的是什么?
HTTP 状态码分为多个类别,下面是常见的 HTTP 状态码及其含义,包括 3xx 重定向状态码的详细区别: 📌 HTTP 状态码分类 分类状态码范围说明1xx100-199信息性状态码,表示请求已被接收,继续处理2xx200-299成功…...
深入解析 Linux 系统中 Cron 定时任务的配置与管理
在 Linux 和类 Unix 系统中,cron 是一个非常强大的工具,用于定时执行各种任务,例如自动备份、定时运行脚本和定期清理日志文件。通过合理配置 cron,你可以让很多系统维护任务自动化,从而减轻日常管理的压力。而 cronta…...

关于 IoT DC3 中设备(Device)的理解
在物联网系统中,设备(Device)是一个非常宽泛的概念,它可以指代任何能够接入系统并进行数据交互的实体。包括但不限于手机、电脑、服务器、网关、硬件设备甚至是某些软件程序等所有能接入到该平台的媒介。 内容 定义 目的 示例 …...
golang 版 E签宝请求签名鉴权方式
E签宝 请求签名鉴权方式说明 package utilsimport ("crypto/hmac""crypto/md5""crypto/sha256""encoding/base64""fmt""github.com/gogf/gf/v2/util/gconv" )type Sign struct {secret string }func NewSign(sec…...

QTreeView和QTableView单元格添加超链接
QTreeView和QTableView单元格添加超链接的方法类似,本文仅以QTreeView为例。 在QTableView仿Excel表头排序和筛选中已经实现了超链接的添加,但是需要借助delegate,这里介绍一种更简单的方式,无需借助delegate。 一.效果 二.实现 QHTreeView.h #ifndef QHTREEVIEW_H #def…...

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪
本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中,实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构,还是监…...
SSM开发(十一) mybatis关联关系多表查询(嵌套查询,举例说明)
目录 一、背景介绍 二、一对一查询(嵌套查询) 三、一对多查询(嵌套查询) 四、嵌套查询效率评估 注:关联查询则是指在一个查询中涉及到多个表的联合查询 一、背景介绍 当对数据库的操作涉及到多张表,这在面向对象语言如Java中就涉及到了对象与对象之间的关联关系。针对多…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...