マークダウン

マークダウンは、プレーンテキストエディタを使用してテキストを書式設定できる軽量なマークアップ言語です。

この記事では、LangChainがマークダウンドキュメントを下流で使用できるドキュメント形式にどのように読み込むかについて紹介します。

from langchain_community.document_loaders import UnstructuredMarkdownLoader

markdown_path = "../../../../../README.md"
loader = UnstructuredMarkdownLoader(markdown_path)

data = loader.load()

data
[ドキュメント(page_content="🦜🔗 LangChain\n\n⚡ LLMを通じたコンポーザビリティを活用したアプリケーションの構築 ⚡\n\nJS/TSバージョンをお探しですか?LangChain.jsをチェックしてください。\n\n本番サポート:LangChainsを本番環境に展開する際には、より包括的なサポートを提供いたします。\n詳細はこちらのフォームからお知らせください。専用のサポートSlackチャンネルを設定いたします。\n\nクイックインストール\n\npip install langchain\nまたは\nconda install langchain -c conda-forge\n\n🤔 これは何?\n\n大規模言語モデル(LLMs)は、開発者が以前にはできなかったアプリケーションを構築することを可能にする画期的な技術として台頭しています。ただし、これらのLLMsを単独で使用するだけでは本当に強力なアプリを作成するには不十分です。真の力を発揮するのは、他の計算や知識のソースと組み合わせることができるときです。\n\nこのライブラリは、そのような種類のアプリケーションの開発を支援することを目的としています。これらのアプリケーションの一般的な例には、次のものがあります:\n\n📚 特定のドキュメントでの質問回答\n\nドキュメント\n\nエンドツーエンドの例:Notionデータベースでの質問回答\n\n📬 チャットボット\n\nドキュメント\n\nエンドツーエンドの例:Chat-LangChain\n\n🤖 エージェント\n\nドキュメント\n\nエンドツーエンドの例:GPT+WolframAlpha\n\n📝 ドキュメント\n\n次の内容についての詳細なドキュメントはこちらをご覧ください:\n\nはじめに(インストール、環境の設定、シンプルな例)\n\nハウツー例(デモ、統合、ヘルパー関数)\n\nリファレンス(完全なAPIドキュメント)\n\nリソース(コアコンセプトの高レベルな説明)\n\n🚀 これは何に役立ちますか?\n\nLangChainが設計された主な6つの領域があります。\nこれらは、複雑性の増加順に次の通りです:\n\n📃 LLMsとプロンプト:\n\nこれにはプロンプトの管理、プロンプトの最適化、LLMsの汎用インターフェース、およびLLMsと共通のユーティリティの含まれます。\n\n🔗 チェーン\n\nチェーンは単一のLLM呼び出しを超えて、呼び出しのシーケンス(LLMまたは他のユーティリティへ)を含みます。LangChainはチェーンの標準的なインターフェース、他のツールとの統合、および一般的なアプリケーションのためのエンドツーエンドのチェーンを提供します。\n\n🚚 データ拡張生成\n\nデータ拡張生成には、まず外部データソースとやり取りして生成ステップで使用するデータを取得する特定のタイプのチェーンが含まれます。例には長いテキストの要約や特定のデータソースでの質問/回答があります。\n\n🤖 エージェント\n\nエージェントは、LLMが取るべきアクションについての意思決定、そのアクションを取る、観察する、そしてそれを完了するまでの繰り返しを含みます。LangChainはエージェントの標準的なインターフェース、選択可能なエージェントのコレクション、およびエンドツーエンドのエージェントの例を提供します。\n\n🧠 メモリ\n\nメモリとは、チェーン/エージェントの呼び出し間での状態の持続を指します。LangChainはメモリの標準的なインターフェース、メモリの実装のコレクション、およびメモリを使用するチェーン/エージェントの例を提供します。\n\n📐 評価\n\n[BETA] 生成モデルは伝統的な評価基準で評価するのが難しいです。それらを評価する1つの新しい方法は、言語モデル自体を使用して評価することです。LangChainはこの手法を支援するためのいくつかのプロンプト/チェーンを提供します。\n\nこれらの概念の詳細については、完全なドキュメントをご覧ください。\n\n📁 貢献\n\n急速に発展している分野のオープンソースプロジェクトとして、新機能、改善されたインフラストラクチャ、またはより良いドキュメントなど、いかなる形での貢献にも非常にオープンです。\n貢献方法の詳細については、こちらをご覧ください。", metadata={'source': '../../../../../README.md'})]

ドキュメントの読み込みに成功しました。

要素の保持

裏側では、Unstructured は異なるテキストブロック用に異なる "要素" を作成しています。デフォルトでは、それらを組み合わせていますが、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'})