Langchain基本框架及实现 | 豆包MarsCode AI刷题

124 阅读2分钟

项目及实现框架

首先我们需要知道Langchain是什么有什么用。

Langchain是一个基于大语言模型用于构造端到端语言模型的框架,让开发者可以使用语言模型处理各种任务,这些任务正是我们通常使用AI帮我们解决问题的这些。
Langchain提供了一系列工具,接口和套件,简化了由大语言模型和聊天模型提供支持的应用程序过程。

Langchain是怎么实现判别用户需求和提供帮助

首先需要用户输入自己的需求,这需求可以是一段话,一个文件,一个图片等。

包括PDF在内的非结构化的数据(Unstructured Data)、SQL在内的结构化的数据(Structured Data),以及Python、Java之类的代码(Code)

然后文档分割器会把我们给出的数据分成指定大小的块。
接着将这些分割好的块嵌入到向量数据库中
应用程序从存储中检索分割后的文档(通过比较余弦相似度:相似的类会在同一面上,会更加接近)
最后把问题和相似的嵌入片传递给语言模型,使用包含问题和检索到的分割的提示生成答案。

对以上用到的模型解释

用document_loaders来加载各种格式的文本文件,如PyPDFLoader,Docx2txtLoader,TextLoader等

分块

通过导入RecursiveCharacterTextSplitter模型,进行分块操作,将chunk_size,chunk_overlap通过此模型赋值给某一变量,再通过此变量调用split_documents函数对文件进行分割。其中chunk_size是每块的大小,chunk_overlap是相邻块的重叠大小。

存储嵌入

通过导入Qdrant模型,嵌入模型OpenAI的OpenAIEmbedding,调用Qdrant中的from_documents函数,得到一小块的文件,再使用from_documents函数嵌入,接下来是将文件存储并命名

在使用余弦相似度时,会用到RetrievalQA 链,而该链中的retriever(vectorstore.as_retriever())函数,会对负责根据问题检索相关的文档,找到具体的“嵌入片”。
最后根据创建的 RetrievalQA 链回答问题。

Modle I/O

Modle I/O由三部分组成:提示模版,语言模版,解析输出

提示模版

导入LangChain中的提示模板——PromptTemplate

创建原始模板
template 是提示模版的内容,可以让机器知道内容,给机器身份等,template是提示的语句,里面可以有“{}”,大括号表示里面的内容可以删改。from_template是一个类方法,方法允许你从一个字符串模板和一些参数来构建一个提示模板
根据原始模板创建LangChain提示模板,调用PromptTemplate中的from_template()函数,得到最终需要的模版