如何用低代码搭建训练一个专业知识库问答GPT机器人 焦点热闻
距离上篇文章《低代码xChatGPT,五步搭建AI聊天机器人》已经过去3个多月,收到了很多小伙伴的关注和反馈...
2023-03-29距离上篇文章《低代码xChatGPT,五步搭建AI聊天机器人》已经过去3个多月,收到了很多小伙伴的关注和反馈,也帮助很多朋友快速低成本搭建了ChatGPT聊天应用,未曾想这一段时间GPT热度只增不减,加上最近国内外各种LLM、文生图多模态模型密集发布,开发者们也有了更高的要求。比如如何训练一个自己的GPT应用,如何结合GPT和所在的专业领域知识来搭建AI应用,像心理咨询助手、个人知识库助手等,看目前网上这方面资料还不多,今天我们就来抛个砖试试。
目前的预训练方式主要如下几种:
基于OpenAI的官方LLM模型,进行fine-tune(费用高,耗时长)基于开源的Alpaca.cpp本地模型(目前可在本地消费级显卡跑起来,对自己硬件有信心也可以试试)通过向量数据库上下文关联(轻量级,费用可控,速度快,包括昨天OPENAI官方昨天刚放出来的示例插件chatgpt-retrieval-plugin,也采用的这种方式)低代码实现的AI问答机器人效果如下:
(资料图)
这次还是用腾讯云微搭低代码作为应用搭建平台,来介绍如何快速搭建一个垂直领域的知识库GPT问答机器人,今天的教程尽量避开了各种黑科技的封装库(没有Langchain/Supabase/PineconeSDK全家桶),尝试从最基本的实现原理来展开介绍,尽量让大家知其所以然。新手开发者也可以试试,与其看各种GPT热闹,不如Make your hands dirty
在开始搭建垂直知识库的问答机器人前,你需要做以下准备:
微信小程序账号:如果您还没有微信小程序账号,可以在微信公众平台注册(如果没有小程序,也可以发布为移动端H5应用)开通腾讯云微搭低代码:微搭低代码是腾讯云官方推出的一款低代码开发工具,可以直接访问腾讯云微搭官网免费开通注册OpenAI账号:OpenAI账号注册也是免费的,不过OpenAI有地域限制,网上方法很多在此不赘述。注册成功后,可以登录OpenAI的个人中心来获取API KEY
一个支持向量匹配的数据库(本文以开源的PostgreSQL
为例,你也可以使用Redis
,或者NPM的HNSWlib
包)关于向量数据库,目前可选择的方式有好几种,可以使用PostgreSQL安装vector向量扩展,也可以使用Redis的Vector Similarity Search,还可以直接云函数使用HNSWLib库,甚至自行diy一个简单的基于文件系统的余弦相似度向量数据库,文末的 github/lowcode.ai也有简单示例代码,仅做参考交流不建议在生产环境使用。
本教程适用人群和应用类型:
适用人群:有前后端基础的开发者(有一定技术背景的非开发者也可以体验)应用类型:小程序 或 H5应用(基于微搭一码多端特性,可以发布为Web应用,点击原文链接可体验作者基于微搭搭建的文档GPT机器人)如何使用低代码进行界面搭建的详细过程,在之前的文章中《低代码xChatGPT,五步搭建AI聊天机器人》已经有过详细的教程介绍,这里就不再继续展开。
另外,大家也可以使用微搭官方的聊天模板,这样的话界面这一步直接跳过,开箱即用,附微搭低代码GPT聊天应用模板地址
完成界面配置之后,大家重点关注下图中页面设计模块的”发送“按钮的事件配置即可,在后续会提到。
与之前机器人的实现直接调用远程API不同,这次由于需要针对专业的领域知识进行预处理以及向量化,重点会涉及3个部分:
读取待训练的文档数据并进行向量化,之后存入向量数据库通过query的向量化结果与数据库向量进行相似度匹配,并返回关联文本结果结合返回的关联文本和query来构建上下文生成prompt
可以通过下图了解向量搜索实现GPT Context的大致原理:
由上图可见,主要是两个处理流程,一个文档数据的向量化预处理,一个是查询时的向量匹配和Context构造处理,这两个处理我们都可以使用腾讯云低代码的云函数来实现(当然第一步的预处理也可以在本地电脑完成)
首先,将所需要的预处理的知识库内容放在某个目录下,遍历知识库目录下的所有文档文件(本文文件格式以markdown
为例),将文本分块后结构化存储在本地json文件。
如果数据量小,分块后的结构化数据也可以直接放在内存中,本地化json主要便于在大量文本预处理时,遇到网络等异常时,能够在断点处重启预处理
关键代码如下:
本教程涉及的完整代码已放到https://github.com/enimo/lowcode.ai中,可按需下载试验,也可直接上传到微搭低代码的云函数中运行)
function splitDocuments(files, chunkSize) {let docSize = chunkSize || 1000;let textString = "";let index = 0;let documents = [];for(let i = 0, len = files.length; i < len; i++) {if(files[i] && files[i].content) {textString = files[i].content;}else {textString = fs.readFileSync(files[i], "utf8");}textString = textString.replace(/\n|\r/g, " ").replace(/<.*?>/g,"") let start = 0; while (start < textString.length) { const end = start + docSize; const chunk = textString.slice(start, end); documents.push({ docIndex: index++, fileIndex: files[i].fileIndex, filename: files[i].filename || files[i], content: chunk }); start = end;} } fs.writeFileSync("./docstore.json", JSON.stringify(documents)); return documents;}
上述代码用途主要是在得到遍历后的文件路径数组files
后,对文件进行切块处理,分块大小可按需调整,一般建议在1000~2000之间(切换主要为兼容GPT API的单次token限制及成本控制)
其次,对分块的文本进行向量化并存入向量数据库,关键代码如下:
async function initVector(sql, docs){ const maxElements = docs.length || 500; // 最多处理500个 for (let j = 0; j < maxElements; j++ ) { const input = docs[j].content; const filename = docs[j].filename; const fileIndex = docs[j].fileIndex const docIndex = docs[j].docIndex // 通过根据训练日志返回断点docIndex,调整 docIndex 的值,确保从断点继续向量化 if(docIndex >= 0 && docIndex < 1000 ){ log("start embedding fileIndex: ", fileIndex, "docIndex: ", docIndex, "filename:", filename); const embedding = await embedding(input); const embeddingArr = "[" + embedding + "]"; const metadata = { filename, "doclength": maxElements, index: j }; const insertRet = await sql` INSERT INTO documents ( content, appcode, metadata, embedding ) VALUES ( ${input}, "wedadoc", ${metadata}, ${embeddingArr} )` await delay(1000); // 如果embedding API并发请求限制,可设置随机数sleep } else { continue; } } return true;}
上述文本向量化的存储过程中,涉及到调用OpenAI的embedding
模型进行向量转化,这里使用text-embedding-ada-002
模型(这个文本向量化过程也可以不使用OpenAI的官方模型,有部分开源模型可代替)
async function embedding (text) { const raw_text = text.replace(/\n|\r/g, " "); const embeddingResponse = await fetch( OPENAI_URL + "/v1/embeddings", { method: "POST", headers: { "Authorization": `Bearer ${OPENAI_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ input: raw_text, model: "text-embedding-ada-002" }) } ); const embeddingData = await embeddingResponse.json(); const [{ embedding }] = embeddingData.data; log({embedding}); return embedding;}
以上,一个文档知识库的向量化预处理就基本完成了,接下来看看怎么实现基于query的搜索逻辑。
我们在上一步中已经完成了文本数据的向量化存储。接下来,可以基于用户提交的query来进行相似度搜索,关键代码如下:
async function searchKnn(question, k, sql){ const embedding = await embedding(question); const embeddingArr = "[" + embedding + "]"; const result = await sql`SELECT * FROM match_documents(${embeddingArr},"wedadoc", 0.1, ${k})` return result;}
上述代码将query同样转化为向量后,再去上一步向量化后的数据库中进行相似搜索,得到最终与query最匹配的上下文,其中有一个预定义的SQL函数match_documents
,主要用作文本向量的匹配搜索,具体会在后面介绍,在 github/lowcode.ai中也有详细的定义和说明。
最后,我们工具拿到的搜索返回值,来构造GPT 3.5接口的prompt上下文,关键代码如下:
async function getChatGPT (query, documents){ let contextText = ""; if (documents) { for (let i = 0; i < documents.length; i++) { const document = documents[i]; const content = document.content; const url = encodeURI(document.metadata["filename"]); contextText += `${content.trim()}\n SOURCE: ${url}\n---\n`; } } const systemContent = `You are a helpful assistant. When given CONTEXT you answer questions using only that information,and you always format your output in markdown. `; const userMessage = `CONTEXT: ${contextText} USER QUESTION: ${query}`; const messages = [ { role: "system", content: systemContent }, { role: "user", content: userMessage } ]; const chatResponse = await fetch( OPENAI_URL + "/v1/chat/completions", { method: "POST", headers: { "Authorization": `Bearer ${OPENAI_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "model": "gpt-3.5-turbo", "messages": messages, "temperature": 0.3, "max_tokens": 2000, }) } ); return await chatResponse.json();}
上述代码中核心是上下文的构造,由于GPT3.5之后的接口,支持指定role,可以将相关系统角色的prompt放在了systemContent
中,至于/v1/chat/completions
接口入参说明由于之前的文章中有过介绍,这里也不赘述,有任何疑问大家也可以到「漫话开发者」公众号留言询问。
以上,query的搜索部分完成了,到此所有后端接口的核心逻辑也都完成了,可以看到几个关键流程的实现是不是很简单呢。
完成后端代码开发后,接下来就是把相应的运行代码部署到微搭低代码的云函数中,综上可知,主要是两部分的后端代码,一部分文档的向量化并入库(这部分本地Node环境运行亦可),另一部分就是实现搜索词匹配构建prompt后调用GPT接口查询了。
微搭低代码的云函数入口,可以在数据源->APIs->云函数
中找到,如下图所示:
如果第一次使用云函数,需要点击图中链接跳转到云开发云函数中进行云函数的新建,如下图所示:
新建完成后,点击进入云函数详情页,选择”函数代码“Tab,然后在下面的提交方法下拉框中选择”本地上传ZIP包“即可上传前面完成的后端逻辑代码,也可以直接下载 github/lowcode.ai打包后上传。上传成功后,第一次保存别忘了点击”保存并安装依赖“来安装对应的npm包。
在完成云函数新建和代码上传后,回到上一步的微搭数据源APIs界面中刷新页面,即可看到刚刚新建好的云函数openai,选中该云函数,并按要求正确填写对应的出入参结构,测试方法效果并保存后,即可在第一章的前端界面”发送“按钮中绑定调用数据源事件进行调用了。
完成上述后端逻辑以及云函数配置后,可以切到编辑器的页面设计模块,回到第一章的界面设计来进行事件的配置,完成后点击编辑器右上角的“发布”按钮,可以选择发布到你已绑定的小程序,也可以直接发布Web端H5/PC应用。
至此,一个垂直知识库的AI问答机器人应用基本就搭建完成了。
本文中采用的PostgreSQL作为向量数据库,其中涉及到的建表结构定义参考如下:
create table documents ( id bigserial primary key, content text, -- corresponds to Document.pageContent metadata json, -- corresponds to Document.metadata embedding vector(1536) -- 1536 works for OpenAI embeddings, change if needed);
涉及的SQL函数match_documents
的定义参考如下,其中query_embedding
表示query关键词的向量值,similarity_threshold
表示相似度,一般情况下要求不低于0.1
,数值越低相似度也越低,match_count
表示匹配后的返回条数,一般情况下2条左右,取决于前文的分块chunk
定义大小。
create or replace function match_documents ( query_embedding vector(1536), similarity_threshold float, match_count int)returns table ( id bigint, content text, metadata json, similarity float)language plpgsqlas $$begin return query select documents.id, documents.content, documents.metadata, 1 - (documents.embedding <=> query_embedding) as similarity from documents where 1 - (documents.embedding <=> query_embedding) > similarity_threshold order by documents.embedding <=> query_embedding limit match_count;end;$$;
所有上述的内容数据库SQL schema
以及部分训练备用文本数据都已经放到github,大家可以关注定期更新,按需采用: github/lowcode.ai
可以通过Web端体验作者搭建的Web版文档机器人,同时得益于微搭低代码的一码多端,同步发布了一个小程序版本,大家可以扫码体验。
由于目前自建向量库的性能局限以及有限的预处理文档数据,响应可能比较慢,准确性偶尔也会差强人意,还请各位看官谅解,抽时间再持续优化了,本文还是以技术方案的探讨交流为主。
通过本教程的介绍,你已经基本熟悉了如何使用微搭低代码快速搭建垂直知识库的AI问答机器人了,有任何疑问可以留言。
用低代码创建一个GPT的聊天应用很简单,实现一个垂直领域的AI问答应用也不难。未来不管被AI替代也好,新的开发者时代来了,先动手试试,make your hands dirty first, enjoy~
标签:
距离上篇文章《低代码xChatGPT,五步搭建AI聊天机器人》已经过去3个多月,收到了很多小伙伴的关注和反馈...
2023-03-29成都市实现了校外培训机构预收费监管全覆盖。
2023-03-29深交所集中开展“三阳光两促进”专项行动,近日,深交所有关负责人就本次专项行动回答了记者提问。深交...
2023-03-291、1,快乐活着,便是最大的幸福。2、人生的快乐在于自己对生活的态度,快乐是自己的事情,只要愿意,你...
2023-03-291、可以下载券下载,操作方法如下:首先用百度搜索一下“百度文库”,然后进入第一个,就是百度文库的官...
2023-03-29为进一步增强办事企业和群众便利度、体验感、满意度,实现政务服务“家门口办、就近办”,营造温馨、舒...
2023-03-29房屋在进行装修的时候,有的业主没有布线,但是又想装灯,遇到这种情况,应该怎么办呢?
2023-03-29comes 园内,你会看到千米樱花盛开,樱花花色鲜艳亮丽,枝叶繁茂旺盛,盛开时节花繁艳丽,满树烂漫,...
2023-03-29观点网讯:3月28日,嘉里建设九龙塘半山低密度住宅项目缇山MontRouge通过招标方式成功售出最后一间住宅...
2023-03-29澳大利亚一公司用猛犸象基因培育细胞制成肉丸,烤起来居然还很香---据美联社报道,当地时间3月28日,荷...
2023-03-29随着微信生态工具的完善,微信搜一搜已成为服务你我生活的重要帮手。2022年微信搜一搜月活跃用户已达8亿...
2023-03-29《生化危机4:重制版(ResidentEvil4)》中的弩箭武器是游戏里非常好用的强力武器,而这把武器的优缺点...
2023-03-293月29日上午,国台办举行例行新闻发布会,发言人就近期两岸热点问题回答记者提问。有记者提问:大陆方面...
2023-03-29开年狂飙,红盘流量密码解读。卓越·蔚蓝群岛销售现场|实拍图经历了2022年的跌宕起伏,楼市终于在新年伊...
2023-03-293月28日,中国信达资产管理股份有限公司(股票代码HK:1359,以下简称“中国信达”)发布2022年度经营业绩...
2023-03-29姿势:对方是右架,两脚前后站立成弓箭步,上体微曲,重心较低,落于前腿,两臂半曲,右上左下放在胸前...
2023-03-29据消息透露,苹果公司正计划推出首款量产的AR MR头显设备。据该公司供应链的消息,这款头显设备有望在...
2023-03-293月28日北向资金减持4 01万股昆药集团。近5个交易日中,获北向资金增持的有2天,累计净增持107 35万股...
2023-03-29本报讯(罗龙英)“你好,请出示这些化肥的检验报告、产品合格证以及票证。”近日,江西省赣州市石城县...
2023-03-28调研现场。3月28日,长沙市“两项试点”工作调研组一行走进市级试点
2023-03-28为进一步学习贯彻党的二十大精神,将党的二十大精神有温度地落实到幼儿园工作中,2月6日黄珏幼儿园党支...
2023-03-28男子怀疑妻子出轨装摄像头,发现睡他老婆是自己亲弟弟,彻底崩溃,出轨,接吻,上床,针孔,摄像头
2023-03-28独子离世留57万房贷,银行称由残疾父亲继承,网友:请证明他父亲是他父亲
2023-03-28电科数字(600850)03月28日在投资者关系平台上答复了投资者关心的问题。
2023-03-281、 骑自行车旅游还有很多事项需要注意,因为沿途会发生很多意想不到的事情,所以,要多了解,以防万...
2023-03-28【环球网科技综合报道】3月28日消息,据外媒报道,苹果公司近日收购了一家专注于开发视频压缩人工智能算...
2023-03-28春日来临,焕新优雅衣橱,MESUX米岫2023春季系列以全新面貌亮相,率性姿态点亮春日之趣,碰撞出奇妙火花...
2023-03-28如果说有什么车和事件是互联网不变的流量王者,那么特斯拉失控事件肯定能排名前三。短短几年时间,从温...
2023-03-28在国内硬派越野车市场,普拉多的市场地位,的确算得上是一个奇迹,因为应该是第一款并不是因为卖不动而...
2023-03-281、文字是人类文化的重要组成部分。2、无论在何种视觉媒体中,文字和图片都是其两大构成要素。3、文字排...
2023-03-28《港湾商业观察》廖紫雯3月3日,鲜美来食品股份有限公司(以下简称:鲜美来)更新招股书,拟于沪市主板...
2023-03-28将重点巡查违规收集、利用用户个人信息等问题《文化和旅游部关于推动在线旅游市场高质量发展的意见》(...
2023-03-28曾纪青是江西省吉安县人社局工作人员。2021年,他走出机关办公室来到偏远山村枫冈村,帮村里出谋划策,...
2023-03-28据中国报告大厅对2023年3月27日河南省氢氧化钙价格最新走势监测显示:2023年3月27日河南省氢氧化钙(90%)均价
2023-03-2801 Nike曾经的神秘顶级开发计划?在如今这个越来越大的鞋圈里,有着越来越多的新晋玩家。而Nike作为整...
2023-03-27被称为“网游加速器第一股”迅游科技27日收到深交所下发的关注函,要求说明认定公司将处于无实际控制人...
2023-03-27近年来,随着人们生活和工作压力的增加,越来越多的消费者开始尝试通过不同的方式“以解压之名”买单“...
2023-03-27国新文化(600636)03月27日在投资者关系平台上答复了投资者关心的问题。
2023-03-27关于进一步完善研发费用税前加计扣除政策的公告财政部税务总局公告2023年第7号为进一步激励企业加大研发...
2023-03-27要说吃鸡的好处那是早已深入人心,比如时下正是春日感冒流行的时候,适当多吃鸡肉、喝鸡汤有助于增强自...
2023-03-27为全面检验官兵训练质效,提升部队实战化水平。连日来,武警广西总队河池支队严密组织多课目射击训练考...
2023-03-271、四个人玩,对面两人为一队 判定胜负比较麻烦,通常是有计分规则 按照你手中牌的点数,叫牌以及有无局...
2023-03-273月26日,有网友在社交平台分享出偶遇男星阮经天画面,曝光的画面中,和家人在上海某家餐厅用餐的阮经天...
2023-03-27小个子穿衣服有“妙招”,掌握这5个搭配技巧,既显高又可爱,显高,上衣,内搭,穿搭,牛仔裤,小个子,搭配技...
2023-03-27新华社上海3月25日电(记者潘清)2021年,台青陈冠安来到广东创办星禾惠创意科技(广州)有限公司,为台...
2023-03-271、苏州2021年调整月最低工资标准为每个月2280元,调整小时最低工资标准为每小时22元,同时规定企业支付...
2023-03-27四川省宜宾市公安局翠屏区分局2月26日通报,针对网友关注的“男子在自家鱼塘电鱼被处罚”事件,经市区两...
2023-03-271、①通过那样的途径来使他的内心保持警惕,使他的性格坚强起来,增加他所缺少的能力。2、“动心忍性”...
2023-03-262023年无与“轮”比春季昌平区中小学生轮滑邀请赛开赛
2023-03-26速报参数速报参数:据中国地震台网正式测定,3月26日17时4分在西藏昌都市洛隆县发生3 1级地震,震源深...
2023-03-26非你莫属北大毕业生怼老板是2019年12月22日这一期,《非你莫属》由2010年6月18日成立的天视卫星公司打造...
2023-03-26预计下月投用的厦门科学城Ⅰ号孵化器。记者昨日从厦门城投公司获悉,位于同安新城银城智谷II-8地块的厦...
2023-03-261、普京虎库贾是俄罗斯的一只阿穆尔虎。2、2012年前,在俄罗斯远东原始森林中发现了5只虚弱的小老虎,其...
2023-03-26强对流天气:目前是指伴随雷暴现象的对流性大风(≥17 2m s)、冰雹、短时强降水三、灾害防御建议1 ...
2023-03-261、互联网的功用有很多,但有的人却把互联网当做宣泄不良情绪的工具。这样的人上网,只会产生很多的噪音...
2023-03-262023年03月26日08:08 来源:重庆日报
2023-03-26【2026年亚运会主办方决定将不建设运动员村计划通过租借酒店提供住宿】3月25日消息,2026年亚洲夏季运动...
2023-03-26点关注,不迷路,养殖更无忧冬去春来,小编最近也是在这里也是跟各位养殖老铁们交谈起来,很多养殖肉鸡...
2023-03-261、《盲人掌灯》是2011年湖南人民出版社出版的图书,作者是谢志强。2、。
2023-03-251、网上流传的田馥甄唱歌曲《爱的可能》把林俊杰给唱哭了,这短视频在网上的点击率很高,很多网友都以为...
2023-03-252023年3月1日,在捷途汽车第二届旅行+大会上,旗下捷途旅行者正式亮相,这款车作为硬派风格的SUV,提供5...
2023-03-251、《仙剑奇侠传幻璃镜》是一部古装剧。2、在筹备中。本文到此结束,希望对大家有所帮助。
2023-03-25南京玄武湖会变色的樱花开了
2023-03-25导读:这届世界杯这个好跌宕起伏啊,多少人因为阿根廷和德国爆冷而伤心落泪,不过接下来的比赛感觉都会...
2023-03-25宁波机场换季初期,每周计划国际地区航班量将达到31班,其中香港航班将加密至每周10班,曼谷航班将加密...
2023-03-25微粒贷频繁借还则是不影响征信报告。相关信用记录将上传至中国人民银行信用信息中心。只要贷款人能按时...
2023-03-25欢迎观看本篇文章,小勉来为大家解答以上问题。如何还原电脑系统,电脑怎么还原系统很多人还不知道,现...
2023-03-253月24日,中庚价值灵动灵活配置混合最新单位净值为2 2581元,累计净值为2 2581元,较前一交易日下跌0...
2023-03-25早睡早起是对于每个人来说有利于身心健康的事,保持好的睡眠并且多运动,会让自己心情变得更好。现在年...
2023-03-24《车矩阵》新车评比:刚上市的丰田全新雷凌(图片|配置|询价)成为这两天车市的热点车型,按照官方的宣传...
2023-03-241、《春与阿修罗》林范译---------------------------------------------
2023-03-24广州白云山简介:白云山,是新“羊城八景”之首、国家重点风景名胜区、全国文明风景旅游区和国家AAAAA级...
2023-03-24解答:第一步:双击打开Excel表格;第二步:点击数据透视表上方的三角形箭头,在弹出的选项中取消选中要...
2023-03-24喜报!喜报!2022年度厦门市五星级、四星级新时代文明实践所(站)来啦!咱湖里区有11个所(站)上榜!为...
2023-03-241、新版本的优酷FLV格式的下载不受影响,但下载高清的视频要先登录才可以下,可以申请个号登录一下看看...
2023-03-24今年首次土拍过半要抽签,回暖成定局?
2023-03-24感情不是一蹴而就的,恩爱也不是一日就有的,夫妻生活看起来很美好,但是其中有很多痛苦的时刻,只有真...
2023-03-24河南经济报记者王泽远通讯员张敬伟为督促企业严格压实食品安全主体责任,近日,鹤壁市市场监管局淇滨分...
2023-03-24北京商报讯(记者卢扬韩昕媛)《天桥春至·北京(演艺)文化创新发展论坛》暨第七届天桥·华人春天艺术...
2023-03-24乘车赏景是很多人热衷的休闲旅游方式,乘坐磁浮列车赏景您体验过吗?在赏景的同时,还能感受磁浮交通“...
2023-03-242023年3月22日,首只在港上市的央企房托基金——招商局商业房托基金(1503 HK)的管理人公布了截至2022年12
2023-03-24金沙在《王的女人》中饰演的角色是戚喜冰,该剧以薛蜀之争为背景,讲述了云狂、海天、于妙戈、吕乐之间...
2023-03-24作者:国酒时空网页链接非标茅台酒,简单说是指除飞天之外的其他高端茅台酒。包括生肖系列、礼宾、珍品...
2023-03-24据长城汽车市场部介绍,哈弗派商务版继承了礼宾版豪华舒适的功能,在车身长度等方面做了很多改进,大幅...
2023-03-24每年春节期间,北京市商务局都会开展“春保行动”,以资金奖励的形式,鼓励家政企业组织家政员留京保供...
2023-03-23魏泽西的身影挥散不去,唯有的回忆都留在了帝吧和WOW,那十几年前的辉煌时光,“帝吧出征、寸草不生”,...
2023-03-23杭州高档会所如下:1、杭州云鼎国际会所,地址为浙江省杭州市西湖区保俶路2号;2、杭州江滨一号休闲会所...
2023-03-23隆扬电子2022年年度董事会经营评述内容如下: 一、报告期内公司所处行业情况 公司主营业务为电磁...
2023-03-23据悉,贝因美(002570)公司与长城资产全资子公司长城国融投资有限公司的债务纠纷案有望以和解结束。
2023-03-231、这样说吧拿到社会工作者证书就可以去那些养老院或者儿童福利院等地方工作的证书更多就业方向可以去青...
2023-03-23华东能源监管局开展“获得电力”综合监管发现问题整改情况督查-中国能源产业发展网-2022年9~10月,华东...
2023-03-23联想再次砍掉自有手机业务,仅剩2014年29亿美金收购来的摩托罗拉移动业务。
2023-03-23欢迎观看本篇文章,小勉来为大家解答以上问题。獐子岛在哪,獐子岛简介很多人还不知道,现在让我们一起...
2023-03-231、辽太祖耶律阿保机(872-926):916年称帝,在位11年。耶律阿保机,姓耶律,名亿,字阿保机,契丹族。...
2023-03-23男子非法运输卷烟195条罗平警方依法查处
2023-03-23灵活就业医保最不划算吗现在个人交社保有两种方式可供选择,一种是以灵活就业人员身份参加职工医保,另...
2023-03-231、和他一样的那个人回家了,他仍然没有勇气走出网吧的门 无法交代的大学4年他选择在网吧逃避4年半 他...
2023-03-23据证券之星公开数据整理,近期*ST科华(002022)发布2022年年报。根据财报显示,本报告期中*ST科华营收...
2023-03-23美银证券发表评级报告指,药明康德去年强劲表现后,公司预计今年收入可达5%至7%的增长,受惠于近期的积...
2023-03-231、我和你跨过分秒,愿也可以跨过余生岁月。2、新年的钟声再响,也没我想你那么想。3、愿新的一年,仍有...
2023-03-22Copyright © 2015-2022 时代水产网版权所有 备案号: 联系邮箱: 514 676 113@qq.com