Skip to main content

概述

本概述涵盖基于文本的嵌入模型。LangChain 目前不支持多模态嵌入。
嵌入模型将原始文本——如句子、段落或推文——转换为捕捉其语义的固定长度数字向量。这些向量让机器能够基于语义而非确切词语来比较和搜索文本。 在实践中,这意味着具有相似概念的文本会在向量空间中彼此靠近。例如,嵌入不仅仅是匹配“machine learning”这个短语,还能检索到讨论相关概念的文档,即使使用了不同的措辞。

工作原理

  1. 向量化 — 模型将每个输入字符串编码为一个高维向量。
  2. 相似度评分 — 使用数学指标对向量进行比较,以衡量底层文本的关联程度。

相似度指标

比较嵌入时常用的几种指标:
  • 余弦相似度 — 衡量两个向量之间的夹角。
  • 欧几里得距离 — 衡量点之间的直线距离。
  • 点积 — 衡量一个向量在另一个向量上的投影程度。

接口

LangChain provides a standard interface for text embedding models (e.g., OpenAI, Cohere, Hugging Face) via the Embeddings interface. 主要有两种方法:
  • embedDocuments(documents: string[]) → number[][]: 嵌入文档列表。
  • embedQuery(text: string) → number[]: 嵌入单个查询。
该接口支持采用不同策略对查询和文档进行嵌入,不过实际上大多数提供商都以相同的方式处理。

安装和使用

安装依赖:
npm i @langchain/openai
添加环境变量:
OPENAI_API_KEY=your-api-key
实例化模型:
import { OpenAIEmbeddings } from "@langchain/openai";

const embeddings = new OpenAIEmbeddings({
  model: "text-embedding-3-large"
});
安装依赖
npm i @langchain/openai
添加环境变量:
AZURE_OPENAI_API_INSTANCE_NAME=<YOUR_INSTANCE_NAME>
AZURE_OPENAI_API_KEY=<YOUR_KEY>
AZURE_OPENAI_API_VERSION="2024-02-01"
实例化模型:
import { AzureOpenAIEmbeddings } from "@langchain/openai";

const embeddings = new AzureOpenAIEmbeddings({
  azureOpenAIApiEmbeddingsDeploymentName: "text-embedding-ada-002"
});
安装依赖项:
npm i @langchain/aws
添加环境变量:
BEDROCK_AWS_REGION=your-region
实例化模型:
import { BedrockEmbeddings } from "@langchain/aws";

const embeddings = new BedrockEmbeddings({
  model: "amazon.titan-embed-text-v1"
});
安装依赖:
npm i @langchain/google-genai
添加环境变量:
GOOGLE_API_KEY=your-api-key
实例化模型:
import { GoogleGenerativeAIEmbeddings } from "@langchain/google-genai";

const embeddings = new GoogleGenerativeAIEmbeddings({
  model: "text-embedding-004"
});
安装依赖:
npm i @langchain/google-vertexai
添加环境变量:
GOOGLE_APPLICATION_CREDENTIALS=credentials.json
实例化模型:
import { VertexAIEmbeddings } from "@langchain/google-vertexai";

const embeddings = new VertexAIEmbeddings({
  model: "gemini-embedding-001"
});
安装依赖:
npm i @langchain/mistralai
添加环境变量:
MISTRAL_API_KEY=your-api-key
实例化模型:
import { MistralAIEmbeddings } from "@langchain/mistralai";

const embeddings = new MistralAIEmbeddings({
  model: "mistral-embed"
});
安装依赖:
npm i @langchain/cohere
添加环境变量:
COHERE_API_KEY=your-api-key
实例化模型:
import { CohereEmbeddings } from "@langchain/cohere";

const embeddings = new CohereEmbeddings({
  model: "embed-english-v3.0"
});
安装依赖:
npm i @langchain/ollama
实例化模型:
import { OllamaEmbeddings } from "@langchain/ollama";

const embeddings = new OllamaEmbeddings({
  model: "llama2",
  baseUrl: "http://localhost:11434", // Default value
});

缓存

嵌入可以存储或临时缓存,以避免重复计算。 缓存嵌入可以使用 CacheBackedEmbeddings 来实现。这个包装器将嵌入存储在键值存储中,其中文本会被哈希处理,并且哈希值被用作缓存中的键。 初始化一个 CacheBackedEmbeddings 的主要支持方式是 fromBytesStore。它接受以下参数:
  • underlyingEmbeddings: 用于嵌入的嵌入器。
  • documentEmbeddingStore: 任何用于缓存文档嵌入的 BaseStore
  • options.namespace: (可选,默认为 "")用于文档缓存的命名空间。有助于避免冲突(例如,设置为嵌入模型名称)。
import { CacheBackedEmbeddings } from "@langchain/classic/embeddings/cache_backed";
import { InMemoryStore } from "@langchain/core/stores";

const underlyingEmbeddings = new OpenAIEmbeddings();

const inMemoryStore = new InMemoryStore();

const cacheBackedEmbeddings = CacheBackedEmbeddings.fromBytesStore(
  underlyingEmbeddings,
  inMemoryStore,
  {
    namespace: underlyingEmbeddings.model,
  }
);

// Example: caching a query embedding
const tic = Date.now();
const queryEmbedding = cacheBackedEmbeddings.embedQuery("Hello, world!");
console.log(`First call took: ${Date.now() - tic}ms`);

// Example: caching a document embedding
const tic = Date.now();
const documentEmbedding = cacheBackedEmbeddings.embedDocuments(["Hello, world!"]);
console.log(`Cached creation time: ${Date.now() - tic}ms`);
在生产环境中,通常会使用更健壮的持久化存储,例如数据库或云存储。请参阅 存储集成 了解可用选项。

所有集成

Alibaba Tongyi

Azure OpenAI

Baidu Qianfan

Amazon Bedrock

ByteDance Doubao

Cloudflare Workers AI

Cohere

DeepInfra

Fireworks

Google Generative AI

Google Vertex AI

Gradient AI

HuggingFace Inference

IBM watsonx.ai

Jina

Llama CPP

Minimax

MistralAI

Mixedbread AI

Nomic

Ollama

OpenAI

Pinecone

Prem AI

Tencent Hunyuan

TensorFlow

TogetherAI

HuggingFace Transformers

Voyage AI

ZhipuAI


以编程方式连接这些文档 到 Claude、VSCode 等更多工具,通过 MCP 获取实时答案。