Redis SCAN 原理
如何使用
语法
1 | SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] |
时间复杂度
一次调用是 O(1),完整的迭代是
O(N),包括不断调用直到返回 cursor 为 0;N
为集合内元素数量
语法
1 | SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] |
时间复杂度
一次调用是 O(1),完整的迭代是
O(N),包括不断调用直到返回 cursor 为 0;N
为集合内元素数量
Unix/Linux 操作系统提供了一个 fork
系统调用,它非常特殊,因为普通的函数调用,调用一次就返回一次,但是
fork 调用一次,返回两次
因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后分别在父进程和子进程内返回,子进程永远返回
0,而父进程返回子进程的 ID
这样做的理由是,一个父进程可以 fork
出很多子进程,所以,父进程要记下每个子进程的 ID,而子进程只需要调用
getppid 就可以拿到父进程的 ID
因为 Python 并非是工作内容需要使用的语言,所以对语法并没有系统地学习过,加上也不会使用 Python 编写什么复杂的逻辑,所以一直以来都是使用过程中遇到需要的逻辑语法就查一下
在学习 LangChain 的过程中,发现 Python 的语法糖很多,很多设计思想提供了语法层面的支持,使得阅读源码挺费劲的
所以在这里还是系统地了解下 Python 都提供了哪些语法,也了解下 Python 编写代码的主要思想
这里主要是整理下 Python 中比较特殊的、和 Java 有较大区别的操作
工具是代理可以用来与世界交互的接口,它们包括:
这些信息至关重要,使用这些信息可以用来建立行动系统,LLM 就可以使用名称、描述和 JSON 模式入参作为提示,这样它就知道如何指定要执行的操作,然后要调用的函数就相当于执行该操作
工具的输入越简单,LLM 就越容易使用它。许多代理只使用具有单个字符串输入的工具
需要注意的是名称、描述和 JSON 模式入参(如果使用)都将在提示中被使用。因此这些内容必须清楚并准确地描述应该如何使用该工具;这一点非常重要,如果 LLM 出现了不了解如何使用该工具的情况,则可能需要更改默认名称、描述或 JSON 模式入参
了解不同相似性度量方式之间的区别和优缺点,为最佳相似性度量方式选择做出明智的决定
在下表中,您可以看到我们将在本文中讨论的相似性度量以及影响度量的向量的属性
| Similarity Metric | 使用向量特征 |
|---|---|
| 欧几里得距离 | 角度和方向 |
| 余弦相似度 | 方向 |
| 点基相似度 | 角度和方向 |
LangChain 中通过 Chain 来链接各个组件和功能,模型之间彼此链接,或模型与其他组件链接
将多个组件相互链接,组合成一个链的想法简单但强大,简化了复杂应用程序的实现,使之更加模块化,能够创建出单一的、连贯的应用程序,从而使调试、维护和改进应用程序变得容易;这也是 LangChain 名称的由来
需要注意,在现版本中 LangChain 已经在主推 LangChain Expression Language(LCEL),逐渐废弃旧版本中手动创建 Chain 的方式以及旧的 Chain 实现,不过这里也参考早期 Chain 的使用方式,LCEL 留在后面进行学习
链的使用主要是以下两个步骤: