如何嵌入文本数据
信息
前往 集成 查看有关与文本嵌入提供商的内置集成的文档。
先决条件
本指南假设您熟悉以下概念
嵌入创建文本片段的向量表示。这很有用,因为这意味着我们可以将文本视为向量空间,并执行语义搜索等操作,在语义搜索中,我们查找向量空间中最相似的文本片段。
LangChain 中的基类 Embeddings 公开两种方法:一种用于嵌入文档,另一种用于嵌入查询。前者以多个文本作为输入,而后者则接受单个文本。将它们作为两个独立方法的原因是,某些嵌入提供商对文档(要搜索的文档)与查询(搜索查询本身)使用不同的嵌入方法。
入门
以下是使用 OpenAI 嵌入的示例。嵌入有时对查询和文档使用不同的嵌入方法,因此嵌入类公开了 embedQuery
和 embedDocuments
方法。
提示
- npm
- Yarn
- pnpm
npm install @langchain/openai
yarn add @langchain/openai
pnpm add @langchain/openai
入门
import { OpenAIEmbeddings } from "@langchain/openai";
const embeddings = new OpenAIEmbeddings();
嵌入查询
const res = await embeddings.embedQuery("Hello world");
/*
[
-0.004845875, 0.004899438, -0.016358767, -0.024475135, -0.017341806,
0.012571548, -0.019156644, 0.009036391, -0.010227379, -0.026945334,
0.022861943, 0.010321903, -0.023479493, -0.0066544134, 0.007977734,
0.0026371893, 0.025206111, -0.012048521, 0.012943339, 0.013094575,
-0.010580265, -0.003509951, 0.004070787, 0.008639394, -0.020631202,
... 1511 more items
]
*/
嵌入文档
const documentRes = await embeddings.embedDocuments(["Hello world", "Bye bye"]);
/*
[
[
-0.004845875, 0.004899438, -0.016358767, -0.024475135, -0.017341806,
0.012571548, -0.019156644, 0.009036391, -0.010227379, -0.026945334,
0.022861943, 0.010321903, -0.023479493, -0.0066544134, 0.007977734,
0.0026371893, 0.025206111, -0.012048521, 0.012943339, 0.013094575,
-0.010580265, -0.003509951, 0.004070787, 0.008639394, -0.020631202,
... 1511 more items
]
[
-0.009446913, -0.013253193, 0.013174579, 0.0057552797, -0.038993083,
0.0077763423, -0.0260478, -0.0114384955, -0.0022683728, -0.016509168,
0.041797023, 0.01787183, 0.00552271, -0.0049789557, 0.018146982,
-0.01542166, 0.033752076, 0.006112323, 0.023872782, -0.016535373,
-0.006623321, 0.016116094, -0.0061090477, -0.0044155475, -0.016627092,
... 1511 more items
]
]
*/
后续步骤
您现在已经了解了如何在查询和文本中使用嵌入模型。
接下来,查看如何 使用缓存避免过度重新计算嵌入,或查看 有关检索增强生成的完整教程。