LLM常见问题(LangChain部分)

1. 什么是 LangChain?

LangChain 是围绕 LLMs(大语言模型)建立的一个框架,其自身并不开发 LLMs,它的核心理念是为各种 LLMs 实现通用的接口,把 LLMs 相关的组件“链接”在一起,简化 LLMs 应用的开发难度,方便开发者快速地开发复杂的 LLMs 应用。LangChain 主要支持 ModelsPromptsMemoryIndexesCahinsAgents 六个组件。

2. LangChain 包含哪些 核心概念?

1. LangChain 中 Components and Chains 是什么?

在LangChain 中,Component 是一种模块化的构建块,可以相互组合以构建强大的应用程序。 而 Chain 则是由一系列 Components 或其他 Chains 组合而成的,用于完成特定的任务。

2. LangChain 中 Prompt Templates 是什么?

Prompt Templates是一种可复制的生成Prompt的方式,包含一个文本字符串,可以接受来自终端用户的一组参数并生成Prompt。Prompt Templates可以包含指令、少量示例和一个向语言模型提出的问题。我们可以使用Prompt Templates技术来指导语言模型生成更高质量的文本,从而更好地按照需求完成的任务。

3. LangChain 中 Example Selectors 是什么?

Example Selectors 的主要作用就是从给定的 examples 中选择需要的 examples 出来提供给大模型使用,从而减少会话的token数目

4. LangChain 中 Output Parsers 是什么?

Output Parsers 模块可以使模型输出的期望的结构化文本,、 LangChain中的output parsers一共有七个,分别是List parser、Datetime parser、Enum parser、Pydantic (JSON) parser、Structured output parser、Retry parser、Auto-fixing parser。前四种parser用于常见的格式输出转换,Structured output parser用于多字段输出时使用,最后的两种是对于格式转换失败之后的修复措施

5. LangChain 中 Indexes and Retrievers 是什么?

Indexes 是指为了使LLM与文档更好地进行交互而对其进行结构化的方式。 在链中,索引最常用于“检索”步骤中,该步骤指的是根据用户的查询返回最相关的文档: 索引不仅可用于检索,还可用于其他目的,检索可以使用除索引之外的其他逻辑来查找相关文档。Retrievers 是一个接口,它根据非结构化查询返回文档。它比向量存储更通用。检索器不需要能够存储文档,只需返回(或检索)它。向量存储可以用作检索器的骨干,但也有其他类型的检索器。

6. LangChain 中 Chat Message History 是什么?

ChatMessageHistory 类负责记住所有以前的聊天交互数据,然后可以将这些交互数据传递回模型、汇总或以其他方式组合。 这有助于维护上下文并提高模型对对话的理解。

7. LangChain 中 Agents and Toolkits 是什么?

Agent 是在LangChain 中推动决策制定的实体。 他们可以访问一套工具,并可以根据用户输入决定调用哪个工具。 Tookits 是一组工具,当 Agent 和 Tookits 一起使用时,可以完成特定的任务。Agent 负责使用适当的工具运行代理。

3. 什么是 LangChain Agent?

LangChain Agent 指使用 LangChain 构建的智能体,Agent 核心思想是使用LLM作为大脑自动思考,自动决策选择执行不同的动作,最终完成我们的目标任务,例如数据收集、数据处理、决策支持等。 Agent 可以是自主的,具备一定程度的智能和自适应性,以便在不同的情境中执行任务。

4. LangChain 支持哪些功能?

LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。LangChain 为特定用例提供了多种组件,例如个人助理、文档问答、聊天机器人、查询表格数据、与 API 交互、提取、评估和汇总。

5. 什么是 LangChain model?

LangChain model 是一种抽象,表示框架中使用的不同类型的模型。LangChain 中的模型主要分为三类:

  1. LLM(大型语言模型) :这些模型将文本字符串作为输入并返回文本字符串作为输出。它们是许多语言模型应用程序的支柱。
  2. 聊天模型( Chat Model) :聊天模型由语言模型支持,但具有更结构化的 API。他们将聊天消息列表作为输入并返回聊天消息。这使得管理对话历史记录和维护上下文变得容易。
  3. 文本嵌入模型(Text Embedding Models) :这些模型将文本作为输入并返回表示文本嵌入的浮点列表。这些嵌入可用于文档检索、聚类和相似性比较等任务。

6. LangChain 包含哪些特点?

组件化:为使用语言模型提供抽象层,以及每个抽象层的一组实现。组件是模块化且易于使用的,无论开发是否使用LangChain框架的其余部分。
现成的链结构化的组件集合,用于完成特定的高级任务

7. LangChain 存在问题及方法方案

1. LangChain 低效的令牌使用问题

Langchain的一个重要问题是它的令牌计数功能,对于小数据集来说,它的效率很低。虽然一些开发人员选择创建自己的令牌计数函数,但也有其他解决方案可以解决这个问题。

替代解决方案:Tiktoken是OpenAI开发的Python库,用于更有效地解决令牌计数问题。它提供了一种简单的方法来计算文本字符串中的令牌,而不需要使用像Langchain这样的框架来完成这项特定任务。

2. LangChain 文档的问题

文档是任何框架可用性的基石,而Langchain因其不充分且不准确的文档而受到指责。误导性的文档可能导致开发项目的代价高昂的,并且还经常有404错误页面。这可能与Langchain还在快速发展有关,作为快速的版本迭代,文档的延后性可以理解,只能说希望以后尽快完善吧。

3. LangChain 太多概念容易混淆,过多的“辅助”函数问题

Langchain的代码库因很多概念让人混淆而备受诟病,这使得开发人员很难理解和使用它。这种问题的一个方面是存在大量的“helper”函数,仔细检查就会发现它们本质上是标准Python函数的包装器。开发人员可能更喜欢提供更清晰和直接访问核心功能的框架,而不需要复杂的中间功能。

4. LangChain 行为不一致并且隐藏细节问题

LangChain隐藏重要细节和行为不一致,这可能导致生产系统出现意想不到的问题。例Langchain ConversationRetrievalChain的一个方面,它涉及到输入问题的重新措辞。这种重复措辞有时会非常广泛,甚至破坏了对话的自然流畅性,使对话脱离了上下文。

5. LangChain 缺乏标准的可互操作数据类型问题

Langchain缺乏表示数据的标准方法。这种一致性的缺乏可能会阻碍与其他框架和工具的集成,使其难以在更广泛的机器学习工具生态系统中工作。

8. LangChain 代替方案

  1. LlamaIndex是一个数据框架,它可以很容易地将大型语言模型连接到自定义数据源。它可用于存储、查询和索引数据,还提供了各种数据可视化和分析工具。

  2. Deepset Haystack是另外一个开源框架,用于使用大型语言模型构建搜索和问答应用程序。它基于Hugging Face Transformers,提供了多种查询和理解文本数据的工具。

猜你喜欢

转载自blog.csdn.net/YuqingF/article/details/134408458