Langchainテキストスプリッターを使用してデータを分割する7つの方法-AnalyticsVidhya
Langchainテキストスプリッター:効率と精度のためにLLM入力を最適化する
以前の記事では、Langchainのドキュメントローダーについて説明しました。ただし、LLMにはコンテキストウィンドウサイズの制限(トークンで測定)があります。この制限を超えると、データが切り捨てられ、精度が損なわれ、コストが増加します。解決策?関連データのみをLLMに送信し、データの分割が必要です。 Langchainのテキストスプリッターを入力します。
重要な概念:
- テキストスプリッターの重要な役割: LLMアプリケーションを最適化し、コンテキストのウィンドウサイズとコストのバランスをとるために、効率的なテキスト分割が不可欠である理由を理解します。
- 多様なテキスト分割技術:文字カウント、トークンカウント、再帰的分割、HTML、コード、JSON構造に合わせたテクニックなど、さまざまな方法を探索します。
- Langchain Text Splitterの実装:インストール、テキスト分割のコード例、多様なデータ形式の処理など、実用的なアプリケーションを学習します。
- 強化された関連性のためのセマンティック分割:文の埋め込みとコサインの類似性がどのように意味的にコヒーレントなチャンクを作成し、関連性を最大化するかを発見します。
目次:
- テキストスプリッターとは何ですか?
- データ分割方法
- 文字カウントベースの分割
- 再帰的分割
- トークンカウントベースの分割
- HTMLの処理
- コード固有の分割
- JSONデータ処理
- セマンティックチャンク
- よくある質問
テキストスプリッターとは何ですか?
テキストスプリッターは、LLMクエリの関連性を改善するために、大きなテキストをより小さく管理可能なチャンクに分割します。彼らは、生のテキストまたはLangchainドキュメントオブジェクトで直接動作します。複数のメソッドは、さまざまなコンテンツタイプとユースケースに対応します。
データ分割方法
Langchainテキストスプリッターは、効率的な大規模なドキュメント処理のために重要です。パフォーマンスを向上させ、コンテキストの理解を改善し、並列処理を可能にし、より良いデータ管理を促進します。いくつかの方法を調べてみましょう。
前提条件: pip install langchain_text_splitters
を使用してパッケージをインストールします
文字カウントベースの分割
この方法は、指定されたセパレーターを使用して、文字カウントに基づいてテキストを分割します。
from langchain_community.document_loaders unstructuredpdfloaderをインポートします langchain_text_splittersからImport charateTextSplitter #データを読み込みます(PDFパスに置き換えます) loader = unstructuredpdfloader( 'How-to-formulate-successful-business-strategy.pdf'、mode = 'single') data = roader.load() text_splitter = charateTextSplitter(separator = "\ n"、chunk_size = 500、chunk_overlap = 0、is_separator_regex = false) texts = text_splitter.split_documents(data) len(テキスト)#出力:チャンク数
この例では、テキストを500文字のチャンクに分割し、Newline Charactersをセパレータとして使用します。
再帰的分割
これは、チャンクがchunk_size
以下になるまで、複数のセパレータを順番に使用します。文レベルの分割に役立ちます。
langchain_text_splittersからrecursiveCharacterTextSplitterをインポートします recursive_splitter = recursiveCharacterTextSplitter(隔たり= ["\ n \ n"、 "\ n"、r "(?>> 293) #...(コードの残りの部分は同様のままです)
トークンカウントベースの分割
LLMSはトークンを使用します。トークンカウントによる分割はより正確です。この例では、 o200k_base
エンコーディングを使用します(モデル/エンコーディングマッピングのGitHubリンクを確認してください)。
langchain_text_splittersからtokentextsplitterをインポートします text_splitter = tokentextsplitter(encoding_name = 'o200k_base'、chunk_size = 50、chunk_overlap = 0) texts = text_splitter.split_documents(data) len(テキスト)#出力:チャンク数
再帰的な分割は、トークンカウントと組み合わせることもできます。
平易なテキストの場合、文字またはトークンカウントを使用した再帰的分割が一般的に推奨されます。
HTMLの処理
HTMLのような構造化されたデータの場合、分割は構造を尊重する必要があります。この例は、HTMLヘッダーに基づいて分割されます。
langchain_text_splittersからhtmlheadertextsplitterをインポートします headers_to_split_on = [( "h1"、 "header 1")、( "h2"、 "header 2")、( "h3"、 "header 3")]]] html_splitter = htmlheadertextsplitter(headers_to_split_on、return_each_element = true) html_header_splits = html_splitter.split_text_from_url( 'https://diataxis.fr/') len(html_header_splits)#出力:チャンクの数
HTMLSectionSplitter
使用すると、他のセクションに基づいて分割できます。
コード固有の分割
プログラミング言語には、独自の構造があります。この例では、PythonコードにSyntax-Aware分割を使用しています。
langchain_text_splittersからインポートrecursiveCharacterTextSplitter、言語 #...(pythonコードの例)... python_splitter = recursivecharactertextsplitter.from_language(language = language.python、chunk_size = 100、chunk_overlap = 0) python_docs = python_splitter.create_documents([python_code])
JSONデータ処理
ネストされたJSONオブジェクトは、重要な関係を維持しながら分割できます。
langchain_text_splittersからrecursivejsonsplitterをインポートします #...(JSONデータの例)... splitter = recursivejsonsplitter(max_chunk_size = 200、min_chunk_size = 20) chunks = splitter.split_text(json_data、convert_lists = true)
セマンティックチャンク
この方法では、セマンティックに関連する文との文の埋め込みとコサインの類似性を使用します。
langchain_experimental.text_splitterからsemanticchunkerをインポートします langchain_openai.embeddingsからImport OpenAiembeddings#は、OpenAI APIキーが必要です #...(OpenAiemBedingsとSemanticChunkerを使用してコード)...
結論
Langchainは、さまざまなデータ型に適したさまざまなテキスト分割方法を提供しています。適切な方法を選択すると、LLM入力が最適化され、精度が向上し、コストが削減されます。
よくある質問
(Q&Aセクションはほぼ同じままであり、明確さとフローのための軽微な文言の調整があります。)
以上がLangchainテキストスプリッターを使用してデータを分割する7つの方法-AnalyticsVidhyaの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、トップAIアートジェネレーターをレビューし、その機能、創造的なプロジェクトへの適合性、価値について説明します。 Midjourneyを専門家にとって最高の価値として強調し、高品質でカスタマイズ可能なアートにDall-E 2を推奨しています。

メタのラマ3.2:マルチモーダルとモバイルAIの前進 メタは最近、ラマ3.2を発表しました。これは、モバイルデバイス向けに最適化された強力なビジョン機能と軽量テキストモデルを特徴とするAIの大幅な進歩です。 成功に基づいてo

この記事では、ChatGpt、Gemini、ClaudeなどのトップAIチャットボットを比較し、自然言語の処理と信頼性における独自の機能、カスタマイズオプション、パフォーマンスに焦点を当てています。

この記事では、Grammarly、Jasper、Copy.ai、Writesonic、RytrなどのトップAIライティングアシスタントについて説明し、コンテンツ作成のためのユニークな機能に焦点を当てています。 JasperがSEOの最適化に優れているのに対し、AIツールはトーンの維持に役立つと主張します

2024年は、コンテンツ生成にLLMSを使用することから、内部の仕組みを理解することへの移行を目撃しました。 この調査は、AIエージェントの発見につながりました。これは、最小限の人間の介入でタスクと決定を処理する自律システムを処理しました。 buildin

今週のAIの風景:進歩、倫理的考慮、規制の議論の旋風。 Openai、Google、Meta、Microsoftのような主要なプレーヤーは、画期的な新しいモデルからLEの重要な変化まで、アップデートの急流を解き放ちました

Shopify CEOのTobiLütkeの最近のメモは、AIの能力がすべての従業員にとって基本的な期待であると大胆に宣言し、会社内の重大な文化的変化を示しています。 これはつかの間の傾向ではありません。これは、pに統合された新しい運用パラダイムです

この記事では、Google Cloud、Amazon Polly、Microsoft Azure、IBM Watson、DecriptなどのトップAI音声ジェネレーターをレビューし、機能、音声品質、さまざまなニーズへの適合性に焦点を当てています。
