当前位置: 首页 > news >正文

基于火山引擎云搜索服务和豆包模型搭建 RAG 推理任务

大语言模型(LLM,Large language model)作为新一轮科技产业革命的战略性技术,其核心能力在于深层语境解析与知识融合。在生成式人工智能方向主要用于图像生成,书写文稿,信息搜索等。当下的 LLM 模型是基于大量数据训练的,目的是让它们掌握广泛的普遍知识,这些知识被储存在它们神经网络的权重(也就是参数记忆)里。但是,如果我们要求 LLM 生成的回答涉及到它训练数据之外的知识,比如最新的、专有的或某个特定领域的信息,这时就可能出现事实上的错误(我们称之为“幻觉”)。

RAG (Retrieval-Augmented Generation,检索增强生成)的核心思想是让语言模型在生成回答或文本时能够动态地从外部知识库中检索相关信息。这种方法能够提高模型生成内容的准确性、可靠性和透明度,同时减少“幻觉”

本文将介绍如何基于火山引擎云搜索服务和方舟平台来构建专属的 RAG 智能问答系统。系统使用 OpenSearch 作为外部知识库,火山豆包作为大语言模型,全流程构建在火山引擎平台上。本次实践采用的语料为火山引擎云搜索服务知识库,将语料处理后存入 OpenSearch 索引中,同时通过部署在云搜索服务 ML 节点上的 Embedding 模型,将原始语料额外转化为向量字段存储在同一个 OpenSearch 索引中,方便后续做混合查询召回。

在查询流程中,用户通过对话框输入问题,RAG 应用会将用户输入的问题通过 Embedding 模型转化为向量,然后使用云搜索服务 OpenSearch 的混合查询功能查询问题向量和问题文本召回 Top n 的文档结果,再将文档结果发送给豆包大模型,最后按照要求根据文档内容回答用户的问题。

准备资源

创建云搜索 ML 服务

登陆火山引擎云搜索控制台,创建实例集群,版本选用 Opensearch 2.9.0实例创建完成后可根据实际需求,开通实例和 Dashboards 的公网访问。

1.进入实例详情页->ML 服务,配置 CPU /内存比例后启用。

2.进入模型服务->公共模型,启动一个模型用于语义嵌入 Embedding,推荐使用 PEG,配置参数后启动。

开通大模型服务

1.进入火山引擎方舟控制台,在模型推理下创建推理接入点,接入模型建议选用 Doubao-pro-32k(或者Doubao-lite-32k),创建完成后可以获取到接入点 Endpoint。

2.进入 API Key 管理,创建 API Key 并记录。

# 填充如下内容,后续会用在rag模型中。
{"model32k": {"host": "https://ark.cn-beijing.volces.com/api/v3","endpoint": "ep-xxxx-xx","apikey": ""}
}

配置 NAT 网关

通过配置 NAT 网关使私有网络内部的实例允许通过 NAT 网关访问到公网,用于连接大模型服务。

首先进入火山引擎 NAT 网关控制台,创建公网 NAT 网关。这里需要注意私有网络和子网一定要和云搜索服务实例所在的网络保持一致,可选用自动配置或手动配置:

  • 自动配置会开启私网下所有 ECS 的公网访问,需绑定 EIP(公网 IP);

  • 选择手动配置后需要自行配置公网 IP 和访问规则。

搭建步骤

导入任务数据

1.这里演示为基于火山引擎云搜索服务文档语料搭建的推理任务,所以在创建任务时选择模板代码-云搜索文档任务,大家在具体使用中可以根据需求用其他语料库进行搭建。

2.增加 Config 参数,参考如下模板填入。

参数

说明

task

"migrate" : 表示启动迁移任务

"init": 表示只创建索引

其他或不填: 表示从原始文档进行构建,如果需要运行此任务请提工单咨询

dim

向量维度, 根据 embedding 模型的长度进行填充,例如 PEG 模型为 1024

opensearch

"username" : OpenSearch 的用户名

"password" : OpenSearch 的密码

"host" : 云搜索接入点域名

"port" : 云搜索接入点端口

"index" : 迁移的目标索引名称,将处理好的云搜索文档数据迁移到此索引

'{"task":"migrate","dim": 1024,"opensearch": {"username": "opensearch的用户名","password": "opensearch的密码","host": "云搜索接入点域名","port": 9200,"schema": "https","index": "迁移的索引名称"}}'

3.本文演示添加的依赖为云搜索文档任务配置依赖,如果需要额外依赖可以自行在配置中添加。

运行语义嵌入任务

1.选择 xc_import_embed 模板任务,Config 参数说明:

参数

说明

opensearch

"username": "admin", "password": "k", "host": "opensearch-o-xxx.escloud.volces.com", "port": 9200, "schema": "https", "index": "cloud_serach", # 源索引 "target_index": "cloud_serach" #目标索引,源索引和目标索引名称相同,即使用同一个索引。

embedding

模型调用信息复制过来

field_dict

需要进行语义嵌入的字段这里必须填入以下值

{ "full_title": "full_title_knn", "summary": "summary_knn", "content.summary": "content.summary_knn" }

'{"opensearch": {"username": "xxx","password": "xxx","host": "opensearch-o-xxxx.escloud.ivolces.com","port": 9200,"schema": "https","index": "cloud_serach","target_index": "cloud_serach"},"embedding": {调用信息复制过来},"field_dict": {"full_title": "full_title_knn","summary": "summary_knn","content.summary": "content.summary_knn"}
}'

2.文中实践需要添加的依赖配置如下:

启动 RAG 推理服务

1.在 TOS Bucket 中上传 RAG 推理服务配置。

|-rag-demo
|--rag_config.json
|--config.json

config.json内容

{}

rag_config.json 的格式为:

参数

说明

opensearch

Index 为用来检索的索引名称,需要与文档、语义任务的索引名称相同,其他配置同上不再赘述

llm.model32k

Host:火山方舟的 api 地址,这里的例子是北京地区的地址

Endpoint: 火山方舟推理服务的 endpoint

API Key: 火山方舟的 apikey

embeddings

调用信息复制过来

2.创建推理服务(打开私网访问)并启动

完成前面的所有配置操作后,已经可以在相同 VPC 环境的 ECS 中,通过 RAG 模型的调用信息验证云搜索服务文档推理任务了。可以直接在 ECS 命令行中运行调用信息,查看到持续输出 txt 文本内容。

RAG 推理服务演示

为了更加直观的演示云搜索服务文档的 RAG 推理服务,本文借助火山引擎 API 网关产品,为 RAG 推理服务配置一个固定的公网域名。通过直接在浏览器中的固定访问地址访问 RAG 推理服务,并在可视化页面咨询云搜索服务产品的各种问题。

配置公网访问

1.进入火山引擎 API 网关控制台创建实例,为保证网络畅通需要选择和云搜索实例相同的私有网络和子网。创建完成后进入实例继续创建服务。

2.接下来创建 Upstream,后端服务选用固定域名,域名和端口从刚刚启用的 RAG 调用信息内获取。

3.并在服务内创建路由,路径选用前缀匹配;Upstream 选用固定域名,使用刚刚创建的 Upstream。

推理问答

创建完成后进入服务列表就可以获取到公网访问域名,拼接 RAG 推理服务的完整访问地址,格式为 http://[url]/?model=[model_name],其中 url 替换为在 API 网关中获取到的服务公网访问域名,model_name 替换为 RAG 模型的名称后就可以在浏览器中通过刚才拼接好的固定域名访问 RAG 推理服务,并在可视化页面中咨询本文所用到的云搜素服务文档库的相关问题。

相关文章:

基于火山引擎云搜索服务和豆包模型搭建 RAG 推理任务

大语言模型(LLM,Large language model)作为新一轮科技产业革命的战略性技术,其核心能力在于深层语境解析与知识融合。在生成式人工智能方向主要用于图像生成,书写文稿,信息搜索等。当下的 LLM 模型是基于大…...

Python 实现 Excel 文件操作的技术性详解

目录 一、引言 二、Excel 文件格式及库的选择 2.1 Excel 文件格式 2.2 库的选择 三、安装必要的库 四、使用 openpyxl 读取 Excel 文件 4.1 基本步骤 4.2 实战案例 五、使用 pandas 读取 Excel 文件 5.1 基本步骤 5.2 实战案例 六、写入 Excel 文件 6.1 使用 …...

Spring WebFlux 实现 SSE 流式回复:类GPT逐字显示回复效果完整指南

本节将提供基于 Spring WebFlux 和 SSE 实现类ChatGPT流式回复效果的完整代码示例&#xff0c;并详细说明所需的依赖和配置。 1. 项目配置 构建工具: Maven 或 Gradle依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>sp…...

成功解决7版本的数据库导入 8版本数据库脚本报错问题

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 &#x1f393;擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号&#xff1a;热爱技术的小郑。回复 Java全套视频教程 或 前端全套视频…...

如何让RStudio使用不同版本的R

下面内容摘录自&#xff1a; 专栏问答&#xff1a;管理和选择不同的R&#xff0c;如何做好R的笔记_rstudio如何在不同的r版本中进行切换-CSDN博客 欢迎订阅我们专栏 问题一&#xff1a;如何发现RStudio需要安装和使用不同版本的R。这是为什么呢&#xff1f; R允许用户在同一系统…...

汽车免拆诊断案例 | 2011 款进口现代新胜达车智能钥匙系统有时失效

故障现象  一辆2011款进口现代新胜达车&#xff0c;搭载G4KE发动机&#xff0c;累计行驶里程约为26.3万km。车主进厂反映&#xff0c;有时进入车内按下起动按钮&#xff0c;发动机无法起动&#xff0c;且组合仪表黑屏。 故障诊断  接车后试车&#xff0c;车辆使用一切正常。…...

Count clock

写了半天不对&#xff0c;才注意到是十六进制的 - - 另外安装了vivado 哈哈哈哈&#xff0c;可以看看写的到底对不对 之前好多程序在 hdlbits 可以正确运行 但是 vivado 编译不通过。 module clock(input clk,input reset,input ena,output reg pm,output reg[7:0] hh,output …...

【MySQL】1.MySQL基本操作

目录 一、MySQL数据库登陆 1、设置环境变量 2、cmd命令登陆数据库 二、基本操作语法 1、显示数据库——SHOW 2、使用/选择数据库——USE 3、删除——DROP 4、创建——CREATE 5、查看表结构——DESC 6、数据操作——增删改查 &#xff08;1&#xff09;增/插入&#…...

Qt .qm文件详解

Qt中的.qm文件是Qt翻译文件的一种&#xff0c;主要用于支持软件的多语言转换。在生成Qt应用程序时&#xff0c;qm文件会被包含进应用程序中&#xff0c;根据逻辑以显示对应语言的界面。 .qm文件的基本信息 格式&#xff1a;.qm文件是Qt应用程序中用于存储翻译文本的二进制文件…...

【计算机网络】UDP实战

其实经过这几天写的几种不同的UDP的简易客户端与服务端&#xff0c;还是很有套路的&#xff0c;起手式都是非常像的。 更多的难点对我来说反而是解耦&#xff0c;各种各样的function一用&#xff0c;回调函数一调&#xff0c;呕吼&#xff0c;就会懵一下。 对于这篇文章&#x…...

七、ESP32-S3上使用MicroPython点亮WS2812智能LED灯珠并通过web控制和JS颜色选择器改变灯珠颜色

本地代码集成离线iro.js库来添加一个颜色选择器控件&#xff0c;在无网络环境可以通过JavaScript将选中的颜色发送到服务器以改变LED颜色。以下是将iro.js集成到网页后的颜色图片。 Iro.js 地址API操作手册 color:change # 每当所选颜色发生变化时触发 - 无论是当用户与颜色选…...

Z 字形遍历二叉树

假设一个二叉树上各结点的权值互不相同。 我们就可以通过其后序遍历和中序遍历来确定唯一二叉树。 请你输出该二叉树的 ZZ 字形遍历序列----也就是说&#xff0c;从根结点开始&#xff0c;逐层遍历&#xff0c;第一层从右到左遍历&#xff0c;第二层从左到右遍历&#xff0c;…...

[Vue]Vue3从入门到精通-综合案例分析

一.Vue是什么&#xff1a; 概念&#xff1a;Vue是一个用于构建用户界面的渐进式的框架 以下的内容是自里向外的 声明式渲染(Vuejs核心包)组件系统(Vuejs核心包)客户端路由VueRouter大规模状态管理Vuex构建工具Webpack/Vite Vue的两种使用方式&#xff1a; Vue核心包开发-&…...

深度学习——神经网络(neural network)详解(二). 带手算步骤,步骤清晰0基础可看

深度学习——神经网络&#xff08;neural network&#xff09;详解&#xff08;二&#xff09;. 手算步骤&#xff0c;步骤清晰0基础可看 前文如下&#xff1a;深度学习——神经网络&#xff08;neural network&#xff09;详解&#xff08;一&#xff09;. 带手算步骤&#x…...

【扒网络架构】backbone、ccff

backbone CCFF 还不知道网络连接方式&#xff0c;只是知道了每一层 backbone backbone.backbone.conv1.weight torch.Size([64, 3, 7, 7])backbone.backbone.layer1.0.conv1.weight torch.Size([64, 64, 1, 1])backbone.backbone.layer1.0.conv2.weight torch.Size([64, 64,…...

linux进程

exit&#xff08;&#xff09;函数正常结束进程 man ps aux 是在使用 ps 命令时常用的一个选项组合&#xff0c;用于显示系统中所有进程的详细信息。aux 不是 ps 命令的一个正式选项&#xff0c;而是三个选项的组合&#xff1a;a, u, 和 x。这三个选项分别代表不同的含义&#…...

PRVF-4037 : CRS is not installed on any of the nodes

描述&#xff1a;公司要求替换centos&#xff0c;重新安装ORACLE LINUX RAC的数据库做备库&#xff0c;到时候切换成主库&#xff0c;安装Linux7GRID 19C 11G Oracle&#xff0c;顺利安装grid 19c&#xff0c;安装11G数据库软件的时候检测报如题错误&#xff1a;**PRVF-4037 …...

整理 酷炫 Flutter 开源UI框架 FAB

flutter_villains 灵活且易于使用的页面转换。 项目地址&#xff1a;https://github.com/Norbert515/flutter_villains 项目Demo&#xff1a;https://download.csdn.net/download/qq_36040764/89631324...

Unity 编写自己的aar库,接收Android广播(broadcastReceiver)并传递到Unity

编写本文是因为找了很多文章&#xff0c;都比较片段&#xff0c;不容易理解&#xff0c;对于Android新手来说理解起来不友好。我这里写了一个针对比较小白的文章&#xff0c;希望有所帮助。 Android端 首先还是先来写Android端&#xff0c;我们新建一个Android空项目&#xf…...

Mysql cast函数、cast用法、字符串转数字、字符串转日期、数据类型转换

文章目录 一、语法二、示例2.1、复杂示例 三、cast与convert的区别 CAST 函数是 SQL 中的一种类型转换函数&#xff0c;它用于将一个数据类型转换为另一个数据类型&#xff0c;这篇文章主要介绍了Mysql中Cast()函数的用法,需要的朋友可以参考下。 Mysql提供了两种将值转换成指…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...