haystack JSON Convertor : Pipeline Component

gcuhipw9  于 5个月前  发布在  其他
关注(0)|答案(7)|浏览(73)

您的功能请求是否与问题相关?请描述。

目前我们有一个 .txtDocument 的转换器以及其他非结构化转换器。但我看到我们处理的大部分数据都是以 JSON 形式呈现的。

描述您希望的解决方案

因此,一个 .jsonDocument 的转换器将在消费 API 数据的过程中成为主要的收益者。

描述您考虑过的替代方案

虽然 Unstructured file convertor 已经存在,但将 JSON 模式作为单独的转换器会增加更多的意义和价值。

qlfbtfca

qlfbtfca1#

感谢您的建议。如果您愿意,请随时提交一个pull请求。我们的贡献指南是here

eyh26e7m

eyh26e7m2#

@julian-risch
我喜欢开始为Haystack做贡献。你觉得这可以成为一个好的起点吗?如果是这样的话,请随意分配给我。
谢谢,

pieyvz9o

pieyvz9o3#

@arminnajafi 我已经贡献了一个月左右,他们通常不会分配外部人员处理问题,至少我看到的是这样。如果你想做这件事,请随时打开一个PR,当你准备好时,他们会审查它。

swvgeqrz

swvgeqrz4#

我正在为Haystack 2.0提出一个JSONToDocument转换器,灵感来源于LangChain的JSONLoader。这将允许对JSON文件进行强大的解析,类似于LangChain基于jq的实现。
示例JSON模式( prize.json ):

{
    "prizes": [
        {
            "year": "string",
            "category": "string",
            "laureates": [
                {
                    "id": "string",
                    "firstname": "string",
                    "surname": "string",
                    "motivation": "string",
                    "share": "string",
                }
            ],
        }
    ]
}

提议的实现

from haystack.components.converters import JSONToDocument

converter = JSONToDocument(
    jq_schema=".prizes[].laureates[]?",
    content_key="motivation",
    additional_meta_fields=["firstname", "surname", "share"],
)
docs = converter.run(sources=["./prize.json"])
print(docs["documents"][0])

预期输出:

Document(id=db72dfbe9, content: '"for the discovery and synthesis of quantum dots"', meta: {'file_path': './prize.json', 'firstname': 'Moungi', 'surname': 'Bawendi', 'share': '3'})
ijxebb2r

ijxebb2r5#

根据@kanenorman的建议,我在#8079中实现了一个基本的JSONToDocument组件。在这个初步实现中,我还没有包含content_keyadditional_meta_fields参数。关键是我还没有找到一种简单的方法来在任何JSON结构中实现元数据逻辑。
请告诉我如何改进这个组件以包含这种逻辑。

a64a0gku

a64a0gku6#

@tradicio - 谢谢。我正在努力整合jq逻辑。你打算将你的PR保持为最终版本还是转换为草稿?

ajsxfq5m

ajsxfq5m7#

@tradicio - 谢谢。我正在努力整合jq逻辑。你打算将你的PR保持为最终版本还是转换为草稿?

我不确定在接下来的几周里我能在PR上做多少工作,如果你认为你能整合jq逻辑,我很乐意将PR变成草稿。

相关问题