파일 다루기

원시 텍스트 데이터 외에도 PowerPoint 프레젠테이션 또는 PDF와 같은 다른 파일 유형에서 정보를 추출할 수 있습니다.

LangChain 문서 로더를 사용하여 파일을 텍스트 형식으로 파싱하여 LLMs에 공급할 수 있습니다.

MIME 유형 기반 파싱

여기서 MIME 유형 기반 파싱을 살펴보겠습니다. 이는 종종 사용자 업로드 파일을 허용하는 서버 코드를 작성하는 경우 추출 기반 애플리케이션에 유용합니다.

이 경우 사용자가 제공한 파일의 확장자가 잘못되었다고 가정하고 대신 파일의 바이너리 내용에서 mimetype을 추론하는 것이 가장 좋습니다.

이제 일부 콘텐츠를 다운로드합니다. 이것은 HTML 파일일 것입니다. 그러나 아래 코드는 다른 파일 유형과 함께 작동할 것입니다.

import requests

response = requests.get("https://en.wikipedia.org/wiki/Car")
data = response.content
data[:20]
b'<!DOCTYPE html>\n<htm'

파서 구성

import magic
from langchain.document_loaders.parsers import BS4HTMLParser, PDFMinerParser
from langchain.document_loaders.parsers.generic import MimeTypeBasedParser
from langchain.document_loaders.parsers.txt import TextParser
from langchain_community.document_loaders import Blob

HANDLERS = {
    "application/pdf": PDFMinerParser(),
    "text/plain": TextParser(),
    "text/html": BS4HTMLParser(),
}

MIMETYPE_BASED_PARSER = MimeTypeBasedParser(
    handlers=HANDLERS,
    fallback_parser=None,
)

mime = magic.Magic(mime=True)
mime_type = mime.from_buffer(data)

blob = Blob.from_data(
    data=data,
    mime_type=mime_type,
)

parser = HANDLERS[mime_type]
documents = parser.parse(blob=blob)
print(documents[0].page_content[:30].strip())
Car - Wikipedia