Skip to main content
Open on GitHub

文本嵌入模型

info

前往 Integrations 查看关于内置文本嵌入模型提供商集成的文档。

Embeddings 类是用于与文本嵌入模型交互的类。存在许多嵌入模型提供商(如 OpenAI、Cohere、Hugging Face 等),此类旨在为所有提供商提供标准接口。

Embeddings 会为一段文本创建一个向量表示。这很有用,因为它意味着我们可以在向量空间中思考文本,并执行诸如语义搜索之类的操作,在向量空间中查找最相似的文本片段。

LangChain 中的基类 Embeddings 提供了两个方法:一个用于嵌入文档,一个用于嵌入查询。前者 .embed_documents 的输入是多个文本,后者 .embed_query 的输入是单个文本。之所以将它们设为两个独立的方法,是因为某些嵌入提供商对文档(用于搜索)和查询(搜索查询本身)有不同的嵌入方法。 .embed_query 将返回一个浮点数列表,而 .embed_documents 返回一个浮点数列表的列表。

入门

设置

pip install -qU langchain-openai
import getpass
import os

if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter API key for OpenAI: ")

from langchain_openai import OpenAIEmbeddings

embeddings_model = OpenAIEmbeddings(model="text-embedding-3-large")

embed_documents

嵌入文本列表

使用 .embed_documents 来嵌入字符串列表,恢复嵌入列表:

embeddings = embeddings_model.embed_documents(
[
"Hi there!",
"Oh, hello!",
"What's your name?",
"My friends call me World",
"Hello World!"
]
)
len(embeddings), len(embeddings[0])
(5, 1536)

embed_query

嵌入单个查询

使用 .embed_query 来嵌入单个文本片段(例如,用于与其他嵌入文本片段进行比较)。

embedded_query = embeddings_model.embed_query("What was the name mentioned in the conversation?")
embedded_query[:5]
[0.0053587136790156364,
-0.0004999046213924885,
0.038883671164512634,
-0.003001077566295862,
-0.00900818221271038]