
第七章:高级文本生成技术与工具
在上一章中已经从
AutoModelForCausalLM,AutoTokenizer,pipeline过渡到了稍微高那么一层的llama-cpp-python的使用, 这一章将继续学习LLM的使用, 到真正能训练,微调模型还远着呢。 其中大部分的内容都在学习LangChain的过程中有所掌握,包括记忆机制, 智能体工具调用等,所以这方面的内容没有具体展开。本章所覆盖的在不对模型作微调的情况下提升文本生成质量的方法论与技术:
- 模型输入/输出:模型加载与调用, 用 llama-cpp-python 演示
- 记忆机制:增强模型的上下文记忆能力,查看
LangChain短期记忆相关日志 LangChain 核心组件之短期记忆 - 智能体系统:整合外部工具实现复杂行为,用
LangChain1.0 后的create_agent()将会非常简单 - 链式架构:模块化方法与组件的衔接组合, 这是
LangChain0.x 的架构,1.0 后不再使用链式架构
本章进到
LangChain的学习当中,本人对LangChain已经有了一定程度的了解,由于LangChain1.0 于 2025 年 10 月份才正式发布, 显然写作本书的时候用的还是LangChain 0.x的版本,而LangChain1.0 带来了巨大的变化,所以学习当中会把书中的例子改写为LangChain 1.x的版本。下载 llama-cpp 的 GGUF 单文件模型: Phi-3-mini-4k-instruct-q4.gguf
Read More
第六章:提示词工程(Prompt Engineering)
还是继续学习怎么使用生成模型, 这本书也只能涉及到 Prompt Engineering 了, 另外两个高层次的 Content Engineering 和 Harness Engineering 必须找别的资料.
主要为文本生成而训练的模型通常被称为生成式预训练模型(Generative Pre-trained Transformers-GPT), 将要学习如何设计高效的提示词, 了解生成模型, 研究它们的推理, 输出的验证和评估.
由于使用了新的
transformers版本(5.8.0), 以下的代码与书中有所不同1from transformers import pipeline 2 3pipe = pipeline("text-generation", model="microsoft/Phi-3-mini-4k-instruct", trust_remote_code=False) 4messages = [ 5 {"role": "user", "content": "Create a funny joke about chickens."}, 6] 7output = pipe(messages) 8print(output)输出的信息包含
Read Moreuser和assistant两部分, 因为pipeline()有一个默认的参数return_full_text=True(同时返回用户和 LLM 的消息)
第五章:文本聚类与主题建模(Text Clustering and Topic Modeling)
继续巩固 LLM 的基础知识,文本聚类与主题建模是 NLP 中的两个概念,文本聚类就是文本按语义分类,如猫狗一块,苹果西瓜在一起,足球篮球放一堆, 而它们的分类名就是主题了,如动物,水果,体育。主题范围有大有小,水果可以延展到食物,体育可以缩小到球类,语义越相近,就离得越近,这其实就是物以类聚。
可用嵌入模型进行聚类,与文本聚类相关的主题建模方法是 BERTopic. 下面是用 Hugging Face 上的
arxiv_nlp数据集来进行本章的学习,Hugging Face 还真是一个宝藏啊,估计一些禁书都能在里面找到。arxiv_nlp包含了 1991 年到 2024 年来自 ArXiv cs.CL(计算与语言)板块 44949 篇摘要。1from datasets import load_dataset 2dataset = load_dataset("maartengr/arxiv_nlp")得到的 dataset 是
Read More
第四章:文本分类
文本分类(Text Classification) 是 NLP 中常见的任务之一,如不同语义的分类,动物,植物; 肉类,还是水果,蔬菜,开心还是悲伤,或业务分类等。 表示模型和生成模型在文本分类中的作用不容忽视。
下面是用预训练模型对 Hugging Face 上的电影评论数据集
rotten_tomatoes进行文本分类的测试。1from datasets import load_dataset 2data = load_dataset("rotten_tomatoes") 3print(data)里面包含三部分的数据
train训练集,validation验证集,test测试集。我们将用训练集训练模型,使用测试集来验证结果, 附加的验证集用来验证模型的泛化能力。rotten_tomatoes中记录有两个字段,分别为text: 电影评论文本label: 电影评论的标签,0 代表负面评论,1 代表正面评论。

第三章:LLM 的内部机制
这一章才是本书的最重要的部分,一个支撑现在大语言模型的基石,那就是 Transformer 模型, 占据了本书约 12% 的篇幅。学完分词与词嵌入后,现在开始探究 Transformer 模型的工作原理。我们把
Transformer LLM看成是一个接收文本输入并生成响应的系统, 模型总是在预测下一个 Token, 每个 Token 的生成都是模型的一次前向传播(forward pass). 在生成当前 Token 后,会将该生成的 Token 追加到输入序列中,作为下一次预测的输入( 或者说调整下次生成的提示词), 如此循环往复,逐个生成 Token,直到完成整段响应——这种机制称为自回归(autoregressive) 生成。这种使用生成的前一个 Token 又作为输入来生成下一个 Token 的模型被称为自回归模型(autoregressive model)。而 BERT 是双向(Bidirectional)编码模型。
前向传播的组成, 分词器后就是由
Read MoreTransformer堆叠而成的神经网络,最后是一个 LM head, 它负责将 Transformer 块的输出转换为 Token 的概率分数。
第一章:大语言模型简介
应该还是在前年读了 《Build a Large Language Model (From Scratch)》前面一小部分,就中断了, 如今又找来一本相关的书籍 《Hands-On Large Language Models》试着啃一啃,能明白多少是多少。拿着中英文的两个版本对照着看,有些中文翻译最好还是不译的好。 这里只会一些杂乱的笔记,算不得什么记要,重要的信息仍然在书上。
学习中相关的测试代码放在 GitHub 仓库 yabqiu/Hands-On-Large-Language-Models, 主要是在 macOS 苹果芯片上进行的测试。虽然官方有一个相应的仓库 HandsOnLLM/Hands-On-Large-Language-Models, 但作为沉浸式学习,亲自根据自己的口味撸一遍代码是非常必要的,所以也会发现我学习时的代码与书中不完全相同。
文字的计算机语义处理有过
Bag-of-words,word2vec,sequence-to-sequence, 再就是BERT,GPT这些概念了。 写作 "Attention Is All You Need" 这篇论文的作者们真是太伟大了,拿不到诺贝尔奖,也应该给他们个图灵奖,虽然其中的技术并非很高级, 但这篇论文在AI发展史中绝对有着里程碑式的意义。模型从大的功能分为
- 仅编码的表示模型(representation model),如种种嵌入模型,都比较小的,约几百兆大小, 像 BERT(bidirectional encoder representations from Transformers)
- 生成模型(generative model), 关注生成文本, 通常不会被训练用于生成嵌入, 像 GPT(Generative Pre-trained Transformer)