LangChain-使用 LC 和 Vector DB 增压大型语言模型

863 阅读5分钟

LangChain简介

LangChain 是一个强大的框架,可用于与许多大型语言模型 (LLM) 一起工作。通过 Langchain,我们可以构建强大的应用程序。它通过提供 LLM 与其他数据源(例如互联网或您的个人文件)的深度集成来实现这一点。但是等等为什么 LLM 拥有所有知识很重要 - 让我们理解......

为什么浪链很重要?

GPT-3 或 ChatGPT 等大型语言模型本身就非常有用。例如,他们擅长生成内容!这些模型是广义模型,这意味着它们可以非常准确地有效执行许多任务。但有时他们可能无法为需要深入领域知识或专业知识的问题或任务提供具体答案。例如,假设您想使用 LLM 来回答有关特定领域的问题,例如医疗保健或保险。虽然 LLM 可能能够回答有关这些领域的一般性问题,但它可能无法提供需要专业知识的详细答案。他们也无法提供模型没有的信息(例如 Chatgpt - 2022 年之后的信息不存在)。这些模型的另一个问题是当我们有长文档时,由于令牌限制问题或序列长度问题,它们无法处理它们。这些问题可以使用 Langchain 来解决。

Langchain——救援者

在 LangChain 的帮助下,我们可以解决上述这些问题。由于 langchain 提供了我们的数据文件与这些大型语言模型的深度集成。我们可以创建强大的应用程序,领域信息也可以作为上下文注入到这些 LLM 中。Langchain 还通过创建文本块来帮助处理令牌限制问题。然后从这些文本我们可以创建可以存储到矢量数据库(Pinecone,Croma)的嵌入。

使用 Langchain 可以完成许多用例,例如问答、摘要、聊天机器人等。您可以在其文档或GitHub 存储库中阅读有关 LangChain 一般用例的更多信息。

使用外部信息记录问题解答

在本文中,我们将使用 Langchain 和 LLM 创建一个强大的应用程序。我们将尝试通过将一些外部文件作为上下文提供给 LLM,来创建革命性的基于文档问答的系统。该模型将能够回答复杂的问题。我们还可以创建一个包含多个文档或多个文件的应用程序,并且可以对这些文件进行问答。

image.png

基于文档的质量保证系统架构

在上面的架构中,很明显在开发这个应用程序时只涉及几个步骤。让我们向下钻取。

  1. 为我们的项目安装所需的依赖项。首先我们从LangChain、openai、cromadb、tiktoken的安装开始。
pip 安装 langchain 
pip 安装 openai 
pip 安装 cromadb 
pip 安装 tiktoken
  1. 需要连接到 Open AI,这可以通过在 Open AI 网站上创建一个帐户来完成。我们将使用链接platform.openai.com/account/api…

  2. LangChain 提供了一种有用的方法,通过将文本语料库分解成块来对其进行预处理。Langchain 提供加载器,我们可以通过加载器读取文件并从中创建块。

从langchain.text_splitter导入CharacterTextSplitter 
text_splitter = CharacterTextSplitter(chunk_size= 1000 , chunk_overlap= 0 ) 
texts = text_splitter.split_documents(文档)
  1. 创建块后,我们将获得这些文本块的嵌入。Langchain 提供与 Huggingface 嵌入、OpenAI 嵌入等的直接集成。这些可以直接下载
从langchain.embeddings导入OpenAIEmbeddings
嵌入 = OpenAIEmbeddings()
  1. 一旦我们有了这些文本块的嵌入,就可以将它们保存到向量数据库中。有许多可用的开源 Vector DB,例如(Pinecone、CromaDB)。这里我们将使用 Croma 数据库。用于在向量 DB 中存储和索引这些密集向量。
从langchain.vectorstores import Chroma 
db = Chroma.from_documents(texts, embeddings)
  1. 一旦我们创建了知识库。我们将为推理查询重复相同的过程。一旦我们获得了架构中所示的推理查询的嵌入。然后将针对知识库计算语义相似度。我们可以从向量空间中获得前 k 个语义相似块或它们的嵌入,这些可以作为上下文传递给 LLM。
index= VectorstoreIndexCreator( 
    vectorstore_cls=Chroma, 
    embedding=OpenAIEmbeddings(), 
    text_splitter=CharacterTextSplitter(chunk_size= 1000 , chunk_overlap= 0 ) 
)

6.在使用余弦相似度得到前k个语义相似嵌入后。这些嵌入或块将传递给 LLM。语言模型将这些嵌入作为上下文,并可以为输入查询生成有效的输出。

下面显示了几个输出样本——在下面的快照中,输入是研究论文。在这些 PDF 和问题回答之上执行的上述步骤可以使用 LLM 完成

image.png

LangChain 积木

  1. 模型:LangChain 提供对各种模型类型和模型集成的支持。它使您能够轻松地集成和使用不同的语言模型,如拥抱面和开放 AI,从而增强应用程序的能力。
  2. 提示:LangChain 允许您有效地管理、序列化提示。这有助于从语言模型中生成更准确和上下文相关的响应。
  3. 内存:LangChain 提供了内存的标准接口和内存实现的集合。它促进了链或代理中调用之间状态的持久化,增强了模型的知识和召回能力。
  4. 索引:为了增强语言模型的力量,LangChain 帮助您将它们与您自己的文本数据有效地结合起来。它提供了索引和搜索数据源的最佳实践。
  5. :链是对语言模型或其他实用程序的调用序列。LangChain 提供链的标准接口,以及用于常见应用程序的大量集成和端到端链。
  6. 代理:代理使语言模型能够做出决策、采取行动、观察结果并重复该过程,直到达到目标。LangChain 提供了代理的标准接口,可供选择的代理选择,以及端到端代理的示例。

结论

希望在本文结束时,我们将了解 Langchain 以及如何使用 LangChain、OpenAI 和 cromadb 构建问答 PDF 引擎