大模型框架LangChain开发实战(二)

一、关于数据的准备及项目背景

Notion提供了团队管理的功能,方便团队成员进行在线协作办公,提高交互效率,notion上面的数据可能包括项目的数据,进度管理的数据,企业服务的数据等等,这里使用了从notion网站(https://www.notion.so)导出的一些样例数据供本项目使用大模型框架LangChain来调用。下面展示的是样例数据中的一些关于office的数据:

大模型框架LangChain开发实战(二)_第1张图片

本项目是以对话的方式来获取notion上面的数据,这是一件有价值的事情,这是因为随着时间的推移,notion上面的数据会越来越多,那么这时直接去notion上查询或者定位信息是一个很费时费力的过程,如果我们使用一个简单的接口,以自然语言的方式通过LangChain以模型驱动为基础来与企业私有数据进行交互,这对提升团队协作效率等很有帮助。

二、项目构建及简单演示

为了测试方便,可以使用streamlit来搭建一个简单的界面:

import streamlit as st

from streamlit_chat import message

使用LangChain访问私有数据,这里的VectorDBQAWithSourcesChain可以看做是一个use case,譬如与数据库进行交互,或者与一个vector space进行交互等:

from langchain import OpenAI

from langchain.chains import VectorDBQAWithSourcesChain

大模型框架LangChain开发实战(二)_第2张图片

       使用向量化检索工具faiss,以大模型为驱动通过LangChain框架来查询存储在notion上的私有数据,在下面的方法from_llm中使用的store就是基于faiss构建的向量索引库:

       大模型框架LangChain开发实战(二)_第3张图片

       当用户输入信息后,返回查询结果:

大模型框架LangChain开发实战(二)_第4张图片

       以下是演示结果,当用户输入以下信息:

       How long is the probation period?

       LangChain访问数据并与模型交互后返回了相应的查询结果和所引用的notion page文件:

大模型框架LangChain开发实战(二)_第5张图片

      

       根据演示界面提到的引用文件,打开后可以发现有相关的信息如下:

三、关于LangChain使用进一步分析

除了上面提到的使用VectorDBQAWithSourcesChain来调用LangChain框架,也可以使用下面的方式:

首先根据chain type构建一个chain,主要参数包括语言模型,chain type,这里使用chain type的主要原因在于跟本地私有数据进行交互时,会涉及到数据规模的问题和处理速度的问题,相应的解决方案是:

-map reduce(数据切分,适用于大数据文件)

-rerank(选取confidence最高的那个文件)

-stuff(一次性加载所有数据)

-refine(把文件切成多个片段时,分析第二个片段时会结合第一个片段的内容)

大模型框架LangChain开发实战(二)_第6张图片

所以在调用方法load_qa_with_sources_chain的内部,我们可以看到相关的处理逻辑:

大模型框架LangChain开发实战(二)_第7张图片

你可能感兴趣的:(AI,langchain,自然语言处理,大模型开发)