การจัดการไฟล์

นอกจากข้อมูลข้อความที่มีลักษณะข้อมูลที่ไม่ได้ประมวลผล คุณอาจต้องการดึงข้อมูลจากไฟล์ประเภทอื่น เช่นงานนำเสนอ PowerPoint หรือ PDF

คุณสามารถใช้ตัวโหลดเอกสาร LangChain เพื่อแยกไฟล์เป็นรูปแบบข้อความที่สามารถนำมาใช้กับ LLMs

การแยกตามประเภท MIME

ที่นี่ เราจะมองการแยกตามประเภท MIME ซึ่งมักจะมีประโยชน์สำหรับแอปพลิเคชันที่ใช้สำหรับการแยกรหัสลักษณะมีจุดประสงค์ในกรณีที่คุณเขียนโค้ดเซิร์ฟเวอร์ที่ยอมรับไฟล์ที่อัปโหลดจากผู้ใช้

ในกรณีนี้ ดีที่สุดคือ ที่จะถือว่านามสกุลของไฟล์ที่ผู้ใช้ให้มาไม่ถูกต้องและกลับทราบประเภท MIME จากเนื้อหาไบนารีของไฟล์แทน

ขอดาวน์โหลดเนื้อหาบางส่วน ของงานผลิตหมวดหมู่ต่าง ๆ ยังคงเป็นไฟล์ 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