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 });