如何使用JQ工具在LangChain JSONLoader中添加JSON字段至metadata属性
解决方案
要实现将page_data存入page_content,同时把page_name和page_url加入metadata的需求,只需修改JSONLoader的参数配置,具体操作如下:
修改代码配置
调整JSONLoader的jq_schema规则,添加content_key和metadata_func参数:
from langchain_community.document_loaders import JSONLoader loader = JSONLoader( file_path="/content/web_data.json", # JQ规则:提取每个数组元素中的page_data、page_name、page_url字段 jq_schema='.[].{page_data: .page_data, page_name: .page_name, page_url: .page_url}', # 指定用page_data字段作为Document的page_content content_key="page_data", text_content=False, # 自定义元数据提取函数,将page_name和page_url加入metadata metadata_func=lambda record: { "page_name": record["page_name"], "page_url": record["page_url"] } ) docs = loader.load() print(docs)
运行结果
执行后输出将与期望完全一致:
[Document(page_content="Content about homepage", metadata={'source': '/content/json_data.json', 'seq_num': 1, 'page_name': 'Homepage',"page_url": "https://mywebsite.com/homepage"}), Document(page_content="Content about Contact US", metadata={'source': '/content/json_data.json', 'seq_num': 2,"page_name": "Contact US","page_url": "https://mywebsite.com/contactus"})]
关键说明
jq_schema:从JSON数组的每个元素中提取目标字段,确保后续能获取到元数据所需内容content_key:明确指定用page_data的值填充page_contentmetadata_func:自定义函数从每条记录中提取page_name和page_url,并自动合并到默认metadata(包含source和seq_num)中
内容的提问来源于stack exchange,提问作者Sandeep Singh
相关产品推荐
相关产品推荐

