MarkdownToDocument

MarkdownToDocument

Markdown 파일을 문서로 변환해주는 컴포넌트예요. 인덱싱 파이프라인 시작 부분이나 PreProcessor 앞에 두면 돼요.

출처: MarkdownToDocument

본문

개요

MarkdownToDocument 컴포넌트는 Markdown 파일을 문서로 변환해요. 인덱싱 파이프라인에서 Markdown 파일의 내용을 Document Store로 인덱싱하는 데 쓸 수 있어요. 파일 경로 목록이나 ByteStream 객체를 입력으로 받고, 변환 결과를 문서 목록으로 출력해요. 선택적으로 meta 입력 파라미터를 통해 문서에 메타데이터를 붙일 수 있어요.

컴포넌트를 초기화할 때 progress_bar를 False로 설정하면 진행 막대를 끌 수 있어요. 테이블 내용을 한 줄로 변환하고 싶다면 table_to_single_line 파라미터로 활성화할 수 있어요.

Markdown 파일이 YAML frontmatter로 시작한다면 extract_frontmatter=True로 설정해서 그 데이터를 Document.meta로 옮기고 변환된 문서 내용에서는 제거할 수 있어요. meta 입력으로 전달한 메타데이터가 frontmatter 키보다 우선해요.

사용법

MarkdownToDocument 컴포넌트를 쓰려면 markdown-it-py와 mdit_plain 패키지를 설치해야 해요.

pip install markdown-it-py mdit_plain

단독 사용:

from haystack.components.converters import MarkdownToDocument

converter = MarkdownToDocument()

docs = converter.run(sources=[Path("my_file.md")])

YAML frontmatter와 함께:

equity_note.md가 있다고 할게요.

---
ticker: AAPL
source: earnings_call
date: 2026-06-12
---

# Thesis
Revenue guidance improved.
from haystack.components.converters import MarkdownToDocument

converter = MarkdownToDocument(extract_frontmatter=True)

docs = converter.run(sources=["equity_note.md"])["documents"]
print(docs[0].meta["ticker"])
print(docs[0].content)

파이프라인 안에서:

from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.converters import MarkdownToDocument
from haystack.components.preprocessors import DocumentCleaner
from haystack.components.preprocessors import DocumentSplitter
from haystack.components.writers import DocumentWriter

document_store = InMemoryDocumentStore()

pipeline = Pipeline()
pipeline.add_component("converter", MarkdownToDocument())
pipeline.add_component("cleaner", DocumentCleaner())
pipeline.add_component(
    "splitter",
    DocumentSplitter(split_by="sentence", split_length=5),
)
pipeline.add_component("writer", DocumentWriter(document_store=document_store))
pipeline.connect("converter", "cleaner")
pipeline.connect("cleaner", "splitter")
pipeline.connect("splitter", "writer")

pipeline.run({"converter": {"sources": file_names}})

더 알아보기 (Learn more)