开发喵星球

使用JavaScript整合LangChain和Ollama

使用JavaScript整合LangChain和Ollama

在今天的文章在本教程中,我们将使用JavaScript与LangChain和Ollama一起学习一些最新的东西。首先,让我们使用LangChain向模型提出一个简单的问题。

为了在JavaScript中做到这一点,我们需要安装LangChain中,我们将使用JavaScript与LangChain和Ollama一起学习一些最新的东西。

npm install @langchain/community

现在就可以开始构建JavaScript了

import { Ollama } from "@langchain/community/llms/ollama";

const ollama = new Ollama({
  baseUrl: "http://localhost:11434",
  model: "llama3",
});

const answer = await ollama.invoke(`why is the sky blue?`);

console.log(answer);

现在就可以得到与我们在终端中输入“为什么天空是蓝色的”相同的结果。但是如果想要从网络上加载一个文档来提问。那么就要使用Cheerio,它是摄取网页的一个很好的库,LangChain在他们的CheerioWebBaseLoader中使用了它。

npm install cheerio
import { CheerioWebBaseLoader } from "langchain/document_loaders/web/cheerio";

const loader = new CheerioWebBaseLoader("https://en.wikipedia.org/wiki/2023_Hawaii_wildfires");
const data = await loader.load();

现在就可以加载文档。尽管这个页面比Odyssey小,但对于大多数LLM来说,它肯定比上下文大小要大。所以我们需要分成更小的部分,然后选择与我们的问题相关的部分。这就要用用到矢量数据存储。

在下面的例子中,我们将使用MemoryVectorStore,它是LangChain的一部分。但是,要将内容放入数据存储,还需要做一件事。我们必须运行一个嵌入过程,将文本中的符号转换为一系列向量。为此,我们将使用Tensorflow。

npm install @tensorflow/tfjs-core@3.6.0 @tensorflow/tfjs-converter@3.6.0 @tensorflow-models/universal-sentence-encoder@1.3.3 @tensorflow/tfjs-node@4.10.0

如果你只安装那些没有版本号的组件,它会安装最新的版本,但是Tensorflow内部有冲突,所以你需要安装兼容的版本。

import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"
import { MemoryVectorStore } from "langchain/vectorstores/memory";
import "@tensorflow/tfjs-node";
import { TensorFlowEmbeddings } from "langchain/embeddings/tensorflow";

// Split the text into 500 character chunks. And overlap each chunk by 20 characters
const textSplitter = new RecursiveCharacterTextSplitter({
 chunkSize: 500,
 chunkOverlap: 20
});
const splitDocs = await textSplitter.splitDocuments(data);

// Then use the TensorFlow Embedding to store these chunks in the datastore
const vectorStore = await MemoryVectorStore.fromDocuments(splitDocs, new TensorFlowEmbeddings());

我们需要使用LangChain的核心概念:链。链是一种将许多活动连接在一起以完成特定任务的方法。有许多可用的链类型,但在今天的文章中,我们将使用RetrievalQAChain。

import { RetrievalQAChain } from "langchain/chains";

const retriever = vectorStore.asRetriever();
const chain = RetrievalQAChain.fromLLM(ollama, retriever);
const result = await chain.call({query: "When was Hawaii's request for a major disaster declaration approved?"});
console.log(result.text)

现在你就可以使用LangChain和Ollama来做你想做的事情了。

   
分类:玩技术 作者:荡荡, 浩浩 发表于:2024-05-12 15:20:49 阅读量:215
<<   >>


powered by kaifamiao