过去半年,随着ChatGPT的火爆,直接带火了整个LLM这个方向,然LLM毕竟更多是基于过去的经验数据预训练而来,没法获取最新的知识,以及各企业私有的知识
什么是langchain
通俗讲,所谓langchain (官网地址、GitHub地址),即把AI中常用的很多功能都封装成库,且有调用各种商用模型API、开源模型的接口,支持以下各种组件
如你所见,这种通过组合langchain+LLM的方式,特别适合一些垂直领域或大型集团企业搭建通过LLM的智能对话能力搭建企业内部的私有问答系统,也适合个人专门针对一些英文paper进行问答,比如比较火的一个开源项目:ChatPDF,其从文档处理角度来看,实现流程如下
RAG
上图的流程我们一般称之为RAG
这套流程也可以称之为RAG, 主要分为三部分
内容抽取与向量化
将长文档以某种方式切分为若干 block,每个 block 大小一般会小于向量模型能处理的最大上下文。切分方式可以简单也可以是一个复杂的策略。比如,相邻的 block 之间可以保留重复的内容,用来降低简单切分方式造成的信息损失,并进一步补充 block 的上下文信息。
然后将block块向量化,存储在向量数据库中, 比如es, pg_vector, faiss等
ANN向量搜索
对于输入的query ,使用相同的embedding模型进行向量化, 然后在向量数据库中获取n个documents
文档给LLM并提问
将最近的documents合并成上下文并提供给llm问答,构造对应的prompt
简单的问答系统架构都是这样的, 但是具体的有很多细节可以做,比如如何分快, 如何提升召回率, 指令模版怎么构建等等,
代码样例
https://download.csdn.net/download/lazycatlove/89406408?spm=1001.2014.3001.5503