Skip to main content

Documentation Index

Fetch the complete documentation index at: https://langchain-zh.cn/llms.txt

Use this file to discover all available pages before exploring further.

本文将帮助您开始使用 LangChain 接入 AzureOpenAI 嵌入模型。有关 AzureOpenAIEmbeddings 功能与配置选项的详细文档,请参阅 API 参考

概述

集成详情

设置

要访问 AzureOpenAI 嵌入模型,您需要创建 Azure 账户、获取 API 密钥,并安装 langchain-openai 集成包。

凭据

您需要部署一个 Azure OpenAI 实例。您可以按照此指南在 Azure 门户中进行部署。 实例运行后,请确保您拥有实例名称和密钥。您可以在 Azure 门户中实例的“密钥和终结点”部分找到密钥。
AZURE_OPENAI_ENDPOINT=<您的 API 终结>
AZURE_OPENAI_API_KEY=<您的密钥>
AZURE_OPENAI_API_VERSION="2024-02-01"
import getpass
import os

if not os.getenv("AZURE_OPENAI_API_KEY"):
    os.environ["AZURE_OPENAI_API_KEY"] = getpass.getpass(
        "输入您的 AzureOpenAI API 密钥:"
    )
要启用模型调用的自动追踪,请设置您的 LangSmith API 密钥:
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("输入您的 LangSmith API 密钥:")

安装

LangChain 的 AzureOpenAI 集成位于 langchain-openai 包中:
pip install -qU langchain-openai

实例化

现在我们可以实例化模型对象并生成嵌入向量:
from langchain_openai import AzureOpenAIEmbeddings

embeddings = AzureOpenAIEmbeddings(
    model="text-embedding-3-large",
    # dimensions: Optional[int] = None, # 对于新的 text-embedding-3 模型,可指定维度
    # azure_endpoint="https://<your-endpoint>.openai.azure.com/", 如未提供,将读取环境变量 AZURE_OPENAI_ENDPOINT
    # api_key=... # 可直接提供 API 密钥。如缺失,将读取环境变量 AZURE_OPENAI_API_KEY
    # openai_api_version=..., # 如未提供,将读取环境变量 AZURE_OPENAI_API_VERSION
)

索引与检索

嵌入模型常用于检索增强生成(RAG)流程中,既用于数据索引,也用于后续检索。更详细的说明请参阅我们的 RAG 教程 下面展示如何使用上面初始化的 embeddings 对象进行数据索引和检索。本例中,我们将在 InMemoryVectorStore 中索引并检索一个示例文档。
# 使用示例文本创建向量存储
from langchain_core.vectorstores import InMemoryVectorStore

text = "LangChain 是用于构建上下文感知推理应用程序的框架"

vectorstore = InMemoryVectorStore.from_texts(
    [text],
    embedding=embeddings,
)

# 将向量存储用作检索器
retriever = vectorstore.as_retriever()

# 检索最相似的文本
retrieved_documents = retriever.invoke("什么是 LangChain?")

# 显示检索到的文档内容
retrieved_documents[0].page_content
'LangChain 是用于构建上下文感知推理应用程序的框架'

直接使用

在底层,向量存储和检索器的实现会调用 embeddings.embed_documents(...)embeddings.embed_query(...),分别为 from_texts 中使用的文本和检索 invoke 操作创建嵌入向量。 您可以直接调用这些方法来获取嵌入向量,以满足自己的使用场景。

嵌入单个文本

您可以使用 embed_query 嵌入单个文本或文档:
single_vector = embeddings.embed_query(text)
print(str(single_vector)[:100])  # 显示向量的前 100 个字符
[-0.0011676070280373096, 0.007125577889382839, -0.014674457721412182, -0.034061674028635025, 0.01128

嵌入多个文本

您可以使用 embed_documents 嵌入多个文本:
text2 = (
    "LangGraph 是一个用于构建具有 LLM 的有状态、多参与者应用程序的库"
)
two_vectors = embeddings.embed_documents([text, text2])
for vector in two_vectors:
    print(str(vector)[:100])  # 显示向量的前 100 个字符
[-0.0011966148158535361, 0.007160289213061333, -0.014659193344414234, -0.03403077274560928, 0.011280
[-0.005595256108790636, 0.016757294535636902, -0.011055258102715015, -0.031094247475266457, -0.00363

API 参考

有关 AzureOpenAIEmbeddings 功能与配置选项的详细文档,请参阅 API 参考