이 가이드는 JSON document loader 시작하기에 대한 간단한 개요를 제공합니다. JSONLoader의 모든 기능과 구성에 대한 자세한 문서는 API reference를 참조하세요.
  • TODO: 기본 API에 대한 정보 등 기타 관련 링크를 추가하세요.

Overview

Integration details

ClassPackageLocalSerializableJS support
JSONLoaderlangchain-community

Loader features

SourceDocument Lazy LoadingNative Async Support
JSONLoader

Setup

JSON document loader에 접근하려면 langchain-community integration package와 jq python package를 설치해야 합니다.

Credentials

JSONLoader class를 사용하는 데 필요한 자격 증명은 없습니다. 모델 호출의 자동 추적을 활성화하려면 LangSmith API key를 설정하세요:
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"

Installation

langchain-communityjq를 설치하세요:
pip install -qU langchain-community jq

Initialization

이제 model object를 인스턴스화하고 document를 로드할 수 있습니다:
  • TODO: 관련 매개변수로 모델 인스턴스화를 업데이트하세요.
from langchain_community.document_loaders import JSONLoader

loader = JSONLoader(
    file_path="./example_data/facebook_chat.json",
    jq_schema=".messages[].content",
    text_content=False,
)

Load

docs = loader.load()
docs[0]
Document(metadata={'source': '/Users/isaachershenson/Documents/langchain/docs/docs/integrations/document_loaders/example_data/facebook_chat.json', 'seq_num': 1}, page_content='Bye!')
print(docs[0].metadata)
{'source': '/Users/isaachershenson/Documents/langchain/docs/docs/integrations/document_loaders/example_data/facebook_chat.json', 'seq_num': 1}

Lazy Load

pages = []
for doc in loader.lazy_load():
    pages.append(doc)
    if len(pages) >= 10:
        # do some paged operation, e.g.
        # index.upsert(pages)

        pages = []

JSON Lines 파일에서 읽기

JSON Lines 파일에서 document를 로드하려면 json_lines=True를 전달하고 단일 JSON object에서 page_content를 추출하기 위해 jq_schema를 지정하세요.
loader = JSONLoader(
    file_path="./example_data/facebook_chat_messages.jsonl",
    jq_schema=".content",
    text_content=False,
    json_lines=True,
)

docs = loader.load()
print(docs[0])
page_content='Bye!' metadata={'source': '/Users/isaachershenson/Documents/langchain/docs/docs/integrations/document_loaders/example_data/facebook_chat_messages.jsonl', 'seq_num': 1}

특정 content key 읽기

또 다른 옵션은 jq_schema='.'를 설정하고 특정 content만 로드하기 위해 content_key를 제공하는 것입니다:
loader = JSONLoader(
    file_path="./example_data/facebook_chat_messages.jsonl",
    jq_schema=".",
    content_key="sender_name",
    json_lines=True,
)

docs = loader.load()
print(docs[0])
page_content='User 2' metadata={'source': '/Users/isaachershenson/Documents/langchain/docs/docs/integrations/document_loaders/example_data/facebook_chat_messages.jsonl', 'seq_num': 1}

jq schema content_key를 사용한 JSON 파일

jq schema 내에서 content_key를 사용하여 JSON 파일에서 document를 로드하려면 is_content_key_jq_parsable=True를 설정하세요. content_key가 호환되고 jq schema를 사용하여 파싱될 수 있는지 확인하세요.
loader = JSONLoader(
    file_path="./example_data/facebook_chat.json",
    jq_schema=".messages[]",
    content_key=".content",
    is_content_key_jq_parsable=True,
)

docs = loader.load()
print(docs[0])
page_content='Bye!' metadata={'source': '/Users/isaachershenson/Documents/langchain/docs/docs/integrations/document_loaders/example_data/facebook_chat.json', 'seq_num': 1}

Metadata 추출

일반적으로 JSON 파일에서 사용 가능한 metadata를 content에서 생성하는 document에 포함하려고 합니다. 다음은 JSONLoader를 사용하여 metadata를 추출하는 방법을 보여줍니다. 주목해야 할 몇 가지 주요 변경 사항이 있습니다. metadata를 수집하지 않았던 이전 예제에서는 page_content의 값을 추출할 수 있는 위치를 schema에서 직접 지정할 수 있었습니다. 이 예제에서는 loader에게 messages field의 record를 반복하도록 지시해야 합니다. 그러면 jq_schema는 .messages[]가 되어야 합니다. 이를 통해 구현해야 하는 metadata_func에 record(dict)를 전달할 수 있습니다. metadata_func는 record의 어떤 정보가 최종 Document object에 저장된 metadata에 포함되어야 하는지 식별하는 역할을 합니다. 또한 이제 loader에서 content_key 인수를 통해 page_content의 값을 추출해야 하는 record의 key를 명시적으로 지정해야 합니다.
# Define the metadata extraction function.
def metadata_func(record: dict, metadata: dict) -> dict:
    metadata["sender_name"] = record.get("sender_name")
    metadata["timestamp_ms"] = record.get("timestamp_ms")

    return metadata


loader = JSONLoader(
    file_path="./example_data/facebook_chat.json",
    jq_schema=".messages[]",
    content_key="content",
    metadata_func=metadata_func,
)

docs = loader.load()
print(docs[0].metadata)
{'source': '/Users/isaachershenson/Documents/langchain/docs/docs/integrations/document_loaders/example_data/facebook_chat.json', 'seq_num': 1, 'sender_name': 'User 2', 'timestamp_ms': 1675597571851}

API reference

JSONLoader의 모든 기능과 구성에 대한 자세한 문서는 API reference를 참조하세요: python.langchain.com/api_reference/community/document_loaders/langchain_community.document_loaders.json_loader.JSONLoader.html
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I