AI面试相关之RAG与Doris(JAVA)

最仅段段开始复习并面试了,但是市场行情还是差点意思,段段把最近学的和面试的,以及段段做的AIGC项目做个小总结,希望能对大家带来帮助。

不得不感叹AI进步速度之快,我们这帮研发天天研究用AI革自己的命,属于是没有办法的办法了,在这个巨大变革的时代,我们也不得不跟进潮流,防止淘汰了,闲话少说,上干货。

本文主要讲解RAG架构,RAG定义,Doris数据仓湖,Doris分区分桶,贪多嚼不烂,先讲这几个。

一、RAG架构

什么是RAG架构,很多同学其实有思想误区,任务RAG是个向量库,RAG是个什么什么服务,其实都不准确。严格来说,RAG代表一种架构思想。

定义:RAG全名增强检索生成(Retrieval-Augmented Generation),是大模型AI技术方案,通过外部知识库检索相关信息,为大模型提供精准上下文,解决AI幻觉,知识过时,领域知识不足等问题

为什么要通过外部知识库?以为涉及企业保密问题,同时为了在专项领域更加精确。

为什么会产生幻觉?因为没有准确信息,AI就会胡编乱造。

为什么会知识过时?因为大模型是基于上一代数据训练好的,如果没有实时文档或者联网查询,那么知识就是旧的。

核心过程:文档切片与存入向量数据库、用户问题转向量查询相关片段、问题+检索上下文+LLM可溯源答案。

其实我们以JAVA开发维度,可以将RAG分成两部分。一部分是后端负责,另一部分大模型负责。后端主要是用户问题解析与切片,相关知识形成向量数据库,调用向量数据库查询出高相关文本切片,然后调用大模型生成答案。

高频面试题:

1.为什么要文本切片?文本切片如何做?

2.Embedding是什么,作用是什么?

3.为什么要Rerank重排序?意义是什么?

4.RAG架构是什么?解决了哪些痛点?

5.上下文太多怎么办?如何优化?

6.RAG常见优化手段?

二、Doris与RAG误区

上一点已经讲了,关于RAG与Doris的误会,这一部分具体讲讲RAG中的Doris是如何应用的。

传统企业是什么样?MySQL存储业务数据,ES用来做检索引擎,向量库(Milvus/Chroma)存向量,还要做数据同步,成本太高,过于复杂。

为什么用 Doris 做 RAG?简单来说,因为他能在一套系统里,同时搞定向量检索+文本检索,结构化数据+高并发分析,我们就不用搞一套向量数据库,再搞一份数据仓湖了。因为很多场景下,企业既有大模型文档场景应用,又有大数据报表可视化的需求,而这两者都可以通过Doris会实现。

Doris+RAG典型流程:

1.数据准备:文档切片、生成Embedding、写入Doris并建立向量索引。

2.检索阶段:用户提问、生成查询向量(同Embedding方法)、Doris混合索引(向量+关键词)、召回相关文档。

3.生成阶段:拼接上下文、调用LLM大模型,生成精确回答。

应用场景:比如企业问答,智能助手、智能客服,实时分析等。

高频面试题:

1.为什么用 Doris 做 RAG

2.Doris 向量检索实现,Doris索引优化

3.RAG 流程中 Doris 的角色

4.对比传统 RAG 架构(MySQL+ES + 向量库),Doris有什么优势?

三、Doris知识扩展

Doris适合做什么?报表、漏斗、ROI、大盘。高并发聚合查询,以及RAG场景向量检索。

Doris为什么要分区分桶,如何实现?分区:横向切分,按天RANGE分区,减少扫描范围,管理冷数据。分桶:纵向打散,HASH分桶,提升并行度,管理查询与并发。

分区如何建立?按dt日期range分区,分月,分天,主要是数据量太庞大,为了优化存储和提升查询效率,以及数据结构型,所以要分区。

分桶如何建立?分桶键选择高基数关键字段,比如user_id,customer_id等,分桶数一般是BE节点数*核数,常见的就是3/6/12。这样做的好处就是,数据打散,聚合、join、向量检索并行加速。

高频面试题:

1.Doris分区分桶如何实现?意义是什么?

2.Doris基本定义,FE、BE指的是什么?

3.Doris存储过程和查询过程,为什么速度快?

4.Doris 为什么比 MySQL 快?

5.向量索引如何优化?

下篇我们讲我做的AIGC项目,将用户与智能助手的多轮对话自动转化为高价值结构化销售线索,并打通广告再营销、转化追踪与数据报表闭环。由于保密问题,所以项目我结合了当下比较热门的项目进行整合重构,但是重点的知识点不会少。

#AI求职实录#
全部评论
段哥永远是只跟好文
点赞 回复 分享
发布于 03-21 17:28 湖北
向量索引这种刚加上去的东西,都已经成高频面试题了吗哈哈哈
点赞 回复 分享
发布于 03-06 23:11 四川
好家伙!RAG 配 Doris 考 Java,这面试题也太硬核了吧!
点赞 回复 分享
发布于 03-06 22:32 四川
所以要怎么结合项目去回答比较好呢,全部都说吗
点赞 回复 分享
发布于 03-06 10:19 北京
省的是三套运维的命啊,哈哈哈😅
点赞 回复 分享
发布于 03-06 10:18 江苏
话说段哥是从小厂开始还是直接干大厂
点赞 回复 分享
发布于 03-06 10:18 天津
Doris有点东西啊
点赞 回复 分享
发布于 03-06 10:17 河南
一看就是吃过文本切片的亏
点赞 回复 分享
发布于 03-06 10:17 北京
RAG确实更重要的是架构思想
点赞 回复 分享
发布于 03-06 10:16 重庆
段哥竟然悄悄更新!
点赞 回复 分享
发布于 03-05 11:26 北京
太强了
点赞 回复 分享
发布于 03-04 20:13 广东

相关推荐

面试了陌陌的k8s研发工程师岗位,不管是面试过程,还是技术广度深度,总体感觉还是很专业的,沟通过程比较流畅,面试官会以交流的方式提问,卡顿的地方进行会适当的引导,面试完hr通知和约后续面试也挺快的,基本上几个小时后hr会联系给反馈。一共4轮面试,2轮技术面,1轮业务面,1轮hr面,下面整理了下整体面试的问题:第一轮技术面试,差不多50分钟,面试官应该是部门小组负责人,先自我介绍到聊项目,我之前主要做容器云平台相关开发的,从项目延伸到k8s和go的相关知识;1. 自我介绍+项目介绍(pass平台、自定义控制器、servicemesh平台、devops平台),基于项目问了一些功能实现和细节;2. k8s主要问了一些基础问题,具体记不全了,如:pod多个container的启动顺序;crd编写规范(matedata、spec、status)自定义控制器实现机制(控制器启动流程、informer机制、watch断点续传和resync机制),reconcile的实现细节和注意事项(workqueue的去重和重试机制);自定义调度器实现的方式;3. go问了一些基础问题,数组切片、map等;4. 最后一道代码题,多个gorountine并发处理任务。第二轮技术面试,差不多快1个小时,面试官应该是技术leader,提问的方式挺有水平的,交流的问题比较基础细致并且挺有深度的,有些平时常见但是容易忽略的地方,需要对k8s实践和源码有足够的熟悉程度。1. 自我介绍+项目介绍,基于项目细节延伸到的问题如下;2. kubelet的作用、pod创建的流程;3. 常用的几种operator脚手架工具,如kubebuilder、code-generator等,区别是什么?为什么选择其中的一种?4. deployment滚动更新,更新过程和配置,deployment controller根据pod哪些信息判断pod已经ready(pod的status.conditions信息),如何暂停滚动更新;5. 灰度发布实现方式:①只用1个deployment,多个pod,通过暂停滚动更新实现,需要通过暂停更新进行精确的pod数量控制;②基于服务网格istio实现,2个deployment+virtualservice+destinationrule6. operator原理(informer、watch机制等),reconcile处理细节,如何保证最终一致性和幂等性(workqueue去重机制、延迟重试机制、crd spec对比、status判断等);7. operator高可用如何实现(lease),无主或者双主情况如何解决,k8s lease资源和etcd的lease机制的区别;8. apiserver自定义准入控制,可以实现什么功能(认证、鉴权、准入控制(cidecar注入、集群资源信息校验)),准入控制webhook https证书配置,超时处理等;第三轮业务面试,45分钟左右,应该是整个部门的负责人,主要是过项目,感觉主要是查看沟通能力,基于项目中涉及到的核心技术operator、servicemesh等问了一些架构和核心机制如,如何保证reconcile幂等性、operator高可用、istio架构等;第四轮hr面试,就是一些常见的问题了
查看15道真题和解析
点赞 评论 收藏
分享
05-20 21:41
已编辑
门头沟学院 运维工程师
面试的时间线:5.09,投递简历5.11,邮件通知一面5.15,二面讲讲面试问了些什么吧一面:1.你的两个项目都是自己在哪找的资料学习的啊?2.怎么没有想着做开发,而是来做运维呢3.你的nginx是如何配置的,有没有做域名相关的配置4.假如你的域名无法进行访问了,你该如何进行排查5.如果报的是403或者502的错误,你该如何处理6.有没有部署过监控系统,你是如何监控你的服务的7.你的nginx有没有做健康检查,你根据什么来判断的8.用状态吗和端口去探查的话,区别在哪9.有用过ansible吗,做了些什么操作,主要是涉及哪些方面10.deployment和statefulset的区别在哪里11.CICD流水线是如何设计的12.EFK日志处理时,说说你配置哪些告警策略,然后以及面对频繁告警怎么处理的。13.Fluentd 对 Nginx 和应用日志进行什么结构化处理14.如果线上出现了一个故障,你要怎么处理?15.生产环境出现了一个比如说五百的报错,你要怎么处理?16.有没有对镜像做一些优化?比如说你的镜像比较大的话。你怎么又换你的 Docker 镜像?一面老哥问的蛮仔细,有些我回答不充分的,还会帮我补充,有时候还会给我一些提示,给一个爆赞二面:面试官和我闲聊了一会,聊了聊专业和一些课题,然后开始了面试流程1.在你的DevOps的体系建设中,从SaaS层你都是用了哪些东西?然后在这个PaaS层,你都是用什么把它和S层相结合起来?在SaaS层你做了哪些可以自动化让他们run,或者监控,或者是能够让它这个体系健康的运转,和修复和报警相关的事项。(这个问题一开始还没太听懂)2.你的服务是部署在自己的电脑,还是在一些云服务上面的啊3.K8S里面的Ingress你了解吗?你怎么使用的4.Nginx和Ingress的关系是啥?5.你这边像对于开发shell和python这块有什么项目经验或者是?6.让你用ai结合你的项目做一个根因分析,你都会让 AI 做什么?然后怎么去分析出根因?你都会做哪些事情?7.当你自己遇到你这套系统中的一个五百的错误的时候,你怎么去检查?8.一些相对复杂的 SQL 写过吗?9.搭建MySQL主从,你手动怎么配置?二面的面试官对项目的细节问的不太多,更多是从场景题来考察我,确实是把我问的有点汗流浃背了,这是从腾子之后有一个让我压力山大的面试官
查看25道真题和解析
点赞 评论 收藏
分享
评论
9
38
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务