最新内容
文章: 304
阅读: 1181715
今日阅读: 893
今日访客: 785
上一篇 《Streamlit 页面处理流程》中简要介绍了 Streamlit 页面的处理流程,接下来我们就看一下如何使用 Streamlit 构建一个常见的AI聊天窗体界面。这篇文章的代码源自Streamlit官方文档(Build a basic LLM chat app),额外使用了container空间。
截至目前,所有和大模型相关的范例,都运行在本地的控制台上。但在实际的应用场景中,很多时候是以对话窗口的形式,通过网页UI来进行交互,提出问题,显示结果。开发网页,涉及到前端的Html、CSS、JavaScript 等许多的开发,这部分虽然属于“非核心”部分,但同样需要花费掉不少时间。除此以外,开发RAG应用,其前端UI和交互大同小异,个性化程度不高。因此,Streamlit应用而生,它特别适用于开发数据应用,使用纯后端python脚本,生成web界面,使得开发人员可以专注于数据的检索和应用。

LLamaIndex 采用一种被称为“逐步揭示复杂性“(progressive disclosure of complexity)的设计原则。基于这个原则,完成一个任务,只需要短短的几行代码就能够实现。然而,如果需要对任务进行一些配置,或者实现一些更深入、更细致的功能,就需要对组件进行自定义,或者添加更深入的配置。此时,对于相关概念和组件的理解,就显得尤为重要。因为LlamaIndex涉及了相当多的概念,针对这些概念官方站点上又提供了上百的示例程序,所以想要深入理解和掌握仍是有一定难度的。本文将从定义和作用两个方面,对LLamaIndex的核心概念进行阐述。本文的内容,大体上是:官方文档、AI模型问答、《Building Data-Driven Applications with LlamaIndex》,以及我个人理解的综合。
Building_Data-Driven_Applications_with_LlamaIndex

此轮全球AI大模型的火爆,始于2022年11月的ChatGPT的发布,时间只有2年多,相关的应用和开发也才逐步展开。而像LlamaIndex这样的框架,也是2023年才开始出现,本身仍处在快速的迭代之中。因此,学习LlamaIndex的主要方式,仍然是 LlamaIndex的官方文档和示例。但是,从官网学习的主要问题,在于对初学者不够友好,概念众多,相对没那么好理解,系统性也有所欠缺。于是,按照通常的学习方式,我在网上搜索了LlamaIndex的书籍,然而,当前市面上没有一本中文书。英文书籍,也仅有两本,此书便是其中一本,出版于2024年5月。


除了纯文本、CSV等格式以外,常见的数据格式还包括网页,也就是html文件。网页文件,又可以分为本地文件(预先下载好的,或者本身就存于本地),以及直接通过url地址访问(当前的很多大语言应用,例如腾讯元宝,都支持网页搜索)。这篇文章将介绍,如何使用LlamaIndex加载本地的html文件,并进行解析。
这篇文章节选自公司内部的一次会议,感觉可能对其他人也有帮助,就分享了出来。因为我本身就职于游戏行业,所以文中的很多例子是以游戏行业为主,但也适用于大多数互联网行业。如果进行转载,请注明出处和作者。

默认情况下,我们使用 SimpleDirectoryReader 加载文件时,是以纯文本的方式读取的。很多时候,我们面对的文本格式是多种多样的,例如常见的:PDF、CSV、HTML、Word、Json。这些文件类型,要么在存储时压缩了信息,例如CSV(将公共属性压缩在了首行);要么加入了额外的标记,例如: HTML(添加了诸如h1、p、div等标签)。如果按照默认方式加载,这些文件都将会被作为纯文本处理,这可能会在查询时产生错误的结果。本节将介绍,如何正确地加载csv格式的文件。

在 LlamaIndex 构建本地文件向量数据库 当中,我们将由文本转换的向量数据保存在了本地的文件目录中,这种方式适合于小量的数据。如果数据量较大,那么可以使用更专业的向量数据库,例如开源的 chroma,这篇文章修改了前面的例子,演示如何使用chroma来保存向量数据,并执行查询。

在 上一篇文章 中,我们已经构建了本地的文件向量数据库,并对其进行了查询。但对于小型文件,或者仅执行一次的查询而言,这种方式又显得比较繁琐,因为它分为了两个步骤,且在本地生成了vector向量数据库。对于临时查询而言,这个文件夹就相当于“临时文件”了。本文延续上面的例子,只不过不在本地创建文件向量库,而是对文件进行直接查询。

在 LlamaIndex 使用大语言模型 这篇文章中,我们介绍了使用LlamaIndex直接对大模型进行提问,并输出结果。在本篇以及后续文章中,我们发挥LlamaIndex的专长,构建RAG,来对本地的私有文档进行提问。这篇文章中,我们先进行第一个步骤:构建本地的文件向量数据库。

最近OpenAI再一次火了一波,因为它推出了 原生多模态图像生成模型。这种模型在训练时直接混合多模态数据(如图文对、音视频同步数据),建立模态间语义映射,统一处理多模态输入输出。直观上,就是提供一张图片,同时配上需求,例如:将这张图片转为吉卜力风格,模型即可自动完成。当前支持最高1024x1536的分辨率,费用大约0.2美元/张。这篇文章将讲述如何实现这一过程,之后就可以将自己喜欢的相片转成吉卜力风格啦。

随着 GPT、Deepseek、Claude 等 LLM(Large Language Model,即大语言模型)的推出,很多人也都通过 豆包、元宝、Kimi 等大厂的应用,开始使用这些模型来协助工作。但是,这些应用都有一个共同的问题:只能基于历史的训练数据,或者借助网页搜索,根据公开的知识来回答问题。人们迫切的需要,将自己私有的数据,例如个人知识库,告诉给 LLM,让LLM可以基于此回答问题。通常,有三种方案可以达成这个效果。

一直对产品设计保持兴趣,也经常会去发现日常生活中让人眼前一亮的巧妙设计,而遇到一些给人带去不不便的拙劣设计,真是恨不得把产品设计者喊到眼前臭骂一顿。因为我比较崇尚简单和有效的设计,这本书的书名首先打动了我,于是就买来读了。书不厚,分为了两部分,7个章节,前面3章,讲述了一些简约设计的理念,并提出了简约设计的基本方法:删除、组织、隐藏和转移。而后面4章,以电视遥控器为例子,详细讲解了如何实践这4种策略。书中配了很多有意思的插图,有些可以说是:一图胜千言了。


部门有一个小小的测试团队,其中的两位测试成员大部分时间都在做一些鼠标点点点的功能测试。因为公司短期内不会招聘高级的测试人员,所以暂时也没有人能帮助她们获得提高。而我本身,则一方面想要提高对于测试的认知;一方面想准备一些面试高级测试人员的面试题目;另一方面,也想提升团队内部的测试水平,就找寻了一些有关测试的书籍进行阅读。测试如果细分下来,种类很多,可以分为白盒测试、黑盒测试;可以分为功能测试、接口测试;可以分为单元测试、集成测试;可以分为冒烟测试、回归测试;还有 灰度测试、性能压测 等等。因为我们现在采用的是 客户端/服务端 分离的架构,对于客户端,可以做一下功能测试;而对于服务端,除了开发人员自测以外,则可以做一下接口测试。
网上测试方面的书不算太多,针对接口测试的就更少了,这本书的书名比较匹配我的需求,就买来读了一下。读完感觉这本书完全就是东拼西凑出来的,和接口测试只有边缘关系,而无直接联系的知识点,比如网络协议、Python的语法、也搬过来凑成一章,占据了过多的篇幅。而核心的接口测试框架的搭建,则是浅尝辄止,介绍了如何使用request库发起http请求,并使用print直接打印结果,连测试最常用的断言 assert--都没有使用。


这本书也是在得到万维钢的《精英日课》栏目中听到,感觉是比较有意思,同时又比较贴合职场,于是就买来读了。这本书目前还没有简体中文版本,但有繁体版,就硬着头皮读了下繁体版。这篇读书笔记,对于书中提及的9大谎言,做了一个概述。


刘澜的这本管理学书,将管理分为了四大心智模型:学习心智、问题心智、关系心智 和 要事心智。通过这四大模型,讲解了很多管理学的概念,以及作者所主张的管理法则。全书语言表达也比较干练,可以说是干货满满,看完收获良多。


之前在找关于数据分析方面的专业书籍,想查下看这个领域有没有新的图书出版,恰好搜到了这本书《时间黑客:用数据分析做个明白人》。买来看了下,发现和数据分析并没有太大相关。这是一本讲时间管理的书,而在讲时间管理以外,还着重讲述了作者早年的奋斗过程。用书中的话来说,就是普通家庭、普通院校出身,从互联网最基层的客服入行,如何从月薪1300做到年薪百万,并在深圳买房安居的。作者在写作本书之前,还出了一本专业方面的书,也是市面上为数不多的,专注于游戏运营领域的书籍:《游戏运营:高手进阶之路》。


这本书是彼得·德鲁克最富盛名的一本书之一。讲解如何成为一个富有成效的管理者。这本书最早出版于二十世纪八十年代,其中的一些概念已为现在所熟识,例如:当前大多数的公司,尤其是我所在的互联网行业,职员都属于书中所说的“知识工作者”,而不是传统的“体力劳动者”,因此,其管理方式也有所不同。而在德鲁克的时代,仍有很多的工作属于“体力劳动者”,因此本书很多方面讲解了对于这两类人群的不同管理方式。
