AzureOpenAIEmbeddings#

class langchain_openai.embeddings.azure.AzureOpenAIEmbeddings[source]#

基础类:OpenAIEmbeddings

AzureOpenAI 嵌入模型集成。

Setup:

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

您需要部署一个Azure OpenAI实例。 您可以按照这个[指南](https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/create-resource?pivots=web-portal)在Azure门户上部署一个版本。

一旦您的实例运行起来,请确保您有实例的名称和密钥。您可以在Azure门户中,在实例的“密钥和端点”部分找到密钥。

pip install -U langchain_openai

# Set up your environment variables (or pass them directly to the model)
export AZURE_OPENAI_API_KEY="your-api-key"
export AZURE_OPENAI_ENDPOINT="https://<your-endpoint>.openai.azure.com/"
export AZURE_OPENAI_API_VERSION="2024-02-01"
Key init args — completion params:
model: str

使用的AzureOpenAI模型名称。

dimensions: Optional[int]

嵌入的维度数。只有在底层模型支持的情况下才能指定。

Key init args — client params:

api_key: Optional[SecretStr]

请参阅参数部分中支持的初始化参数及其描述的完整列表。

Instantiate:
from langchain_openai import AzureOpenAIEmbeddings

embeddings = AzureOpenAIEmbeddings(
    model="text-embedding-3-large"
    # dimensions: Optional[int] = None, # Can specify dimensions with new text-embedding-3 models
    # azure_endpoint="https://<your-endpoint>.openai.azure.com/", If not provided, will read env variable AZURE_OPENAI_ENDPOINT
    # api_key=... # Can provide an API key directly. If missing read env variable AZURE_OPENAI_API_KEY
    # openai_api_version=..., # If not provided, will read env variable AZURE_OPENAI_API_VERSION
)
Embed single text:
input_text = "The meaning of life is 42"
vector = embed.embed_query(input_text)
print(vector[:3])
[-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
Embed multiple texts:
 input_texts = ["Document 1...", "Document 2..."]
vectors = embed.embed_documents(input_texts)
print(len(vectors))
# The first 3 coordinates for the first vector
print(vectors[0][:3])
2
[-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
Async:
 vector = await embed.aembed_query(input_text)
print(vector[:3])

 # multiple:
 # await embed.aembed_documents(input_texts)
[-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188]

通过解析和验证来自关键字参数的输入数据来创建一个新模型。

如果输入数据无法验证以形成有效模型,则引发 [ValidationError][pydantic_core.ValidationError]。

self 被显式地设为仅位置参数,以允许 self 作为字段名称。

param allowed_special: Literal['all'] | Set[str] | None = None#
param azure_ad_async_token_provider: Callable[[], Awaitable[str]] | None = None#

返回Azure Active Directory令牌的函数。

将在每个异步请求上调用。

param azure_ad_token: SecretStr | None [Optional]#

您的 Azure Active Directory 令牌。

如果未提供,则自动从环境变量 AZURE_OPENAI_AD_TOKEN 推断。

更多信息: https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id.

param azure_ad_token_provider: Callable[[], str] | None = None#

返回Azure Active Directory令牌的函数。

将在每次同步请求时调用。对于异步请求,如果未提供azure_ad_async_token_provider,则将被调用。

param azure_endpoint: str | None [Optional]#

您的Azure端点,包括资源。

如果未提供,则自动从环境变量 AZURE_OPENAI_ENDPOINT 推断。

示例:https://example-resource.azure.openai.com/

param check_embedding_ctx_length: bool = True#

是否检查输入的令牌长度,并自动拆分超过embedding_ctx_length的输入。

param chunk_size: int = 2048#

每批嵌入的最大文本数量

param default_headers: Mapping[str, str] | None = None#
param default_query: Mapping[str, object] | None = None#
param deployment: str | None = None (alias 'azure_deployment')#

模型部署。

如果给定,将基础客户端URL设置为包含/deployments/{azure_deployment}。 注意:这意味着您将无法使用非部署端点。

param dimensions: int | None = None#

生成的输出嵌入应具有的维度数。

仅在text-embedding-3及以后的模型中支持。

param disallowed_special: Literal['all'] | Set[str] | Sequence[str] | None = None#
param embedding_ctx_length: int = 8191#

一次嵌入的最大令牌数。

param headers: Any = None#
param http_async_client: Any | None = None#

可选的httpx.AsyncClient。仅用于异步调用。如果您希望为同步调用使用自定义客户端,则还必须指定http_client。

param http_client: Any | None = None#

可选的httpx.Client。仅用于同步调用。如果您希望为异步调用使用自定义客户端,则还必须指定http_async_client。

param max_retries: int = 2#

生成时的最大重试次数。

param model: str = 'text-embedding-ada-002'#
param model_kwargs: Dict[str, Any] [Optional]#

保存任何适用于create调用但未明确指定的模型参数。

param openai_api_base: str | None [Optional] (alias 'base_url')#

API请求的基本URL路径,如果不使用代理或服务模拟器,请留空。

param openai_api_key: SecretStr | None [Optional] (alias 'api_key')#

如果未提供,则自动从环境变量 AZURE_OPENAI_API_KEY 推断。

param openai_api_type: str | None [Optional]#
param openai_api_version: str | None [Optional] (alias 'api_version')#

如果未提供,则自动从环境变量 OPENAI_API_VERSION 推断。

如果未设置环境变量OPENAI_API_VERSION,则默认设置为“2023-05-15”。

param openai_organization: str | None [Optional] (alias 'organization')#

如果未提供,则自动从环境变量 OPENAI_ORG_ID 推断。

param openai_proxy: str | None [Optional]#
param request_timeout: float | Tuple[float, float] | Any | None = None (alias 'timeout')#

请求OpenAI完成API的超时时间。可以是浮点数、httpx.Timeout或None。

param retry_max_seconds: int = 20#

重试之间等待的最大秒数

param retry_min_seconds: int = 4#

重试之间等待的最小秒数

param show_progress_bar: bool = False#

是否在嵌入时显示进度条。

param skip_empty: bool = False#

在嵌入时是否跳过空字符串或引发错误。默认情况下不跳过。

param tiktoken_enabled: bool = True#

对于非OpenAI实现的embeddings API,请将此设置为False,例如 –extensions openai 扩展用于 text-generation-webui

param tiktoken_model_name: str | None = None#

在使用此类时传递给tiktoken的模型名称。 Tiktoken用于计算文档中的令牌数量,以限制它们不超过某个限制。默认情况下,当设置为None时,这将与嵌入模型名称相同。然而,在某些情况下,您可能希望将此嵌入类与tiktoken不支持的模型名称一起使用。这可能包括在使用Azure嵌入或使用许多模型提供商之一时,这些提供商暴露了一个类似OpenAI的API,但使用不同的模型。在这些情况下,为了避免在调用tiktoken时出错,您可以在此处指定要使用的模型名称。

param validate_base_url: bool = True#
async aembed_documents(texts: List[str], chunk_size: int | None = None) List[List[float]]#

异步调用OpenAI的嵌入端点以进行嵌入搜索文档。

Parameters:
  • texts (List[str]) – 要嵌入的文本列表。

  • chunk_size (int | None) – 嵌入的块大小。如果为None,将使用类指定的块大小。

Returns:

嵌入列表,每个文本对应一个。

Return type:

列表[列表[float]]

async aembed_query(text: str) List[float]#

异步调用OpenAI的嵌入端点以嵌入查询文本。

Parameters:

文本 (str) – 要嵌入的文本。

Returns:

文本的嵌入。

Return type:

列表[float]

embed_documents(texts: List[str], chunk_size: int | None = None) List[List[float]]#

调用OpenAI的嵌入端点以嵌入搜索文档。

Parameters:
  • texts (List[str]) – 要嵌入的文本列表。

  • chunk_size (int | None) – 嵌入的块大小。如果为None,将使用类指定的块大小。

Returns:

嵌入列表,每个文本对应一个。

Return type:

列表[列表[float]]

embed_query(text: str) List[float]#

调用OpenAI的嵌入端点以嵌入查询文本。

Parameters:

文本 (str) – 要嵌入的文本。

Returns:

文本的嵌入。

Return type:

列表[float]

使用 AzureOpenAIEmbeddings 的示例