什么是langchain #98

Open
opened 2024-09-18 11:10:03 +08:00 by 12390900721cs · 1 comment

LangChain 是一个开源的开发框架,旨在简化构建基于大语言模型 (LLM) 的复杂应用程序。随着 LLM 技术的发展,许多应用需要将大语言模型与其他数据源、API、工具等结合起来使用。LangChain 提供了一系列工具和抽象层,使得开发者能够轻松地将 LLM 与外部世界的交互串联起来,构建更加复杂、智能的系统。

工作原理

  1. Components,为LLMs提供接口封装、模板提示和信息检索索引;
  2. Chains,它将不同的组件组合起来解决特定的任务,比如在大量文本中查找信息;
  3. Agents,它们使得LLMs能够与外部环境进行交互,例如通过API请求执行操作。

Langchain 的这种结构设计使LLMs不仅能够处理文本,还能够在更广泛的应用环境中进行操作和响应,大大扩展了它们的应用范围和有效性。

核心概念

  1. Embeddings & VectorStores:

Embeddings 是一种将文本、词语、句子或其他数据(如图像、音频)转换为固定大小的向量表示的方法。通过这种表示,模型能够以一种更容易处理和比较的方式理解数据的语义信息。简单来说,嵌入是一种将复杂的高维数据(如文本)转换为低维向量的技术,这些向量捕捉了数据的语义特征。

VectorStores 是一种专门用于存储和检索嵌入向量的数据库或数据结构。向量存储允许高效地存储大量的向量(如文本、图像的嵌入向量)并支持快速地从中检索与查询相似的向量。

  1. Data Augmented Generation, DAG:

中文称为检索增强生成。RAG 是一种将 检索(Retrieval)生成(Generation) 相结合的技术,旨在提高生成式模型的准确性和信息丰富度。RAG 模型利用外部知识库(如文档、数据库或搜索引擎)进行信息检索,并将检索到的信息作为上下文,输入到生成模型中,以产生更精确和相关的答案。

RAG 的核心思路是弥补大型语言模型(LLM)的一个固有缺陷,即知识库的静态性。尽管 LLM 经过大量数据的预训练,具备强大的语言生成能力,但它无法动态访问实时或未在预训练中包含的外部知识。RAG 通过结合实时检索的外部信息,使得生成模型的答案更具时效性、准确性和专业性。

  1. Model Wrappers :

即模型封装, LangChain 支持主流的 LLM 平台,如 OpenAI、Hugging Face、Anthropic 等。它为这些平台提供了统一的接口,使开发者能够轻松地调用不同平台的模型。它支持调用不同的 LLM 接口, 允许切换不同的语言模型,便于对比和实验,并且可以 自定义模型的推理参数,如温度、token 数限制等。

  1. Chains:

链是 LangChain 的核心概念之一,指的是将不同的语言模型任务组合起来,形成一个链式调用流程。通过链式组合,开发者可以构建更加复杂的任务序列。实际应用中可以将多个模型调用或 API 调用链接在一起,形成一个自动化的工作流, 适用于搜索任务、多轮推理、问答系统等。

  1. Tools:

LangChain 提供了多种工具与外部系统进行集成,包括访问数据库、API、搜索引擎等。语言模型可以根据用户的需求调用这些工具完成任务。这能够增强语言模型的实用性,使其不仅仅局限于生成文本,还能执行具体任务。

  1. Memory:

LangChain 的记忆模块允许系统在会话过程中保留上下文状态,从而可以实现连续对话。与传统一次性调用 LLM 的方式不同,LangChain 通过记忆模块可以让模型“记住”先前的对话和信息,并将其应用到接下来的对话中。

  1. Agents:

代理是 LangChain 中另一项强大的功能。代理允许模型动态决定何时调用不同的工具或执行特定的任务。模型可以在面对未知问题时通过代理机制进行自我决策,调用外部 API 或工具完成复杂任务。具体来说当用户提出一个问题时,代理会判断是否需要外部工具或数据源。然后根据任务的需要,代理会选择合适的工具,生成相应的查询或调用。

工作流程

  1. 用户提问(Question):用户提出一个问题,输入到系统中。
  2. 相似性搜索(Similarity Search):系统根据用户问题,在已有的向量数据库中进行相似性搜索。这一步利用了 **Embeddings **和 **VectorStores **技术,来寻找与问题相关的内容或文档。
  3. 检索相关信息:相似性搜索的结果会返回相关信息,这些信息将与用户的原始问题一起作为上下文,提供给模型。
  4. 生成模型(Question + Relevant Info):经过结合了用户的问题与从向量数据库中检索出的相关信息后,模型(如 OpenAI 或 Hugging Face 的模型)将生成回答。这一步通常是通过大语言模型进行生成式回答。
  5. 输出结果
    • Answer(回答):模型生成一个基于上下文的答案,并返回给用户。
    • Action(动作):在某些情况下,模型还会触发某种操作或行为,比如通过调用 API 执行某种任务。

整个流程利用了嵌入向量搜索、上下文增强以及大语言模型的生成能力来提供高质量的答案或触发系统行为,确保了模型能结合外部数据进行更智能的回答。

LangChain 是一个开源的开发框架,旨在简化构建基于大语言模型 (LLM) 的复杂应用程序。随着 LLM 技术的发展,许多应用需要将大语言模型与其他数据源、API、工具等结合起来使用。LangChain 提供了一系列工具和抽象层,使得开发者能够轻松地将 LLM 与外部世界的交互串联起来,构建更加复杂、智能的系统。 ## 工作原理 ![](https://cdn.nlark.com/yuque/0/2024/png/48516026/1726627133835-32eaf371-e262-4123-aa9b-eb68e81182e8.png) 1. Components,<font style="color:rgb(77, 77, 77);">为LLMs提供接口封装、模板提示和信息检索索引;</font> 2. Chains,<font style="color:rgb(77, 77, 77);">它将不同的组件组合起来解决特定的任务,比如在大量文本中查找信息;</font> 3. Agents,<font style="color:rgb(77, 77, 77);">它们使得LLMs能够与外部环境进行交互,例如通过API请求执行操作。</font> <font style="color:rgb(77, 77, 77);">Langchain 的这种结构设计使LLMs不仅能够处理文本,还能够在更广泛的应用环境中进行操作和响应,大大扩展了它们的应用范围和有效性。</font> ## 核心概念 1. Embeddings & VectorStores: **Embeddings** 是一种将文本、词语、句子或其他数据(如图像、音频)转换为固定大小的向量表示的方法。通过这种表示,模型能够以一种更容易处理和比较的方式理解数据的语义信息。简单来说,嵌入是一种将复杂的高维数据(如文本)转换为低维向量的技术,这些向量捕捉了数据的语义特征。 **VectorStores** 是一种专门用于存储和检索嵌入向量的数据库或数据结构。向量存储允许高效地存储大量的向量(如文本、图像的嵌入向量)并支持快速地从中检索与查询相似的向量。 2. Data Augmented Generation, DAG: 中文称为**检索增强生成**。RAG 是一种将 **检索(Retrieval)** 和 **生成(Generation)** 相结合的技术,旨在提高生成式模型的准确性和信息丰富度。RAG 模型利用外部知识库(如文档、数据库或搜索引擎)进行信息检索,并将检索到的信息作为上下文,输入到生成模型中,以产生更精确和相关的答案。 RAG 的核心思路是弥补大型语言模型(LLM)的一个固有缺陷,即知识库的静态性。尽管 LLM 经过大量数据的预训练,具备强大的语言生成能力,但它无法动态访问实时或未在预训练中包含的外部知识。RAG 通过结合实时检索的外部信息,使得生成模型的答案更具时效性、准确性和专业性。 3. Model Wrappers : 即模型封装, LangChain 支持主流的 LLM 平台,如 OpenAI、Hugging Face、Anthropic 等。它为这些平台提供了统一的接口,使开发者能够轻松地调用不同平台的模型。它支持调用不同的 LLM 接口, 允许切换不同的语言模型,便于对比和实验,并且可以 自定义模型的推理参数,如温度、token 数限制等。 4. Chains: 链是 LangChain 的核心概念之一,指的是将不同的语言模型任务组合起来,形成一个链式调用流程。通过链式组合,开发者可以构建更加复杂的任务序列。实际应用中可以将多个模型调用或 API 调用链接在一起,形成一个自动化的工作流, 适用于搜索任务、多轮推理、问答系统等。 5. Tools: LangChain 提供了多种工具与外部系统进行集成,包括访问数据库、API、搜索引擎等。语言模型可以根据用户的需求调用这些工具完成任务。这能够增强语言模型的实用性,使其不仅仅局限于生成文本,还能执行具体任务。 6. Memory: LangChain 的记忆模块允许系统在会话过程中保留上下文状态,从而可以实现连续对话。与传统一次性调用 LLM 的方式不同,LangChain 通过记忆模块可以让模型“记住”先前的对话和信息,并将其应用到接下来的对话中。 7. Agents: 代理是 LangChain 中另一项强大的功能。代理允许模型动态决定何时调用不同的工具或执行特定的任务。模型可以在面对未知问题时通过代理机制进行自我决策,调用外部 API 或工具完成复杂任务。具体来说当用户提出一个问题时,代理会判断是否需要外部工具或数据源。然后根据任务的需要,代理会选择合适的工具,生成相应的查询或调用。 ## 工作流程 ![](https://cdn.nlark.com/yuque/0/2024/png/48516026/1726628706400-d7d382a6-bc66-4bd6-9f32-b8fa799a1aa1.png) 1. **用户提问(Question)**:用户提出一个问题,输入到系统中。 2. **相似性搜索(Similarity Search)**:系统根据用户问题,在已有的向量数据库中进行相似性搜索。这一步利用了 **Embeddings **和 **VectorStores **技术,来寻找与问题相关的内容或文档。 3. **检索相关信息**:相似性搜索的结果会返回相关信息,这些信息将与用户的原始问题一起作为上下文,提供给模型。 4. **生成模型(Question + Relevant Info)**:经过结合了用户的问题与从向量数据库中检索出的相关信息后,模型(如 OpenAI 或 Hugging Face 的模型)将生成回答。这一步通常是通过大语言模型进行生成式回答。 5. **输出结果**: - **Answer(回答)**:模型生成一个基于上下文的答案,并返回给用户。 - **Action(动作)**:在某些情况下,模型还会触发某种操作或行为,比如通过调用 API 执行某种任务。 整个流程利用了嵌入向量搜索、上下文增强以及大语言模型的生成能力来提供高质量的答案或触发系统行为,确保了模型能结合外部数据进行更智能的回答。
Author

LangChain 的现状

  1. 活跃的开发生态:
    LangChain 社区非常活跃,项目持续迭代更新,不断增加新的功能和集成模块。官方维护的文档、教程和插件库正在快速发展,帮助开发者更加轻松地使用和扩展框架。
  2. 广泛支持的模型:
    LangChain 支持多种大语言模型,包括 OpenAI、Hugging Face、Cohere 等。无论是 GPT-3、GPT-4,还是自定义的开源模型,LangChain 都可以无缝集成。
  3. 集成各种工具和服务:
    LangChain 提供了与向量数据库(如 Pinecone、FAISS)、搜索引擎、API、文档数据库(如 Notion、Google Docs)以及浏览器等的深度集成,使其成为构建强大对话和信息检索系统的理想平台。
  4. 活跃的开源社区:
    LangChain 是一个开源项目,拥有不断增长的社区贡献者和支持者。它支持多种语言的扩展和改进,为开发者提供了一个开放的交流平台。
    随着自然语言处理(NLP)技术的不断发展,LangChain 越来越受到开发者的青睐。

LangChain的应用场景

  1. 检索增强生成(RAG, Retrieval-Augmented Generation): LangChain 特别适合构建基于 RAG 的系统。这类系统结合了向量数据库的检索能力和大语言模型的生成能力,能够根据用户输入从海量数据中检索相关内容,再由语言模型生成答案。典型应用包括:
  • 文档问答系统:根据用户的提问,从一大堆文档中检索到相关信息,再生成精确的回答。
  • 企业知识库问答:整合企业内的大量文档和知识库内容,帮助员工快速找到所需信息。
  1. 智能对话系统:LangChain 可以帮助开发者构建支持多轮对话、上下文记忆和动态行为的智能对话系统。与传统的对话机器人不同,LangChain 集成了大语言模型,可以处理复杂的用户输入,并根据外部数据动态生成回复。
  • 应用例子:客户支持聊天机器人、虚拟助理等。
  1. 动态文档生成:通过与数据库、API 或搜索引擎集成,LangChain 可以根据实时数据生成动态文档或报告。例如,基于用户输入和当前的数据生成个性化的报告、摘要或通知。
  • 应用例子:金融报告生成、新闻自动生成、项目总结等。
  1. 语义搜索和推荐系统:LangChain 可以结合嵌入技术和向量数据库,帮助构建语义搜索引擎。相对于传统的基于关键词的搜索,语义搜索能够根据文本的深层语义进行匹配。
  • 应用例子:个性化推荐系统、智能信息检索系统等。
  1. 任务自动化和操作链(Chains):LangChain 的 Chains 概念允许开发者构建多步骤的任务自动化工作流。每一个任务可以依赖于之前步骤的结果,灵活处理复杂的逻辑和条件分支。
  • 应用例子:根据用户输入生成代码、调用 API 完成特定任务、分析数据并输出建议等。
  1. 多模态应用:除了处理文本数据,LangChain 还可以集成图片、音频、视频等多种数据类型,并与不同类型的模型(如图像生成模型)协同工作,帮助开发者构建多模态应用。
  • 应用例子:图文检索系统、跨模态生成任务等。
## LangChain 的现状 1. 活跃的开发生态: LangChain 社区非常活跃,项目持续迭代更新,不断增加新的功能和集成模块。官方维护的文档、教程和插件库正在快速发展,帮助开发者更加轻松地使用和扩展框架。 2. 广泛支持的模型: LangChain 支持多种大语言模型,包括 OpenAI、Hugging Face、Cohere 等。无论是 GPT-3、GPT-4,还是自定义的开源模型,LangChain 都可以无缝集成。 3. 集成各种工具和服务: LangChain 提供了与向量数据库(如 Pinecone、FAISS)、搜索引擎、API、文档数据库(如 Notion、Google Docs)以及浏览器等的深度集成,使其成为构建强大对话和信息检索系统的理想平台。 4. 活跃的开源社区: LangChain 是一个开源项目,拥有不断增长的社区贡献者和支持者。它支持多种语言的扩展和改进,为开发者提供了一个开放的交流平台。 随着自然语言处理(NLP)技术的不断发展,LangChain 越来越受到开发者的青睐。 ## LangChain的应用场景 1. **检索增强生成(RAG, Retrieval-Augmented Generation)**: LangChain 特别适合构建基于 RAG 的系统。这类系统结合了向量数据库的检索能力和大语言模型的生成能力,能够根据用户输入从海量数据中检索相关内容,再由语言模型生成答案。典型应用包括: + **文档问答系统**:根据用户的提问,从一大堆文档中检索到相关信息,再生成精确的回答。 + **企业知识库问答**:整合企业内的大量文档和知识库内容,帮助员工快速找到所需信息。 2. **智能对话系统**:LangChain 可以帮助开发者构建支持多轮对话、上下文记忆和动态行为的智能对话系统。与传统的对话机器人不同,LangChain 集成了大语言模型,可以处理复杂的用户输入,并根据外部数据动态生成回复。 + **应用例子**:客户支持聊天机器人、虚拟助理等。 3. **动态文档生成**:通过与数据库、API 或搜索引擎集成,LangChain 可以根据实时数据生成动态文档或报告。例如,基于用户输入和当前的数据生成个性化的报告、摘要或通知。 + **应用例子**:金融报告生成、新闻自动生成、项目总结等。 4. **语义搜索和推荐系统**:LangChain 可以结合嵌入技术和向量数据库,帮助构建语义搜索引擎。相对于传统的基于关键词的搜索,语义搜索能够根据文本的深层语义进行匹配。 + **应用例子**:个性化推荐系统、智能信息检索系统等。 5. **任务自动化和操作链(Chains)**:LangChain 的 Chains 概念允许开发者构建多步骤的任务自动化工作流。每一个任务可以依赖于之前步骤的结果,灵活处理复杂的逻辑和条件分支。 + **应用例子**:根据用户输入生成代码、调用 API 完成特定任务、分析数据并输出建议等。 6. **多模态应用**:除了处理文本数据,LangChain 还可以集成图片、音频、视频等多种数据类型,并与不同类型的模型(如图像生成模型)协同工作,帮助开发者构建多模态应用。 + **应用例子**:图文检索系统、跨模态生成任务等。
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: HswOAuth/llm_course#98
No description provided.