大家好,我卡颂。
一个人学总是没一群人一起学有意思。所以,我偶尔会建些课程学习群,唤一些朋友一起学。
这篇文章是掘金小册Langchain.js入门和实战的学习笔记,作为对课程内容的补充。
会持续更新到学完为止。
开发环境
课程中推荐的开发工具是jupyter notebook,这是一款交互式编程环境,主要应用在数据科学、机器学习、教育等领域。
传统的代码调试步骤是:
-
在某一行打断点
-
运行文件执行代码,直到断点所在行
重新调试时需要重复上述步骤。
本课程的很多示例在执行时需要调用大模型的能力,可能会产生费用。
使用jupyter调试可以保留代码中间执行结果。下次调试时,可以从中间继续执行代码,减少不必要的大模型调用。
这就是本课程使用jupyter作为开发环境的主要原因。
但使用jupyter也有坏处:
-
对于
es语言,只有Deno实现了jupyter的内核,所以要使用jupyter开发语言得用Deno而不是Node -
deno-ts的Vscode插件在jupyter下类型推导有问题 -
Deno对一些npm包有兼容性问题
所以,直接用Node开发也挺好。至于节省大模型费用,可以使用本地部署的开源大模型。
技术选型
开源大语言模型的选择:
-
处理英文自然语言,可以选择llama3.1
-
处理中文自然语言,可以选择qwen2.5
-
处理代码,可以选择qwen2.5-coder
我的内存32G,可以流畅运行llama3.1:8b和qwen2.5:7b,qwen2.5:14b也能勉强使用。
开源embedding模型可以选择mxbai-embed-large。
向量数据库课程里推荐meta开源的faiss,但相关依赖项faiss-node有些同学安装起来总失败。有三个解决办法:
HNSW是一种高维空间相似性搜索算法,HNSWLib是HNSW的具体实现,faiss则是实现了包含HNSW在内的多种搜索算法
两者的引用路径如下,使用方式类似:
import { FaissStore } from "@langchain/community/vectorstores/faiss";
import { HNSWLib } from "@langchain/community/vectorstores/hnswlib";