wip:《Langchain.js入门和实战》学习笔记

1,781 阅读2分钟

大家好,我卡颂。

一个人学总是没一群人一起学有意思。所以,我偶尔会建些课程学习群,唤一些朋友一起学。

这篇文章是掘金小册Langchain.js入门和实战的学习笔记,作为对课程内容的补充。

会持续更新到学完为止。

开发环境

课程中推荐的开发工具是jupyter notebook,这是一款交互式编程环境,主要应用在数据科学、机器学习、教育等领域。

传统的代码调试步骤是:

  1. 在某一行打断点

  2. 运行文件执行代码,直到断点所在行

重新调试时需要重复上述步骤。

本课程的很多示例在执行时需要调用大模型的能力,可能会产生费用。

使用jupyter调试可以保留代码中间执行结果。下次调试时,可以从中间继续执行代码,减少不必要的大模型调用。

这就是本课程使用jupyter作为开发环境的主要原因。

但使用jupyter也有坏处:

  1. 对于es语言,只有Deno实现了jupyter的内核,所以要使用jupyter开发语言得用Deno而不是Node

  2. deno-ts的Vscode插件在jupyter下类型推导有问题

  3. Deno对一些npm包有兼容性问题

所以,直接用Node开发也挺好。至于节省大模型费用,可以使用本地部署的开源大模型。

技术选型

开源大语言模型的选择:

我的内存32G,可以流畅运行llama3.1:8bqwen2.5:7bqwen2.5:14b也能勉强使用。

开源embedding模型可以选择mxbai-embed-large

向量数据库课程里推荐meta开源的faiss,但相关依赖项faiss-node有些同学安装起来总失败。有三个解决办法:

  1. 挂全局代理

  2. 下载releases包手动放到faiss-node目录下

  3. 使用替代品HNSWLib,需要安装依赖hnswlib-node

HNSW是一种高维空间相似性搜索算法,HNSWLibHNSW的具体实现,faiss则是实现了包含HNSW在内的多种搜索算法

两者的引用路径如下,使用方式类似:

import { FaissStore } from "@langchain/community/vectorstores/faiss";
import { HNSWLib } from "@langchain/community/vectorstores/hnswlib";