文本嵌入模型
信息
前往 集成 了解与文本嵌入模型提供商的内置集成文档。
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]