Appearance
03-embeddings.ts
向量化示例,将文本转换为向量表示。
功能介绍
这个示例演示了如何使用 OpenAIEmbeddings 将文本转换为向量(embedding)。向量是文本的数值表示,可以用于计算相似度、聚类等任务。
使用场景
- 将文档转换为向量存储
- 计算文本之间的相似度
- 构建语义搜索系统
- 文本聚类和分类
学习要点
- 使用
OpenAIEmbeddings创建向量化器 - 使用
model而不是modelName参数 embedQuery()用于向量化单个查询文本embedDocuments()用于批量向量化多个文档- 向量是浮点数数组,维度取决于模型
- 进行环境变量检查和错误处理
源码
typescript
import "dotenv/config";
import { OpenAIEmbeddings } from "@langchain/openai";
if (!process.env.NEWZHIPUAI_API_KEY) {
throw new Error("NEWZHIPUAI_API_KEY is not set in environment variables");
}
async function main() {
try {
console.log("=== Embeddings 示例 ===\n");
const embeddings = new OpenAIEmbeddings({
model: "embedding-3",
configuration: {
baseURL: "https://open.bigmodel.cn/api/paas/v4",
apiKey: process.env.NEWZHIPUAI_API_KEY,
},
});
// 嵌入单个文本
const text = "Hello, world!";
const embedding = await embeddings.embedQuery(text);
console.log("文本:", text);
console.log("嵌入维度:", embedding.length);
console.log("嵌入向量前 5 个值:", embedding.slice(0, 5));
console.log("\n");
// 嵌入多个文本
const texts = ["猫是宠物", "狗是宠物", "鱼是宠物"];
const embeddingsResult = await embeddings.embedDocuments(texts);
console.log("嵌入多个文本:");
texts.forEach((t, i) => {
console.log(` "${t}" → 维度 ${embeddingsResult[i].length}`);
});
} catch (error) {
console.error("Error during embeddings example:", error);
process.exit(1);
}
}
main().catch(console.error);运行方式
bash
npm run dev src/04-rag/03-embeddings.ts