4.langchain 入门到放弃(二) Document loaders-JSON

80 阅读1分钟

4.langchain 入门到放弃(二) Document loaders-JSON

  langchain 入门到放弃(二) Document loaders-JSON

  JSONLoader 使用指定的 jq 架构来解析 JSON 文件。它使用 jq python 包。

pip install jq

  JSONLoader

json格式如下
{
  "data": [
    {
      "attributes": {
        "message": "message1",
        "tags": [
          "tag1"
        ]
      },
      "id": "1"
    },
    {
      "attributes": {
        "message": "message2",
        "tags": [
          "tag2"
        ]
      },
      "id": "2"
    }
  ]
}

  假设我们想提取 JSON 数据消息键中内容字段下的值。这可以通过 JSONLoader 轻松实现,如下所示。

from langchain_community.document_loaders import JSONLoader

json = JSONLoader(
    file_path="../source/simple_chat.json",
    jq_schema=".data",
    text_content=False
)
documents = json.load()
print(documents)

  输出结果

[Document(page_content="[{'attributes': {'message': 'message1', 'tags': ['tag1']}, 'id': '1'}, {'attributes': {'message': 'message2', 'tags': ['tag2']}, 'id': '2'}]", metadata={'source': '/Users/zhukai/python_work/langchain_learn/source/simple_chat.json', 'seq_num': 1})]

  JSON Lines file

  json文件

{"data":[{"attributes":{"message":"message1","tags":["tag1"]},"id":"1"},{"attributes":{"message":"message2","tags":["tag2"]},"id":"2"}]}

  需要设置json_lines=True

from langchain_community.document_loaders import JSONLoader

json = JSONLoader(
    file_path="../source/jsonline.json",
    jq_schema=".data",
    text_content=False,
    json_lines=True
)
documents = json.load()
print(documents)

  输出结果

[Document(page_content="[{'attributes': {'message': 'message1', 'tags': ['tag1']}, 'id': '1'}, {'attributes': {'message': 'message2', 'tags': ['tag2']}, 'id': '2'}]", metadata={'source': '/Users/zhukai/python_work/langchain_learn/source/jsonline.json', 'seq_num': 1})]

  JSON content_key

  要使用 content_key 从 JSON 文件加载文档,请设置 is_content_key_jq_parsable=True。确保 content_key 兼容并且可以使用 jq 模式进行解析。

from langchain_community.document_loaders import JSONLoader

json = JSONLoader(
    file_path="../source/simple_chat.json",
    jq_schema=".data[]",
    content_key=".attributes.message",
    is_content_key_jq_parsable=True,
)
documents = json.load()
print(documents)

  输出结果

[Document(page_content='message1', metadata={'source': '/Users/zhukai/python_work/langchain_learn/source/simple_chat.json', 'seq_num': 1}), Document(page_content='message2', metadata={'source': '/Users/zhukai/python_work/langchain_learn/source/simple_chat.json', 'seq_num': 2})]