Datawhale LLM-universe Task4

今天尝试跟进知识库的搭建
我这边还是使用的智谱的模型
使用智谱的LLM模型, 需要提前知道langchain目前不支持智谱的模型, 需要通过继承langchain_core.language_models的BaseChatModel来自定义, 其中主要实现两个私有方法即可, 一个是_generate方法, 用来调用智谱的API对喂给LLM的输入进行响应, 生成回答, 另外一个是_stream方法, 通过调用智谱的API返回stream输出, 另外还需要实现一个消息转换的函数, 用于把langchain的消息格式转化为智谱支持的格式, zhipuai_llm的设计思路就是这样
在这里插入图片描述
我们继承了langchain_core的BaseChatModel之后, 只需要调用LLM的invoke方法, 输入prompt, 即可让模型做completion
例如:在这里插入图片描述

接下来就要基于上一届中已经搭建的向量知识库, 对query查询问题做召回, 将q, v结合后构建prompt喂给LLM做回答
建立向量数据库的方法跟第三章一模一样, 这里跳过
这里可以使用向量数据库的as_retriever方法把向量数据库构造成检索器
在这里插入图片描述

check一下检索到的内容:
在这里插入图片描述
向量数据库没问题以后, 就可以进行检索链的创建, 在课程示例中用LangChain Expression Language来构建这个workflow
下面用上面定义的retriever来定义一个简单的检索链:
在这里插入图片描述
这里面的RunnableLambda是LCEL中要求的类型, 这里的chain用到了管道符号链接retriever和定义的combiner, 即输入会先输给retriever检索器, 再由combine_doc对检索器的输出做整理
构建好以后, 再定义prompt模板, 就可以构造一个由langchain支持的LCEL数据到prompt然后喂给大模型最后再输出的标准的检索问答链, 这里原作者用的openai的模型, 我用的是智谱
在这里插入图片描述
这里可以试一下检索问答链的效果
在这里插入图片描述
然后看一下大模型直接输出的结果
在这里插入图片描述
可以看到大模型的输出有比较高的幻觉成分, 但是经过本地知识库以后, 回答质量明显变高了

然而, 以上有个问题, 这种思维链无法记住之前输入的内容, 这个特点不利于聊天机器人的搭建, 对话就不连续了
这样, 我们可以用Langchain中的ChatPromptTemplate,把先前的对话输如到语言模型中, 就像增加了一个cache
在这里插入图片描述
但是这也有问题, 如果对话的语义不全, 这样在查询向量数据库的时候就比较难检索到信息, 比如代词这种指代不明的情况, 为解决这个问题, 就可以用信息压缩的方式, 如下
在这里插入图片描述
在这里插入图片描述
然后我们可以看一下带和不带聊天记录的区别
在这里插入图片描述
最后面是使用streamlit做一个llm的网页端app, 还是很有意思的
在这里插入图片描述

### 大型语言模型生态系统 #### 构成要素 大型语言模型生态系统的构成要素主要包括数据源、预训练框架、微调工具集以及下游应用接口。这些组件共同作用,使得LLM能够处理各种自然语言任务并提供广泛的服务。 - **数据源**:高质量的数据对于构建有效的LLM至关重要。这不仅限于文本本身还包括元数据和其他辅助信息。通过多样化的数据输入,可以增强模型的理解能力和表达能力[^1]。 - **预训练框架**:这是指用于开发和优化神经网络架构的技术栈,如TensorFlow或PyTorch等平台支持下的Transformer结构。它们允许研究人员快速迭代实验设计,并利用分布式计算资源加速训练过程[^2]。 - **微调工具集**:为了使通用的语言理解技能适应特定领域的需求,通常需要针对目标场景调整权重参数。为此目的而创建的各种API和服务简化了这一流程,降低了进入门槛的同时提高了效率[^3]。 - **下游应用场景**:最终用户交互界面构成了整个链条的最后一环;无论是聊天机器人还是自动摘要生成器,在实际部署之前都需要经过严格的测试来验证性能指标是否满足预期标准。 ```python import transformers as trfms from datasets import load_dataset model_name = "bert-base-uncased" tokenizer = trfms.BertTokenizer.from_pretrained(model_name) dataset = load_dataset('imdb') ``` #### 半参数化方法的优势 相比于完全依赖内部参数存储世界知识的传统做法,引入外部记忆机制后的混合模式能够在保持灵活性的基础上显著提升检索精度与响应速度。具体来说就是把静态的记忆单元替换成了动态查询接口,从而更好地应对长尾分布特征带来的挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值