《大语言模型开发:用开源模型开发本地系统》第11-12章阅读心得之词向量构建与检索...
[复制链接]
在百忙之中,完成本次阅读的第四部分。我研读了《大语言模型开发》第11-12章,这两章是对模型评估标准与RAG技术的剖析。
市面上的大模型可谓是百花齐放,百家争鸣,不过不同模型的性能和表现总要分个高下,那么如何来评估模型的“好坏”呢?作者在第11章指出,评估指标体系分为自动评估和人工评估两大类。自动评估采用BLEU评分机制,通过计算n-gram匹配度来衡量生成文本质量,n取1到4时分别计算unigram到4-gram重叠率,再用几何平均得到最终分数。ROUGE指标族包含ROUGE-N(n-gram重叠)、ROUGE-L(最长公共子序列)、ROUGE-S(跳跃二元组),专门用于评估摘要生成任务。METEOR指标更全面,不仅考虑词形变化还引入同义词匹配,使用WordNet进行语义层面的比对。作者还详细讲解了各指标在代码实现上的关键步骤:如何对齐标点符号、大小写,如何处理停用词,如何计算权重等。在实验数据上,这套评估体系在翻译、摘要等确定性任务上取得了0.85以上的人机相关性。
评估数据集设计也是很精妙的,我想起之前阅读《大语言模型:原理与工程实践》那本书对相应大模型的评测数据集有更细致的探讨。而本书用表格列举对比了MPT、Falcon、Llama 1、Llama2在不同基准测试的指标表现。MMLU测试集覆盖了57个学科领域,每个问题都是四选一,评分标准非常严格。BBH数据集专门收集了大模型容易失败的挑战性任务,包括逻辑推理、算术运算、常识判断等。考试评测AGI-Eval囊括了中国重点高校的真实考试题,包含理工、人文、社科等多个领域。作者用实验数据说明了GPT-4在这些数据集上的表现:MMLU准确率达到86.4%,超过了绝大多数人类考生;BBH的逻辑推理正确率75.3%,算术计算正确率63.8%;AGI-Eval的理工科得分82分,文科得分88分。这些数据揭示了大模型在结构化知识和推理能力上的长足进步。Human-Eval代码生成基准测试也很有创意,通过单元测试来验证生成代码的功能正确性,而不是简单比对代码字符串。
第12章,最后收官阶段,本身讲解的RAG技术部分将理论与实践完美结合。在LLM推理时,将目标文档切分成合适大小的块(通常是512-1024个token),转换成向量后存入向量数据库。查询时计算问题的向量表示,检索最相关的文档片段,拼接到prompt中增强模型的知识储备。OpenAI的text-embedding-ada-002模型能生成1536维的文本向量,具有很强的语义表达能力。Hugging Face的sentence-transformers框架更灵活,支持多种Transformer模型生成向量表示。池化层的设计也很考究:mean pooling对所有token取平均,max pooling保留最显著特征,都能将变长序列压缩为固定维度。最后一小节,本书举PGVector的例子收尾。PGVector的工程实现也很巧妙, 利用PostgreSQL的插件机制扩展了向量运算能力, ivfflat索引配合向量距离运算符实现了高效检索。文档块的大小、重叠度、向量维度等超参数都配有详细的调优建议和性能测试数据。嵌入向量的生成策略也很讲究:对于长文本,先用slidingwindow切分再分别编码,最后用weighted pooling合并,权重设计考虑了句子位置和关键词密度。
其实关于RAG这一块原本就是一个非常关键的大模型技术栈,本书受限于篇幅没有展开去讲,个人在此推荐其他朋友感兴趣可以去看《大模型RAG实战, RAG原理、应用与系统构建》这本书,会对于RAG的原理与应用有更全面充分的理解认识。当然第12章还有提到langchain,这个是当下最火热的LLM开发框架,大家也可以再找其他相关书籍和网络上的高质量资料去拓展研学。
整体来说读完本书还是收获满满,唯一有点小遗憾的是作者列出的代码部分相对还是较少,并且相关的剖析还是不够深入。不过总体也是瑕不掩瑜,毕竟大模型开发还是更多要靠自己动手实践。在明年过年那阵子,我也打算上手实践,配合各路大神的技巧经验真的参与到大模型的项目开发当中。
最后再次感谢主办方提供宝贵的学习机会,希望咱们论坛能越办越好。
|