Markdown là một ngôn ngữ đánh dấu nhẹ cho phép bạn định dạng văn bản bằng cách sử dụng một trình soạn thảo văn bản thuần.
Bài viết này giới thiệu cách LangChain tải tài liệu Markdown vào các định dạng tài liệu mà chúng ta có thể sử dụng ở bước tiếp theo.
from langchain_community.document_loaders import UnstructuredMarkdownLoader
markdown_path = "../../../../../README.md"
loader = UnstructuredMarkdownLoader(markdown_path)
data = loader.load()
data
[Document(page_content="🦜🔗 LangChain\n\n⚡ Xây dựng ứng dụng với LLM thông qua tính kết hợp ⚡\n\nBạn đang tìm phiên bản JS/TS? Kiểm tra LangChain.js.\n\nHỗ trợ sản xuất: Khi bạn đưa LangChains của mình vào sản xuất, chúng tôi rất mong muốn cung cấp hỗ trợ toàn diện hơn.\nVui lòng điền vào biểu mẫu này và chúng tôi sẽ thiết lập một kênh hỗ trợ Slack riêng.\n\nCài đặt nhanh\n\npip install langchain\nhoặc\nconda install langchain -c conda-forge\n\n🤔 Đây là cái gì?\n\nCác mô hình ngôn ngữ lớn (LLMs) đang trỗi phát như một công nghệ đổi mới, cho phép các nhà phát triển xây dựng các ứng dụng mà trước đây họ không thể. Tuy nhiên, việc sử dụng những LLM này đơn lẻ thường không đủ để tạo ra một ứng dụng thực sự mạnh mẽ - sức mạnh thực sự đến khi bạn có thể kết hợp chúng với các nguồn tính toán hoặc kiến thức khác.\n\nThư viện này nhằm hỗ trợ trong việc phát triển những loại ứng dụng đó. Các ví dụ phổ biến của các ứng dụng này bao gồm:\n\n📚 Trả lời câu hỏi trên tài liệu cụ thể\n\nTài liệu\n\nVí dụ từ đầu đến cuối: Trả lời câu hỏi trên cơ sở dữ liệu Notion\n\n📬 Chatbot\n\nTài liệu\n\nVí dụ từ đầu đến cuối: Chat-LangChain\n\n🤖 Đặc vụ\n\nTài liệu\n\nVí dụ từ đầu đến cuối: GPT+WolframAlpha\n\n📝 Tài liệu\n\nVui lòng xem tại đây để có tài liệu đầy đủ về:\n\nBắt đầu (cài đặt, thiết lập môi trường, ví dụ đơn giản)\n\nCác ví dụ "Làm thế nào" (demos, tích hợp, các hàm trợ giúp)\n\nTài liệu tham chiếu (tài liệu API đầy đủ)\n\nTài nguyên (giải thích cao cấp về các khái niệm cốt lõi)\n\n🚀 Nguyên liệu này có thể hỗ trợ gì?\n\nCó sáu lĩnh vực chính mà LangChain được thiết kế để hỗ trợ.\nChúng bao gồm, theo thứ tự gia tăng về độ phức tạp:\n\n📃 LLMs và Gợi ý:\n\nĐiều này bao gồm quản lý gợi ý, tối ưu hóa gợi ý, một giao diện chung cho tất cả LLMs, và các tiện ích thông thường để làm việc với LLMs.\n\n🔗 Chuỗi:\n\nChuỗi vượt xa một cuộc gọi LLM đơn lẻ và bao gồm các chuỗi cuộc gọi (có thể là đến LLM hoặc một tiện ích khác). LangChain cung cấp một giao diện tiêu chuẩn cho chuỗi, nhiều tích hợp với các công cụ khác, và chuỗi từ đầu đến cuối cho các ứng dụng thông thường.\n\n🚚 Tạo ra Dữ liệu Bổ sung:\n\nTạo ra Dữ liệu Bổ sung bao gồm các loại chuỗi cụ thể trước tiên tương tác với một nguồn dữ liệu bên ngoài để lấy dữ liệu sử dụng trong bước tạo ra. Các ví dụ bao gồm tóm tắt các đoạn văn dài và trả lời câu hỏi trên các nguồn dữ liệu cụ thể.\n\n🤖 Đặc vụ:\n\nĐặc vụ liên quan đến việc LLM ra quyết định về việc lựa chọn Hành động, thực hiện Hành động đó, xem Observation, và lặp lại quá trình đó cho đến khi hoàn thành. LangChain cung cấp một giao diện tiêu chuẩn cho đặc vụ, một số đặc vụ để lựa chọn, và ví dụ về đặc vụ từ đầu đến cuối.\n\n🧠 Bộ nhớ:\n\nBộ nhớ liên quan đến việc duy trì trạng thái giữa các cuộc gọi của một chuỗi/đặc vụ. LangChain cung cấp một giao diện tiêu chuẩn cho bộ nhớ, một bộ sưu tập các triển khai bộ nhớ, và ví dụ của chuỗi/đặc vụ sử dụng bộ nhớ.\n\n📐 Đánh giá:\n\n[BETA] Mô hình sinh ra thường khó đánh giá với các chỉ số truyền thống. Một cách mới để đánh giá chúng là sử dụng chính các mô hình ngôn ngữ để thực hiện việc đánh giá. LangChain cung cấp một số gợi ý/chuỗi để hỗ trợ trong việc đánh giá này.\n\nĐể biết thêm thông tin về những khái niệm này, vui lòng xem tài liệu đầy đủ của chúng tôi.\n\n📁 Đóng góp\n\nLà một dự án mã nguồn mở trong một lĩnh vực phát triển nhanh chóng, chúng tôi rất mở lòng với các đóng góp, cho dù đó là ở dạng một tính năng mới, cải thiện cơ sở hạ tầng, hoặc tài liệu tốt hơn.\n\nĐể biết thông tin chi tiết về cách đóng góp, xem tại đây.", metadata={'source': '../../../../../README.md'})]
Bảo tồn các Phần tử
Ở phía sau, Unstructured tạo ra các "phần tử" khác nhau cho các khối văn bản khác nhau. Theo mặc định, chúng tôi kết hợp chúng lại với nhau, nhưng bạn có thể dễ dàng bảo tồn sự tách rời này bằng cách chỉ định mode="elements"
.
loader = UnstructuredMarkdownLoader(markdown_path, mode="elements")
data = loader.load()
data[0]
Document(page_content='ð\x9f¦\x9cï¸\x8fð\x9f”\x97 LangChain', metadata={'source': '../../../../../README.md', 'page_number': 1, 'category': 'Title'})