非结构化 Markdown 加载器
此笔记本提供有关如何使用 UnstructuredMarkdown 文档加载器 入门的快速概述。有关所有 ModuleNameLoader 功能和配置的详细文档,请前往 API 参考。
概述
集成细节
类 | 包 | 本地 | 可序列化 | JS 支持 |
---|---|---|---|---|
非结构化 Markdown 加载器 | langchain_community | ❌ | ❌ | ✅ |
加载器功能
来源 | 文档延迟加载 | 原生异步支持 |
---|---|---|
非结构化 Markdown 加载器 | ✅ | ❌ |
设置
要访问 UnstructuredMarkdownLoader 文档加载器,您需要安装 langchain-community
集成包和 unstructured
Python 包。
凭据
使用此加载器不需要任何凭据。
如果您希望获得对模型调用进行自动化最佳类跟踪,也可以通过取消以下注释来设置您的 LangSmith API 密钥
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
安装
安装 langchain_community 和 unstructured
%pip install -qU langchain_community unstructured
初始化
现在我们可以实例化我们的模型对象并加载文档。
您可以以两种模式之一运行加载器:“single” 和 “elements”。如果您使用 “single” 模式,则文档将作为单个 Document
对象返回。如果您使用 “elements” 模式,则 unstructured 库将把文档拆分为元素,例如 Title
和 NarrativeText
。您可以在模式之后传入其他 unstructured
关键字参数以应用不同的 unstructured
设置。
from langchain_community.document_loaders import UnstructuredMarkdownLoader
loader = UnstructuredMarkdownLoader(
"./example_data/example.md",
mode="single",
strategy="fast",
)
加载
docs = loader.load()
docs[0]
Document(metadata={'source': './example_data/example.md'}, page_content='Sample Markdown Document\n\nIntroduction\n\nWelcome to this sample Markdown document. Markdown is a lightweight markup language used for formatting text. It\'s widely used for documentation, readme files, and more.\n\nFeatures\n\nHeaders\n\nMarkdown supports multiple levels of headers:\n\nHeader 1: # Header 1\n\nHeader 2: ## Header 2\n\nHeader 3: ### Header 3\n\nLists\n\nUnordered List\n\nItem 1\n\nItem 2\n\nSubitem 2.1\n\nSubitem 2.2\n\nOrdered List\n\nFirst item\n\nSecond item\n\nThird item\n\nLinks\n\nOpenAI is an AI research organization.\n\nImages\n\nHere\'s an example image:\n\nCode\n\nInline Code\n\nUse code for inline code snippets.\n\nCode Block\n\n```python def greet(name): return f"Hello, {name}!"\n\nprint(greet("World")) ```')
print(docs[0].metadata)
{'source': './example_data/example.md'}
延迟加载
page = []
for doc in loader.lazy_load():
page.append(doc)
if len(page) >= 10:
# do some paged operation, e.g.
# index.upsert(page)
page = []
page[0]
Document(metadata={'source': './example_data/example.md', 'link_texts': ['OpenAI'], 'link_urls': ['https://www.openai.com'], 'last_modified': '2024-08-14T15:04:18', 'languages': ['eng'], 'parent_id': 'de1f74bf226224377ab4d8b54f215bb9', 'filetype': 'text/markdown', 'file_directory': './example_data', 'filename': 'example.md', 'category': 'NarrativeText', 'element_id': '898a542a261f7dc65e0072d1e847d535'}, page_content='OpenAI is an AI research organization.')
加载元素
在此示例中,我们将以 elements
模式加载,这将返回 markdown 文档中不同元素的列表
from langchain_community.document_loaders import UnstructuredMarkdownLoader
loader = UnstructuredMarkdownLoader(
"./example_data/example.md",
mode="elements",
strategy="fast",
)
docs = loader.load()
len(docs)
29
如您所见,从 example.md
文件中提取了 29 个元素。第一个元素是文档的标题,正如预期的那样
docs[0].page_content
'Sample Markdown Document'
API 参考
有关所有 UnstructuredMarkdownLoader 功能和配置的详细文档,请前往 API 参考:https://python.langchain.ac.cn/v0.2/api_reference/community/document_loaders/langchain_community.document_loaders.markdown.UnstructuredMarkdownLoader.html