如何載入 Markdown
Markdown 是一種輕量級標記語言,用於使用純文本編輯器創建格式化文本。
在這裡,我們介紹如何將 Markdown
文件載入到 LangChain Document 物件中,以便我們可以在下游使用。
我們將涵蓋
- 基本用法;
- 將 Markdown 解析為元素,例如標題、列表項目和文本。
LangChain 實現了一個 UnstructuredMarkdownLoader 物件,它需要 Unstructured 套件。首先我們安裝它
%pip install "unstructured[md]" nltk
基本用法會將 Markdown 檔案攝取到單個文件中。在這裡,我們在 LangChain 的 readme 上演示
from langchain_community.document_loaders import UnstructuredMarkdownLoader
from langchain_core.documents import Document
markdown_path = "../../../README.md"
loader = UnstructuredMarkdownLoader(markdown_path)
data = loader.load()
assert len(data) == 1
assert isinstance(data[0], Document)
readme_content = data[0].page_content
print(readme_content[:250])
API 參考:UnstructuredMarkdownLoader | Document
🦜️🔗 LangChain
⚡ Build context-aware reasoning applications ⚡
Looking for the JS/TS library? Check out LangChain.js.
To help you ship LangChain apps to production faster, check out LangSmith.
LangSmith is a unified developer platform for building,
保留元素
在底層,Unstructured 為不同的文本塊創建不同的「元素」。預設情況下,我們將它們組合在一起,但您可以通過指定 mode="elements"
輕鬆保持這種分離。
loader = UnstructuredMarkdownLoader(markdown_path, mode="elements")
data = loader.load()
print(f"Number of documents: {len(data)}\n")
for document in data[:2]:
print(f"{document}\n")
Number of documents: 66
page_content='🦜️🔗 LangChain' metadata={'source': '../../../README.md', 'category_depth': 0, 'last_modified': '2024-06-28T15:20:01', 'languages': ['eng'], 'filetype': 'text/markdown', 'file_directory': '../../..', 'filename': 'README.md', 'category': 'Title'}
page_content='⚡ Build context-aware reasoning applications ⚡' metadata={'source': '../../../README.md', 'last_modified': '2024-06-28T15:20:01', 'languages': ['eng'], 'parent_id': '200b8a7d0dd03f66e4f13456566d2b3a', 'filetype': 'text/markdown', 'file_directory': '../../..', 'filename': 'README.md', 'category': 'NarrativeText'}
請注意,在這種情況下,我們恢復了三種不同的元素類型
print(set(document.metadata["category"] for document in data))
{'ListItem', 'NarrativeText', 'Title'}