首页 > 其他分享 >创业:大模型RAG系统三个月的开发心得和思考

创业:大模型RAG系统三个月的开发心得和思考

时间:2024-04-02 10:14:11浏览次数:25  
标签:RAG LLM AI 数据 模型 思考 TorchV 心得

1. 前言

自从和员外上家公司离职后,我们就自己搞公司投入到了RAG大模型的AI产品应用的开发中,这中间有一个春节,前后的总时间大概是三个月左右,在这三个月期间,基本是昼夜兼程啊,到今天3月底结束,产品目前看是有了一个基础的雏形。

在这期间,员外负责整个产品的营销、商业客户的洽谈等方面的内容,我和阿包负责整体的技术架构搭建,代码从0-1的编写,我们是在24年1月26,产品初步上线了一个版本,开始接受企业客户的试用,这让我们接受到了大量的需求,以及我们产品在目前的市场环境中还存在哪些竞争力不足需要改进的地方。

三个月时间过去了,在我们的TorchV AI 产品初步成型之际,和大家分享一下开发RAG、LLM系统以来的一些心得和经验。

2. RAG简介

图1-RAG基础架构

RAG(检索增强生成)名词一开始来源于2020年的一片论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》,旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。这样,LLM 在生成更精确、更贴合上下文的答案的同时,也能有效减少产生误导性信息的可能。

可以说在目前大模型井喷的今天,RAG作为一项为密集型知识NLP任务的处理指明了方向,配合AI大模型,让世界发生了翻天覆地的变化,数以万计的开发者都涌入这个赛道,同时竞争。

我们知道LLM目前存在的一些问题和挑战:

我自己理解LLM大模型本质就是一个二进制文件,所有的知识都通过压缩技术全部压缩在一个/多个GB的二进制文件中,最终在获取数据的时候,通过LLM的模型架构,推理能力,将所有的知识信息又生成出来。

  • 在没有答案的情况下提供虚假信息(胡说八道、幻觉)。
  • 模型知识的更新成本、周期、及大模型的通用能力问题(大公司才玩的转)
  • 数据安全和隐私等问题

而RAG技术的出现,正好能有效的缓解目前大模型存在的一些问题,主要表现方面如下:

  • 经济高效的处理知识&开箱即用:只需要借助信息检索&向量技术,将用户的问题和知识库进行相关性搜索结合,就能高效的提供大模型不知道的知识,同时具有权威性
  • 有效避免幻觉问题:虽然无法100%解决大模型的幻觉问题,但通过RAG技术能够有效的降低幻觉,在软件系统中结合大模型提供幂等的API接口就可以发挥大模型的重大作用
  • 数据安全:企业的数据可以得到有效的保护,通过私有化部署基于RAG系统开发的AI产品,能够在体验AI带来的便利性的同时,又能避免企业隐私数据的泄漏。

3. RAG技术&架构思考

既然我们知道,RAG作为密集型知识库的处理和大模型配合起来有着天然优势,那么如何做好RAG的开发?

RAG应用的基础技术核心是:让大模型依靠现有的数据(PDF/WORD/Excel/HTML等等)精准的回答用户的问题

这是最基础的功能,同时也是最低要求,任何做RAG领域的AI应用产品,技术层面都需要去突破解决的技术难题。

注意两个核心点:

相关文章

  • B2B2C商城的系统架构思考
    一、总述本方主要向你介绍思程Shop  (SiCB2B2CShop)的技术方案,帮助快速了解思程Shop的技术架构。系统安全方案;系统扩展方案;系统性能指标;技术架构蓝图;集群部署图;采用的技术框架;高质量的代码;二、系统安全方案目标:构建安全的信息系统,保证用户数据安全,防止系统被黑客......
  • Android+Fragment与Activity之间的信息传递——笔记3
    通过Bundle,Fragment与Activity之间的信息传递protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn2=findViewById(R.id.btn2);btn3=findViewById(R.......
  • LLM RAG系列
    RAG系列本文介绍了RAG以及RAGpipeline的整个流程,包括请求转换、路由和请求构造、索引和检索、生成和评估等,其中引用了大量有价值的论文。参考AdvancedRAGSeries:GenerationandEvaluation中的5篇文章,并丰富了相关内容。请求转换请求转换是为了提高查询结果的准确性而对......
  • RAG知识库的可靠性评估(二)
          上篇文件介绍了RAG优化与评估的基本概念,以及使用TruLens-Eval在没有Ground-truth的情况下评估RAG应用。本篇文件主要是使用Ragas对RAG应用进行评估;      使用了Gagas生成合成测试数据集,在只有知识库文档并没有Ground-truth(真实答案)的情况下让想评估该知识库文......
  • 思考
     从去年的某个时间开始,我多了很多思考,很多时候突然就进入了某段思考,也许是看见了某个人、某件事、某种现象,或者就是无来由的开始思考。思考人、自然、社会。 很多以前认为很常规的东西都引发了我的思考,为什么是这样,社会为什么这样运行,很多现象背后的深层本质是什么。我观察......
  • 00342第四章 结构化程序设计 思考题和练习题(C语言)
    一、单项选择题1.若从键盘输入字符串"HOWAREYOU?",可以直接使用库函数【】。        A.scanf    B.getstr    C.gets    D.都不能直接使用2.C语言的库函数中,可以输出double型变量值的是【】。        A.getchar   ......
  • Quiet-STaR:让语言模型在“说话”前思考
    大型语言模型(llm)已经变得越来越复杂,能够根据各种提示和问题生成人类质量的文本。但是他们的推理能力让仍然是个问题,与人类不同LLM经常在推理中涉及的隐含步骤中挣扎,这回导致输出可能在事实上不正确或缺乏逻辑。考虑以下场景:正在阅读一个复杂的数学证明。虽然最终的答案可能很......
  • 有关链表算法题的一些思考
    1.针对链表的特性(1)双指针的方法:因为不管是删除还是添加元素,都要涉及指定位置元素的上一个元素,因此需要设置前后两个指针来实现操作,同时针对题目特殊性也可能会有三指针的情况,如LeetCode82的去重,第一个指针作为删除操作的前一个指针,而后两个指针则用来查取重复范围/**......
  • 《C++ Primer 第五版 中文版》第12章 动态内存【阅读笔记 + 个人思考】
    《C++Primer第五版中文版》第12章动态内存【阅读笔记+个人思考】12.1动态内存与智能指针12.1.1shared_ptr类静态内存包括:初始化只读数据段,初始化读写数据段,未初始化数据和常量数据段。详细在下面博客总结:Linux系统下C++程序运行时的内存布局及存储内容,生......
  • 大模型检索增强生成RAG原理介绍
    大家好,我是程序锅。github上的代码封装程度高,不利于小白学习入门。常规的大模型RAG框架有langchain等,但是langchain等框架源码理解困难,debug源码上手难度大。因此,我写了一个人人都能看懂、人人都能修改的大模型RAG框架代码。整体项目结构如下图所示:本篇文章将介绍2.RA......