文本嵌入模型
Embeddings类是一个用于与文本嵌入模型进行交互的类。有很多嵌入模型提供者(OpenAI,Cohere,Hugging Face等),这个类被设计为为所有这些提供者提供一个标准接口。
嵌入模型可以创建文本片段的向量表示。这个特性非常有用,因为它意味着我们可以在向量空间中处理文本,并进行诸如语义搜索这样的操作,其中我们在向量空间中寻找最相似的文本片段。
LangChain中的基本Embeddings类公开了两种方法:一种用于嵌入文档,另一种用于嵌入查询。前者接受多个文本作为输入,而后者接受一个单一的文本。之所以将它们作为两个单独的方法,是因为某些嵌入提供者在文档(用于搜索)和查询(搜索查询本身)上有不同的嵌入方法。
入门
Embeddings可用于创建文本数据的数值表示。这种数值表示很有用,因为它可以用来查找相似的文档。
下面是如何使用OpenAI嵌入的示例。嵌入方法可能有时对查询和文档有不同的嵌入方法,因此嵌入类公开了embedQuery
和embedDocuments
方法。
import { OpenAIEmbeddings } from "langchain/embeddings/openai";
/* 创建实例 */
const embeddings = new OpenAIEmbeddings();
/* 嵌入查询 */
const res = await embeddings.embedQuery("你好 世界");
/*
[
-0.004845875, 0.004899438, -0.016358767, -0.024475135, -0.017341806,
0.012571548, -0.019156644, 0.009036391, -0.010227379, -0.026945334,
... 其他1436个项目
]
*/
/* 嵌入文档 */
const documentRes = await embeddings.embedDocuments(["你好 世界", "再见 再见"]);
/*
[
[
-0.0047852774, 0.0048640342, -0.01645707, -0.024395779, -0.017263541,
0.012512918, -0.019191515, 0.009053908, -0.010213212, -0.026890801,
... 其他1436个项目
],
[
-0.009446913, -0.013253193, 0.013174579, 0.0057552797, -0.038993083,
0.0077763423, -0.0260478, -0.0114384955, -0.0022683728, -0.016509168,
... 其他1436个项目
]
]
提示:不了解文本嵌入,请参考文本嵌入模型