15天学会AI应用开发(二十)使用LangChain实现RAG检索功能
之前的文章《15天学会AI应用开发(十三)上下文与RAG的阶段性总结》概述了检索RAG知识库的主要步骤,现在采用LangChain将其改造为更智能的本地RAG系统。接下来基于LangChain框架与Chroma向量数据库,结合离线的文本嵌入模型和大语言模型,从零开始搭建本地的RAG检索系统。一、下载RAG需要的离线大模型首先下载离线的大语言模型,比如在命令行窗口执行下面命令,即可下载国产大模型qw
15天学会AI应用开发(十九)使用LangGraph实现持久记忆功能
上一篇文章介绍了如何使用InMemoryStore实现用户偏好的精确记忆功能,但记忆只保留在内存中,一旦AI应用重启,就会丢失上次在内存中的记忆数据。为了让AI应用持久记忆业务数据,就得引入文件或者数据库等存储介质,比如Python自带的轻量级数据库SQLite。接下来就介绍如何结合LangGraph与SQLite实现业务数据的持久记忆功能。一、Python中的SQLite用法安装Python时已
15天学会AI应用开发(十八)使用LangGraph实现精确记忆功能
上一篇文章介绍了如何使用LangGraph实现会话记忆功能,可是历史会话又多又杂,难以全部记忆,开发者更希望AI应用记住关键信息,比如用户喜欢什么、爱好什么等等。对于AI应用的精确记忆需求,LangChain支持在调用create_agent时输入store参数,以指定数据存储方式,接下来介绍如何通过store参数存取用户的偏好信息。一、创建智能体实例时的输入参数上一篇文章调用create_age
15天学会AI应用开发(十七)使用LangGraph实现会话记忆功能
上一篇文章采用langchain_community包协助LangChain实现了对话记忆功能,但langchain_community属于早期链式架构的临时补丁,仅适配简单线性对话。LangChain官方推荐使用LangGraph实现复杂的会话记忆功能,LangGraph是从底层统一管理全流程状态、支持长短双记忆、原生持久化、适配复杂Agent的标准化记忆架构,常作为生产环境的首选方案。接下来介
15天学会AI应用开发(十六)LangChain实现对话记忆功能
模型本身是无状态的,也就是不具备记忆功能,单次对话无法留存上下文信息,多轮交互中会遗忘历史对话内容。用户之所以感觉AI工具拥有记忆,是因为AI工具给大模型封装了一层记忆。LangChain作为主流的大模型应用开发框架,内置完善的记忆模块(Memory模块),能够高效管理对话历史记录,让AI实现逻辑连贯的多轮对话,接下来就介绍如何使用LangChain实现对话记忆功能。一、记忆功能用到的组件说明La
15天学会AI应用开发(十五)使用LangChain封装AI执行链
上一篇文章末尾给出了LangChain的简单调用例子,当然LangChain还支持更丰富的功能设置,接下来就介绍如何使用LangChain封装AI执行链,以实现更复杂的功能调用。一、构造大模型实例在构造大模型实例之前,要先添加下面的导包语句,表示引入LangChain的大模型工具OllamaLLM:from langchain_ollama import Ollama
15天学会AI应用开发(十四)搭建LangChain的开发环境
LangChain 是一套大语言模型 (LLM) 应用开发框架,主打链式编排、任务流程组装,可快速搭建智能对话机器人、智能助手、自动化流程、知识库问答、Agent 智能体。LangChain 支持对接各类在线大模型,包括OpenAI、文心、通义、讯飞等,也支持加载电脑本地的离线大模型。为避免在线大模型带来的大量Token消耗,接下来以离线大模型为例介绍如何搭建LangChain的开发环境。一、安装
15天学会AI应用开发(十三)上下文与RAG的阶段性总结
之前的系列文章主要讲解上下文(提示词)和RAG(知识库),为了方便大家归纳,这里把前面的几个重要内容重新梳理总结。一、搭建应用开发环境正所谓磨刀不误砍柴工,要想后续顺利进行AI应用编程,务必正确搭建电脑的Python开发环境,这样可以避免代码编译时出现奇奇怪怪的错误,才能心无旁骛地钻研AI应用技能。首先是安装哪个Python版本。AI开发环境的Python版本推荐Python 3.10.x,该版本
15天学会AI应用开发(十二)从PDF、WORD、网页构建RAG
上一篇文章介绍了如何从TXT文件读取文本信息,可是日常办公很少使用纯文本的TXT格式,而采用专业的PDF格式或者WORD格式,有时还需要通过网页抓取知识。接下来就介绍如何从PDF、WORD、HTML等文件中读取文本内容。一、从PDF文件读取文本PDF是一种常用的文档格式,常用于只读的通知文件,或者电子版书籍。Python提供了多种三方库用来解析PDF文件,其中pdfplumber较常用。使用Pyt
15天学会AI应用开发(十一)从TXT文件构建RAG知识库
前面的文章在构建RAG并检索时,既使用了国外大模型,也使用了国内大模型;既运用了内存向量检索库FAISS,也运用了磁盘向量数据库Chroma。但知识库的原始来源却是knowledge数组,这与现实场合有所出入,因为实际资料都保存在TXT、PDF、WORD等格式的文档中,甚至来自互联网上的HTML网页,于是RAG的前置条件就成了如何从这些文档中提取文本信息。一、读取TXT文件中的文本TXT文件是最简
15天学会AI应用开发(十)把文本嵌入模型换成国产模型
前面两篇文章在演示RAG功能时,做向量化的文本嵌入模型都用国外的all-MiniLM-L6-v2,该模型主要适用英文,对于中文总体也能用,但在细节上处理欠佳。本文就来介绍如何使用国产离线的文本嵌入模型替换国外模型,以及如何体现国产模型的比较优势。一、all-MiniLM-L6-v2的缺点虽然all-MiniLM-L6-v2的优点很多,比如下列几点:1、体积极小:几十 MB,随便本地离线下载2、速度
15天学会AI应用开发(九)利用Chroma持久化向量数据
上一篇文章通过all-MiniLM-L6-v2模型结合FAISS实现了简单的RAG检索功能,但FAISS运行于内存中,无法持久化保存向量数据,重启后又得重新对文本做向量化,比较浪费算力资源。本文就来介绍如何使用向量数据库来持久保存向量数据。一、向量数据库ChromaChroma是一个本地向量数据库,专门用来保存 RAG 知识库,并且快速检索相关内容。Chroma与FAISS之间的区别如下:1、只做
15天学会AI应用开发(八)使用向量数据库实现RAG功能
上一篇文章采用字符串匹配的方式来查找知识,这种方式比较呆板不够智能,接下来引入向量数据库,通过向量化实现更精细的知识检索。一、文本嵌入Embedding模型向量化一段文本的时候,经常用到all-MiniLM-L6-v2,它是一个轻量级的文本嵌入Embedding模型,专门把文字转成数字向量,给RAG做语义检索用。命令行通过cd命令进入Python工程的所在目录,再执行下面的模型下载命令,可将all
15天学会AI应用开发(七)有了大模型为什么还要引入RAG
前面的文章依次介绍了如何截断历史会话的对话记录,包括按照记录数量截断、按照Token长度截断,以及浓缩为摘要截断等等,其中摘要操作又分为三大类:1、使用第三方的摘要库对文本摘要;2、使用在线大模型对文本摘要;3、使用离线大模型对文本摘要;以上对会话记录的各种处理操作,统称为AI应用的上下文管理,即让AI理解用户之前的意图。接下来将开启有关RAG部分的AI应用开发教程介绍。一、什么是RAGRAG的全
15天学会AI应用开发(六)使用离线大模型对文本生成摘要
上一篇文章末尾使用了在线大模型压缩文本生成摘要,但该方式会消耗Token,不便初学者长期使用,更好的办法是采用离线大模型来生成文本摘要。一、离线大模型的种类国内常用的离线大模型有阿里Qwen、智谱GLM、深度求索DeepSeek、百度文心等等,以千问的文本大模型为例,又有Qwen1.5-1.8B-Chat和Qwen1.5-0.5B-Chat两种。Qwen1.5是一系列不同大小的解码器语言模型,包括
15天学会AI应用开发(五)使用AI摘要来压缩上下文消息
前面两篇文章分别介绍了根据消息数量截断历史对话和根据Token长度截断历史对话,可是这两种方式有两个共同的问题:1、被删去的早期记录可能包含关键信息,直接截断会导致信息丢失。2、原始的对话记录可能存在重复、冗余、拖沓的文字内容。一、为什么要对原始记录做摘要要知道,重复、冗余、拖沓的文字内容并不高效,因为它的信息密度很低,很啰嗦,同样的意思使用更少的文字即可表达,完全没必要照搬原始的对话记录。比如很
15天学会AI应用开发(四)根据Token长度截断历史对话
上一篇文章说到按照消息数量来截断历史对话,这种方式有个问题,就是每次对话的内容可长可短,导致固定消息数量的对话内容忽长忽短。历史对话内容不光要存入数据库,还要作为初始提示词发给下次新会话的大模型。太长的提示词不仅冗余,还会消耗大量Token,让用户钱包快速缩水。太短的提示词容纳的信息量不足,难以起到充分记忆的功能。一、为什么统计Token个数而非文字个数改进方式是按照文字长度来截断历史对话,不过字
15天学会AI应用开发(三)把历史对话作为提示词会怎样
AI大模型服务的用户很多,它对每个用户的印象仅存在于当前会话中,一旦用户离开当前会话重新开启新的会话,AI会把该用户当作是新用户,而非之前已经对话过的某个用户。也就是说,AI没有持久记忆的功能,它记不住你上次问了什么,也记不住它上次回答了什么。这意味着AI没法从过往的对话中吸取经验,原本纠正了的错误还会继续犯错,原本积累了的知识重开转头就忘。一、历史对话能作为提示词吗?大模型的用户那么多,推理过程
15天学会AI应用开发(二)为什么编写提示词这么重要
AI应用开发会接触很多英文术语,为了方便行文理解,有必要解释一下相关的术语及其缩写,比如下列几个常见的英语单词:一、常见AI英文术语AI:全称 Artificial Intelligence ,意思是人工智能。AI是能自己学习、理解、判断、模仿人的机器智能。LLM:全称 Large Language Model ,意思是大语言模型。LLM是只懂文字的大模型,它只处理文本信息。VLM:全