Skip to main content

Embeddings: 嵌入

我们为聊天模型提供了许多附加功能。在下面的示例中,我们将使用“OpenAI嵌入”模型。

添加超时

默认情况下,LangChain将无限期地等待模型提供者的响应。如果你想添加超时,可以在实例化模型时传递一个毫秒级的timeout选项。例如,对于OpenAI#

import { OpenAIEmbeddings } from "langchain/embeddings/openai";

export const run = async () => {
const embeddings = new OpenAIEmbeddings({
timeout: 1000, // 1s timeout
});
/* Embed queries */
const res = await embeddings.embedQuery("Hello world");
console.log(res);
/* Embed documents */
const documentRes = await embeddings.embedDocuments([
"Hello world",
"Bye bye",
]);
console.log({ documentRes });
};

目前,timeout选项仅支持OpenAI模型。

处理速率限制

一些提供者具有速率限制。如果你超过速率限制,将会收到错误。为了帮助你处理这个问题,LangChain在实例化嵌入模型时提供了maxConcurrency选项。该选项允许你指定要向提供者发送的最大并发请求数量。如果你超过了这个数字,LangChain将自动将你的请求排队等待之前的请求完成后再发送。

例如,如果你设置maxConcurrency: 5,那么LangChain一次只会发送5个请求到提供者。如果你发出10个请求,前5个将立即发送,接下来的5个将排队等待。一旦前5个请求之一完成,队列中的下一个请求将被发送。

要使用此功能,只需在实例化LLM时传递maxConcurrency: <number>即可。例如:

import { OpenAIEmbeddings } from "langchain/embeddings/openai";



const model = new OpenAIEmbeddings({ maxConcurrency: 5 });

处理API错误

如果模型提供者从他们的API返回错误,默认情况下LangChain将重试6次指数退避。这使得无需任何额外的努力即可进行错误恢复。如果要更改此行为,您可以在实例化模型时传递maxRetries选项。例如:#


import { OpenAIEmbeddings } from "langchain/embeddings/openai";



const model = new OpenAIEmbeddings({ maxRetries: 10 });