贫瘠之地

出来混最重要的是什么?是出来

多进程

fork

Unix/Linux 操作系统提供了一个 fork 系统调用,它非常特殊,因为普通的函数调用,调用一次就返回一次,但是 fork 调用一次,返回两次

因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后分别在父进程和子进程内返回,子进程永远返回 0,而父进程返回子进程的 ID

这样做的理由是,一个父进程可以 fork 出很多子进程,所以,父进程要记下每个子进程的 ID,而子进程只需要调用 getppid 就可以拿到父进程的 ID

阅读全文 »

因为 Python 并非是工作内容需要使用的语言,所以对语法并没有系统地学习过,加上也不会使用 Python 编写什么复杂的逻辑,所以一直以来都是使用过程中遇到需要的逻辑语法就查一下

在学习 LangChain 的过程中,发现 Python 的语法糖很多,很多设计思想提供了语法层面的支持,使得阅读源码挺费劲的

所以在这里还是系统地了解下 Python 都提供了哪些语法,也了解下 Python 编写代码的主要思想

这里主要是整理下 Python 中比较特殊的、和 Java 有较大区别的操作

函数

阅读全文 »

工具是代理可以用来与世界交互的接口,它们包括:

  • 工具的名称
  • 工具的描述
  • 工具输入 JSON 参数
  • 调用的函数
  • 是否应将工具的结果直接返回给用户

这些信息至关重要,使用这些信息可以用来建立行动系统,LLM 就可以使用名称、描述和 JSON 模式入参作为提示,这样它就知道如何指定要执行的操作,然后要调用的函数就相当于执行该操作

工具的输入越简单,LLM 就越容易使用它。许多代理只使用具有单个字符串输入的工具

需要注意的是名称、描述和 JSON 模式入参(如果使用)都将在提示中被使用。因此这些内容必须清楚并准确地描述应该如何使用该工具;这一点非常重要,如果 LLM 出现了不了解如何使用该工具的情况,则可能需要更改默认名称、描述或 JSON 模式入参

阅读全文 »

相似性度量 Similarity Metric

了解不同相似性度量方式之间的区别和优缺点,为最佳相似性度量方式选择做出明智的决定

在下表中,您可以看到我们将在本文中讨论的相似性度量以及影响度量的向量的属性

Similarity Metric 使用向量特征
欧几里得距离 角度和方向
余弦相似度 方向
点基相似度 角度和方向

欧几里得距离 Euclidean distance

阅读全文 »

什么是链

LangChain 中通过 Chain 来链接各个组件和功能,模型之间彼此链接,或模型与其他组件链接

将多个组件相互链接,组合成一个链的想法简单但强大,简化了复杂应用程序的实现,使之更加模块化,能够创建出单一的、连贯的应用程序,从而使调试、维护和改进应用程序变得容易;这也是 LangChain 名称的由来

需要注意,在现版本中 LangChain 已经在主推 LangChain Expression Language(LCEL),逐渐废弃旧版本中手动创建 Chain 的方式以及旧的 Chain 实现,不过这里也参考早期 Chain 的使用方式,LCEL 留在后面进行学习

链的使用主要是以下两个步骤:

阅读全文 »

向量嵌入

向量

在研究什么是向量嵌入之前,先来了解向量

向量是一种具有大小和方向的数学结构;例如我们可以将向量视为空间中的一个点,方向是从 (0,0,0) 到向量空间(vector space)中该点的箭头

阅读全文 »
0%