惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
Help Net Security
Help Net Security
腾讯CDC
Project Zero
Project Zero
C
CXSECURITY Database RSS Feed - CXSecurity.com
IT之家
IT之家
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 最新话题
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Threatpost
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
SegmentFault 最新的问题
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Proofpoint News Feed
A
Arctic Wolf
B
Blog RSS Feed
Forbes - Security
Forbes - Security
P
Privacy & Cybersecurity Law Blog
Attack and Defense Labs
Attack and Defense Labs
V2EX - 技术
V2EX - 技术
P
Proofpoint News Feed
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
T
Tenable Blog
MyScale Blog
MyScale Blog
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
W
WeLiveSecurity
D
DataBreaches.Net
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
罗磊的独立博客
The Last Watchdog
The Last Watchdog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Vulnerabilities – Threatpost
美团技术团队
Microsoft Security Blog
Microsoft Security Blog

博客园 - aqi00

15天学会AI应用开发(十二)从PDF、WORD、网页构建RAG 15天学会AI应用开发(十一)从TXT文件构建RAG知识库 15天学会AI应用开发(十)把文本嵌入模型换成国产模型 15天学会AI应用开发(九)利用Chroma持久化向量数据 15天学会AI应用开发(八)使用向量数据库实现RAG功能 15天学会AI应用开发(七)有了大模型为什么还要引入RAG 15天学会AI应用开发(六)使用离线大模型对文本生成摘要 一文速览 HarmonyOS 6.1.1 推出的十个新特性 15天学会AI应用开发(五)使用AI摘要来压缩上下文消息 15天学会AI应用开发(四)根据Token长度截断历史对话 15天学会AI应用开发(三)把历史对话作为提示词会怎样 15天学会AI应用开发(二)为什么编写提示词这么重要 15天学会AI应用开发(一)搭建AI大模型应用开发环境 一文理清 HarmonyOS 6.0.2 涵盖的十个升级点 FFmpeg开发笔记(一百零二)国产的音视频移动开源工具FFmpegAndroid FFmpeg开发笔记(一百零一)跨平台的开源音视频移动框架MobileFFmpeg 一文速览 HarmonyOS 6.0.1 引入的十个新特性 一文读懂 HarmonyOS 6.1 带来的十大重要升级 新书《鸿蒙HarmonyOS 6应用开发:从零基础到App上线》出版啦 FFmpeg开发笔记(一百)国产的Android开源视频压缩工具VideoSlimmer FFmpeg开发笔记(九十九)基于Kotlin的国产开源播放器DKVideoPlayer FFmpeg开发笔记(九十八)基于FFmpeg的跨平台图形用户界面LosslessCut FFmpeg开发笔记(九十七)国产的开源视频剪辑工具AndroidVideoEditor FFmpeg开发笔记(九十六)采用Kotlin+Compose的视频编辑器OpenVideoEditor FFmpeg开发笔记(九十五)国产的开源视频美颜工具VideoEditorForAndroid FFmpeg开发笔记(九十四)基于Kotlin的国产开源推拉流框架anyRTC FFmpeg开发笔记(九十三)国产的Android开源视频编辑器EpMedia FFmpeg开发笔记(九十二)基于Kotlin的开源Android推流器StreamPack FFmpeg开发笔记(九十一)基于Kotlin的Android直播开源框架RootEncoder FFmpeg开发笔记(九十)采用FFmpeg套壳的音视频转码百宝箱FFBox FFmpeg开发笔记(八十九)基于FFmpeg的直播视频录制工具StreamCap FFmpeg开发笔记(八十八)基于Compose的国产电视直播开源框架MyTV FFmpeg开发笔记(八十七)采用Kotlin的手机开源播放器VLC-Android FFmpeg开发笔记(八十六)基于Node.js的国产视频编辑开源框架OpenCut FFmpeg开发笔记(八十五)基于PyQt和FFmpeg的开源视频剪辑器OpenShot FFmpeg开发笔记(八十四)使用国产的librestreaming实现RTMP直播 FFmpeg开发笔记(八十三)国产的视频裁剪框架AndroidVideoTrimmer FFmpeg开发笔记(八十二)使用国产直播服务器smart_rtmpd执行推流操作
15天学会AI应用开发(十三)上下文与RAG的阶段性总结
aqi00 · 2026-07-12 · via 博客园 - aqi00

之前的系列文章主要讲解上下文(提示词)和RAG(知识库),为了方便大家归纳,这里把前面的几个重要内容重新梳理总结。

一、搭建应用开发环境

正所谓磨刀不误砍柴工,要想后续顺利进行AI应用编程,务必正确搭建电脑的Python开发环境,这样可以避免代码编译时出现奇奇怪怪的错误,才能心无旁骛地钻研AI应用技能。

首先是安装哪个Python版本。AI开发环境的Python版本推荐Python 3.10.x,该版本兼容所有 AI 库(torch、llama-index、langchain、langgraph、ollama),也没有新版本的奇怪Bug。

其次是安装哪个PyCharm版本。Python代码的开发工具PyCharm可以选择社区版的PyCharm 2024.1 / 2023.3 / 2022.2 ,PyCharm版本过低会不支持Python 3.10,版本过高会很消耗电脑资源。

再次是安装 Ollama ,AI应用在加载离线大模型时经常用到它。

二、上下文(提示词)

要让AI干活,先得丢个问题或者指令给它。这个问题或者指令就叫做“提示词”,意思是提示AI要干什么。

一边是大模型要求准确的提示词,另一边是用户千奇百怪的命令,夹在中间的AI应用开发者就得想办法连通这两者。
AI应用搭建的提示词转换桥梁,又被称作“提示词工程”,它要把用户的各种命令和提问转换为大模型容易理解的提示词。

为了让AI在不同的语境中准确理解用户的意图,在开启新会话时有必要把之前的历史对话记录发给AI,以便AI理解当前对话所处的上下文环境,才好做出有针对性的回答。

可是历史对话记录一方面数量很多,另一方面存在大量冗余,而每次发给AI大模型的提示词都会消耗宝贵的Token,于是AI应用开发者就得想办法精简历史对话记录,以得到提炼了主要意思的上下文信息。
历史对话的提炼方式经历了下列的优化过程:

1、按照某种规则截断历史对话

历史对话虽多,但关联度高的记录只有最近的几条,因此可保留最新的几条对话记录形成下次会话的上下文。对话记录的截断规则有下列两种:

(1)按照消息数量来截断历史对话;
(2)按照Token长度来截断历史对话;

其中在计算文本的Token长度时,给出了两种分词器及其使用说明。一种分词器是国外的tiktoken,另一种是国产的jieba,对中文段落分词推荐使用jieba库。

2、提取历史对话的摘要文字

精简历史对话的文字内容,提炼出紧凑的摘要文本,可提高上下文的信息密度,有效降低Token消耗。对话记录的摘要办法有下列几种:

(1)使用第三方的摘要库(如snownlp和sumy)进行文字摘要;
(2)使用在线大模型(如火山引擎)对原始文本输出摘要;
(3)使用离线大模型(如千问的文本大模型)对原始文本生成摘要;

在上下文部分的系列文章末尾,给出了一个使用离线大模型对文本生成摘要的实战例子。
先通过modelscope下载离线大模型Qwen1.5-1.8B-Chat,再通过transformers加载本地离线大模型,输出原始文本经过压缩后的摘要文字。实战演示过程发现,离线大模型支持设置返回内容的Token长度,并且离线处理不消耗在线Token,适合初学者练习AI应用开发。

三、RAG(知识库)

大模型虽智能,却存在下列两个短板:

(1)知识有截止日期,不懂新知识
(2)会幻觉、爱胡说八道

为弥补大模型的上述两处缺陷,就引入了RAG知识库。
RAG是一种结合检索和生成技术的模型,它通过引用外部知识库的信息来生成回答,外部知识库通常来源用户提供的文档资料。

RAG的使用流程包含下列五个步骤:

(1)加载文档资料
(2)对文本分块
(3)向量化文本
(4)存入向量数据库
(5)在用户提问时,检索向量数据库,并把结果反馈给大模型

以下简要说明各步骤的处理手段:

1、向量数据库

在RAG第4步的“向量数据库”,分别介绍了运行于内存的FAISS,以及运行于磁盘的Chroma。
其中FAISS速度快,适合一次性使用;而Chroma可持久保存数据,适合多次反复使用。

2、向量化文本

在RAG第3步的“向量化文本”,介绍了两种文本嵌入模型,一种是国外的all-MiniLM-L6-v2,另一种是国产的BGE-small。
其中,国产Embedding模型的优势是在处理中文时更加精准,能够给出更准确的检索结果。

3、对文本分块

在RAG第2步的“对文本分块”,要把一大段文本拆分为多个句子,基本要求如下:

(1)读取文档资料的所有文本内容。
(2)按照句号分割文本。
(3)每条知识设定字数下限,比如不得少于50个汉字;如果某条知识小于这个长度,就要跟下一条知识合并。
(4)处理过程注意去除无效字符,例如剔除空行、删除空格等等。

4、加载文档资料

在RAG第1步的“加载文档资料”,分别介绍了对TXT、PDF、DOCX、网页等文档格式的加载处理,各文档的解析过程简述如下:

(1)对于TXT格式,可直接打开并读取文本内容,注意兼容UTF-8与GBK这两种字符编码集。
(2)对于PDF格式,可通过三方库pdfplumber读取文本内容。
(3)对于DOCX格式,可通过三方库python-docx读取文本内容。
(4)对于网页格式,可通过三方库trafilatura读取文本内容。

在知识库部分的系列文章末尾,给出了一个使用BGE-small与FAISS,通过解析网页实现在线RAG的实战例子。
先通过modelscope下载离线大模型bge-small-zh-v1.5,再通过sentence-transformers加载本地离线大模型,并向量化来自在线网页的文本内容,把文本向量保存至向量检索库FAISS,最后从FAISS检索用户问题对应的知识信息。实战演示过程发现,在线RAG对几个问题的回答基本正确,说明结合BGE-small与FAISS成功实现了对网页的在线检索功能。

本系列的AI应用开发文章目录为《15天学会AI应用开发全目录(零基础小白,零Token消耗)》。