部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于腾讯云ES混合搜索与HAI部署DeepSeek,快速构建RAG 应用

基于腾讯云ES混合搜索与HAI部署DeepSeek,快速构建RAG 应用

原创
作者头像
腾讯云大数据
发布于 2025-04-29 08:44:34
发布于 2025-04-29 08:44:34
1120
举报
文章被收录于专栏:腾讯云大数据腾讯云大数据

什么是RAG?

随着数据智能技术的不断发展,以大语言模型(LLM)驱动的AIGC为代表的内容生成技术已经成为企业数据智能能力中不可或缺的一部分。但在实践过程中,LLM(例如ChatGPT)仍存在不少问题,例如信息更新不及时、垂直领域知识匮乏,且可能产生“幻觉”(即生成不准确的内容)等问题。

检索增强生成(Retrieval-Augmented Generation,RAG)技术是一种结合了检索和大语言模型内容生成的技术方案,它通过引用外部知识库,在用户输入Query时检索出知识,然后让模型基于可信的知识进行用户回答。RAG具有较高的可解释性和定制能力,可大幅降低大语言模型的幻觉,适用于问答系统、文档生成、智能助手等多种自然语言处理任务。

本篇文章,将手把手教你基于腾讯云ES与HAI平台,搭建专属AI知识库与DeepSeek大模型,让你快速拥有一个更安全、更懂你、且不会“服务器繁忙,请稍后再试”的AI助手。

为什么选择腾讯云ES?

腾讯云ES是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack,支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。在RAG方面,腾讯云ES支持了一站式向量检索、文本+向量混合搜索、倒数排序融合、与大模型集成、GPU高性能推理、字段级别权限控制等能力,同时针对查询性能做了大量优化,有效的提升了数据检索效率,目前已落地微信读书“AI 问书”、微信输入法“问 AI”、腾讯地图、腾讯会议、IMA Copilot、乐享智能搜索等大型应用中。

同时,作为国内公有云首个从自然语言处理、到向量生成/存储/检索、并与大模型集成的端到端一站式技术平台,腾讯云ES作为核心参编单位参与了由中国信通院发起的的RAG标准制定,并成为首个通过RAG权威认证的企业。

通过腾讯云ES,你可以根据自身需求,灵活定制知识库的内容与功能, 打造更懂你、更安全、更可控的专属AI助手。

AI 助手构建

购买ES 集群

1、登录腾讯云ES控制台。

2、点击新建

descript
descript

3、计费模式为按量计费,产品版本为标准版、ES 版本为 8.16.1,高级特性选择白金版

descript
descript

4、ES 节点配置,测试环境可选择为标准型4核8G,节点数为2(生产环境推荐三个以上),磁盘为通用型SSD,磁盘容量为 20GB:

descript
descript

登录Kibana

1、集群创建完成后,点击集群名称,进入访问控制页面,在可视化访问控制设置公网访问策略:

descript
descript

2、获取当前 IP 地址并设置到 IP 白名单中:

descript
descript

3、点击Kibana 公网访问地址访问 Kibana。

部署embedding 模型

集群购买完成后,前往Kibana 部署 Embedding 模型、创建知识库索引与向量化管道:

1、 开启节点出站访问,仅开启数据节点即可,如有专用主节点,仅开启专用主节点即可。(该功能为白名单,请联系工单处理):

注:如需上传自定义模型或第三方平台(如 Huggingface)模型,可参考GitHub - elastic/eland: Python Client and Toolkit for DataFrames, Big Data, Machine Learning and ETL in Elasticsearch

descript
descript

2、登录 Kibana 之后,在左侧导航栏找到Machine Learning功能:

descript
descript
  1. 进入模型管理页面,并找到类型为text_embedding的模型,本次演示我们使.multilingual-e5-small_linux-x86_64模型,这是一个 384 维的多语言模型,点击Download
descript
descript

4、下载完成后,点击Deploy,弹窗信息使用默认值即可:

descript
descript

创建索引与向量化管道

1、 在Kibana页面点击进入Dev tools

descript
descript

2、 创建知识库索引:index-name为索引名称,实际可按需命名:

3、创建推理管道,该管道可用于写入数据时进行数据向量化:

上述管道,将字段「content、title」的内容,调用.multilingual-e5-small模型向量化之后存储到新的字段中。

写入知识库数据

通过 Bulk API 批量写入数据,可将 title 、content 、url 的内容替换为实际的知识库数据。

基于HAI平台部署DeepSeek模型

1、登录 高性能应用服务 HAI 控制台

2、单击新建,进入高性能应用服务 HAI 购买页面。

descript
descript
  • 选择应用:选择社区应用,应用选择 DeepSeek-R1
  • 地域:选择与ES集群相同的地域,降低网络延迟、提高您的访问速度。
  • 算力方案:选择合适的算力套餐。在单并发访问模型的情况下,建议最低配置如下:

模型

参数量级

推荐算力套餐

DeepSeek-R1

1.5B/7B/8B/14B

GPU基础型

DeepSeek-R1

32B

GPU进阶型

  • 实例名称:自定义实例名称,若不填则默认使用实例 ID 替代。
  • 购买数量:默认1台。

3、单击立即购买。

4、核对配置信息后,单击提交订单,并根据页面提示完成支付。

  1. 等待创建完成。单击实例任意位置并进入该实例的详情页面。同时您将在站内信中收到登录密码。此时,可通过可视化界面(GUI)或命令行(Terminal)使用 DeepSeek 模型。此处我们需保存公网IP,以便于通过SDK进行调用。
descript
descript

注:关于HAI部署,详情可参考:高性能应用服务 HAI 快速使用 DeepSeek-R1 模型_

调用DeepSeek大模型

  1. Python 文件命名为hai_ds.py。
  2. 安装ollama:

3、hai_ds.py内容如下:

AI助手页面构建

1、安装 streamlit与elasticsearch client:

2、 获取 ES 访问地址:

用户名为 elastic、密码在创建集群时设置,用本地mac测试时,可开启公网访问,实际生产时,建议使用内网访问地址。

descript
descript

3、Web界面参考如下代码( 可命名为 web_ds.py,需与hai_ds.py在一个目录下)

在上述 python 文件的目录下,使用如下命令运行系统:

生成的界面如下:

descript
descript

私域数据问答测试

我们使用“介绍腾讯云elasticsearch service的发展历程”这个问题来对比效果:

1、当索引中无相关数据时,可以看到,AI助手对此问题的回答效果相对比较差:

descript
descript

2、写入相关知识库数据:

3、重新提问,可以看到,完全准确,且基本没有不相关的信息:

descript
descript

可见,使用腾讯云ES与HAI构建基于DeepSeek的RAG应用,可同时结合DeepSeek强大的推理与内容生成能力、腾讯云ES一站式RAG方案以及HAI平台高效的模型部署能力,显著提高答案生成的准确性、可靠性,有效避免大模型的幻觉问题,为企业提供更加优质的本地知识库智能问答服务。

总结

本文介绍如何通过结合腾讯云ES 与DeepSeek大模型,快速构建RAG 应用。腾讯云ES凭借其在传统PB级日志和海量搜索场景中积累的丰富经验,通过深度重构底层系统,成功地将多年的性能优化、索引构建和运营管理经验应用于RAG领域,并积极探索向量召回与传统搜索技术的融合之道,旨在充分发挥两者的优势,为用户提供更加精准、高效的搜索体验。未来,腾讯云ES将持续深耕智能检索领域,在成本、性能、稳定性等方面持续提升,帮助客户降本增效的同时实现业务价值持续增长,欢迎持续关注!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
js 国际化需求 获取当前时区
getTimezoneOffset() 方法可返回格林威治时间和本地时间之间的时差,以分钟为单位。
我只会写Bug啊
2023/12/25
6390
JavaScript日期处理
​ 当然,Github上提供了好多优秀的日期处理插件(如:Datejs、date-fns、jquery-dateFormat),然而当处理一些简单的日期操作去引用插件,还是挺耗费资源。
奋飛
2019/08/15
4.5K4
遇到的各种时间类型:UTC时间、GMT时间、本地时间、Unix时间戳
GMT,即格林尼治标准时间,也就是世界时。GMT的正午是指当太阳横穿格林尼治子午线(本初子午线)时的时间。但由于地球自转不均匀不规则,导致GMT不精确,现在已经不再作为世界标准时间使用。
陈大剩博客
2023/02/17
3.6K0
遇到的各种时间类型:UTC时间、GMT时间、本地时间、Unix时间戳
到了2038年时间戳溢出了怎么办?
我经常自嘲,自己写的程序运行不超过3年,因为大部分项目方就早早跑路了。大多数项目上线后,你跟这个项目就再无瓜葛,关于时间你只需要保证时区正确就不会有太大问题,哈哈。 但是今天我想认真对待时间这个问题,作为一个库作者或基础软件作者,就需要考虑下游项目万一因为你处理时间不当而造成困扰,影响范围就比较广了。
程序饲养员
2023/12/28
1.3K0
到了2038年时间戳溢出了怎么办?
timestamp时间戳的应用(微信小程序开发也一样)
      在微信小程序开发时发现一个timestamp的时间戳的变量 比如获取微信运动步数时候 timestamp是如何形成的在JS中 是这么形成的 var timestamp = Date.par
用户1055830
2018/01/18
2.7K0
timestamp时间戳的应用(微信小程序开发也一样)
关于格林尼治时间(GMT)和DateTime相互转换的分享
世界时UT即格林尼治 平太阳时间,是指格林尼治所在地的标准时间,也是表示地球自转速率的一种形式。以地球自转为基础的时间计量系统。地球自转的角度可用地方子午线相对于地球上的基本参考点的运动来度量。为了测量地球自转,人们在地球上选取了两个基本参考点:春分点(见分至点)和平太阳点,由此确定的时间分别称为恒星时和平太阳时。
用户7053485
2020/03/12
1.2K0
不常见的Date使用问题
最近维护老项目,遇到一个遗留的日期传输问题。A系统远程调用B系统获取申请时间字段,B系统接口返回的申请时间是String类型,结果A、B两个系统显示的申请时间不一样,A系统的申请时间比B系统的提前了14个小时,问题可以通过简单的代码复现。 Date currentDate = new Date(); System.out.println("currentDate:" + currentDate); String currentDateStr = currentDate.toString(); Syste
JavaQ
2018/04/04
9270
时间标准:GMT,UTC 以及DST
GMT是指格林尼治标准时间,它对应位于英国伦敦郊区的皇家格林威治天文台的标准时间。
前端GoGoGo
2018/08/24
2.7K0
UTC时间戳与北京时间转换
在应用中用到了 UTC 时间戳与北京时间进行转换的需求,这里做一个记录,方便后面有需求时直接拿来用。
Gnep@97
2023/10/31
3.3K0
UTC时间戳与北京时间转换
HTTP Cookie与Session
HTTP Cookie(也称为 Web Cookie、浏览器 Cookie 或简称 Cookie)是服务器发送到 用户浏览器并保存在浏览器上的一小块数据,它会在浏览器之后向同一服务器再次发 起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一 浏览器,如保持用户的登录状态、记录用户偏好等。
小灵蛇
2024/10/04
1330
HTTP Cookie与Session
时间统一(时钟同步)对全球发展进程的影响
在人类历史的长河中,时间一直协调着人与自然以及人与人之间的关系,它为我们的社会生活和生产提供了秩序。一切社会活动的顺利开展都需要我们遵守共同的时间体系,然而时间并不是一开始就具有人类通用的规则,它经历了一个统一和全球化的过程。
NTP网络同步时钟
2021/02/07
1.2K0
时间统一(时钟同步)对全球发展进程的影响
java实现时间转UTC格式
协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temps
用户7741497
2022/03/27
4.6K0
了解一下ISO 8601是什么
上周的组内分享,有朋友介绍一个工具包生成的日期是UTC,需要转成北京时,另外还带了Z,很是不解,组长介绍说这是ISO 8601的日期格式标准。
bisal
2021/09/06
7.7K0
了解一下ISO 8601是什么
关于Date对象那些事
获取当前日期时间,我们知道通过方法 new Date() 就可以得到,但是获取到是一个标准格式时间 Fri Jan 18 2019 13:56:47 GMT+0800 (中国标准时间)。但通常我们更渴望得到 2019-01-18 13:56:47 或者 2019/01/18 13:56:47 这种格式。
celineWong7
2020/11/05
8630
GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?
日期/时间的处理是平时开发中非常常见的场景,若只是简单的格式化场景那就还好,一旦涉及到时区、跨地域跨时区时间转换场景,甚至当还有GMT时间、UTC时间等一堆概念堆上来的时候,总是心理发虚,招架不住。
YourBatman
2021/01/19
3.5K0
GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?
【在Linux世界中追寻伟大的One Piece】HTTP cookie
HTTP Cookie(也称为Web Cookie、浏览器Cookie或简称Cookie)是服务器发送到用户浏览器并保存在浏览器上的一小块数据,它会在浏览器之后向同一服务器再次发送请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态、记录用户偏好等。
枫叶丹
2024/12/06
1390
【在Linux世界中追寻伟大的One Piece】HTTP cookie
Date.prototype.format
Date.prototype.format = function(format){
李才哥
2019/07/23
9670
Date.prototype.format
Time Zone: GMT,UTC,DST,CST
       相较于两地时间表,显示世界各时区时间和地名的世界时区表(Universal World Time),就显得精密与复杂多,通常世界时区表的表盘上会标示着全球24个时区的城市名称。
阳光岛主
2019/02/19
4.3K0
Time Zone: GMT,UTC,DST,CST
什么是时区?
1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为中时区(零时区)、东1-12区,西1-12区。每个时区横跨经度15度,时间正好是1小时。
JMCui
2023/03/02
2.1K0
什么是时区?
php 学习笔记之关于时区的那点事
众所周知,地球绕着太阳转的同时也会自转,因此同一时刻不同地区所接收到太阳照射的情况不同,所以有的地区是日出,有的地区是日落,还有的地区可能是黑夜.
雪之梦技术驿站
2019/05/31
2.6K0
php 学习笔记之关于时区的那点事
相关推荐
js 国际化需求 获取当前时区
更多 >
目录
  • 什么是RAG?
  • 为什么选择腾讯云ES?
  • AI 助手构建
    • 购买ES 集群
    • 登录Kibana
    • 部署embedding 模型
    • 创建索引与向量化管道
    • 写入知识库数据
    • 基于HAI平台部署DeepSeek模型
    • 调用DeepSeek大模型
    • AI助手页面构建
    • 私域数据问答测试
  • 总结
加入讨论
的问答专区 >
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档