跳到主要内容
Azure Blob 存储是微软为云提供的对象存储解决方案。Blob 存储经过优化,用于存储海量的非结构化数据。非结构化数据是指不遵循特定数据模型或定义的数据,例如文本或二进制数据。
Azure Blob 存储旨在用于
  • 直接向浏览器提供图像或文档。
  • 存储文件以进行分布式访问。
  • 流式传输视频和音频。
  • 写入日志文件。
  • 存储数据以进行备份和恢复、灾难恢复和存档。
  • 存储数据以供本地或 Azure 托管服务进行分析。
本笔记本介绍了如何从Azure Blob 存储上的容器加载文档对象。有关文档加载器的更详细文档,请参阅Azure Blob 存储加载器 API 参考
建议使用此新加载器而非langchain_community中以前的AzureBlobStorageFileLoaderAzureBlobStorageContainerLoader。有关迁移到新加载器的详细说明,请参阅迁移指南

设置

pip install -qU langchain-azure-storage
from langchain_azure_storage.document_loaders import AzureBlobStorageLoader

从容器加载

AzureBlobStorageLoader从 Azure Blob 存储中给定容器加载所有 Blob,并需要帐户 URL 和容器名称。加载器返回Document对象,其中包含 Blob 内容(默认为 UTF-8 编码)和元数据,包括 Blob URL,如下例所示。 无需明确的凭据配置,因为它使用DefaultAzureCredential,该凭据根据您当前的环境自动检索Microsoft Entra ID 令牌
loader = AzureBlobStorageLoader(
    "https://<storage-account-name>.blob.core.windows.net",
    "<container-name>",
)

for doc in loader.load():
    print(doc)
page_content='Lorem ipsum dolor sit amet.' metadata={'source': 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'}
您还可以指定前缀,以仅返回以该前缀开头的 Blob。
loader = AzureBlobStorageLoader(
    "https://<storage-account-name>.blob.core.windows.net",
    "<container-name>",
    prefix="<prefix>",
)

按 Blob 名称从容器加载

您可以从 Blob 名称列表加载文档,这仅使用提供的 Blob,而不是调用 API 列出 Blob。
loader = AzureBlobStorageLoader(
    "https://<storage-account-name>.blob.core.windows.net",
    "<container-name>",
    blob_names=["blob-1", "blob-2", "blob-3"],
)

覆盖默认凭据

默认情况下,文档加载器使用DefaultAzureCredential。以下示例展示了如何覆盖此设置
from azure.core.credentials import AzureSasCredential
from azure.identity import ManagedIdentityCredential
from langchain_azure_storage.document_loaders import AzureBlobStorageLoader

# Override with SAS token
loader = AzureBlobStorageLoader(
    "https://<storage-account-name>.blob.core.windows.net",
    "<container-name>",
    credential=AzureSasCredential("<sas-token>")
)

# Override with more specific token credential than the entire
# default credential chain (e.g., system-assigned managed identity)
loader = AzureBlobStorageLoader(
    "https://<storage-account-name>.blob.core.windows.net",
    "<container-name>",
    credential=ManagedIdentityCredential()
)

自定义 Blob 内容解析

目前,解析每个 Blob 时的默认设置是将内容作为单个Document对象返回,并使用 UTF-8 编码,无论文件类型如何。对于需要特定解析(例如 PDF、CSV 等)的文件类型,或者当您想要控制文档内容格式时,您可以提供loader_factory参数,该参数接受现有的文档加载器(例如 PyPDFLoader、CSVLoader 等)或自定义加载器。 这通过将 Blob 内容下载到临时文件来工作。然后,调用loader_factory并提供文件路径,以使用指定的文档加载器加载/解析文件并返回Document对象。 下面展示了如何使用PyPDFLoader将用于解析 Blob 的默认加载器覆盖为 PDF 加载器:
from langchain_azure_storage.document_loaders import AzureBlobStorageLoader
from langchain_community.document_loaders import PyPDFLoader  # This example requires installing `langchain-community` and `pypdf`

loader = AzureBlobStorageLoader(
    "https://<storage-account-name>.blob.core.windows.net",
    "<container-name>",
    blob_names="<pdf-file.pdf>",
    loader_factory=PyPDFLoader,
)

for doc in loader.lazy_load():
    print(doc.page_content)  # Prints content of each page as a separate document
要提供额外的配置,您可以定义一个可调用对象,该对象返回一个已实例化的文档加载器,如下所示
from langchain_azure_storage.document_loaders import AzureBlobStorageLoader
from langchain_community.document_loaders import PyPDFLoader  # This example requires installing `langchain-community` and `pypdf`

def loader_factory(file_path: str) -> PyPDFLoader:
    return PyPDFLoader(
        file_path,
        mode="single",  # To return the PDF as a single document instead of extracting documents by page
    )

loader = AzureBlobStorageLoader(
    "https://<storage-account-name>.blob.core.windows.net",
    "<container-name>",
    blob_names="<pdf-file.pdf>",
    loader_factory=loader_factory,
)

for doc in loader.lazy_load():
    print(doc.page_content)

以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.