LLM 常见问题(LangChain部分)

442 阅读5分钟

1. 什么是 LangChain?

LangChain 是围绕 LLM 建立的一个框架,它的核心理念是为 LLM 实现通用的接口,把 LLM 相关的组件“链接”在一起,简化 LLM 应用的开发难度,方便开发者快速地开发复杂的 LLM 应用。LangChain 主要支持 Models、Prompts、Memory、Indexes、Cahins、Agents 六个组件。

2. LangChain 中 Components and Chains 是什么?

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

3. LangChain 中 Prompt Templates 是什么?

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

4. LangChain 中 Example Selectors 是什么?

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

5. 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 用于多字段输出时使用,最后两种是对于格式转换失败之后的修复措施。

6. LangChain 中 Indexes and Retrievers 是什么?

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

7. LangChain 中 Chat Message History 是什么?

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

8. LangChain 中 Agents and Toolkits 是什么?

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

9. 什么是 LangChain Agent?

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

11. LangChain 包含哪些特点?

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

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

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

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

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

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

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

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

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

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

16. LangChain 有哪些代替方案?

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

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