diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2976a19..c5d835b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,16 +20,17 @@ repos: - id: pyupgrade args: [--py38-plus] - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.9 - hooks: - - id: ruff - - repo: https://github.com/psf/black rev: 24.4.2 hooks: - id: black + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.4.9 + hooks: + - id: ruff + args: ["--fix"] + - repo: https://github.com/nbQA-dev/nbQA rev: 1.8.5 hooks: diff --git a/README.md b/README.md index 158e463..0d086c6 100644 --- a/README.md +++ b/README.md @@ -17,12 +17,14 @@ `dataframes-haystack` is an extension for [Haystack 2](https://docs.haystack.deepset.ai/docs/intro) that enables integration with dataframe libraries. -The library offers custom [Converters](https://docs.haystack.deepset.ai/docs/converters) components that convert data stored in dataframes into Haystack [`Document`](https://docs.haystack.deepset.ai/docs/data-classes#document) objects. - The dataframe libraries currently supported are: - [pandas](https://pandas.pydata.org/) - [Polars](https://pola.rs) +The library offers various custom [Converters](https://docs.haystack.deepset.ai/docs/converters) components to transform dataframes into Haystack [`Document`](https://docs.haystack.deepset.ai/docs/data-classes#document) objects: +- `FileToPandasDataFrame` and `FileToPolarsDataFrame` read files and convert them into dataframes. +- `PandasDataFrameConverter` or `PolarsDataFrameConverter` convert data stored in dataframes into Haystack `Document`objects. + ## 🛠️ Installation ```sh @@ -40,6 +42,26 @@ pip install "dataframes-haystack[polars]" ### Pandas +#### FileToPandasDataFrame + +```python +from dataframes_haystack.components.converters.pandas import FileToPandasDataFrame + +converter = FileToPandasDataFrame(file_format="csv") + +output_dataframe = converter.run( + file_paths=["data/doc1.csv", "data/doc2.csv"] +) +``` + +Result: +```python +>>> output_dataframe +{'dataframe': } +``` + +#### PandasDataFrameConverter + ```python import pandas as pd @@ -65,6 +87,26 @@ Result: ### Polars +#### FileToPolarsDataFrame + +```python +from dataframes_haystack.components.converters.polars import FileToPolarsDataFrame + +converter = FileToPolarsDataFrame(file_format="csv") + +output_dataframe = converter.run( + file_paths=["data/doc1.csv", "data/doc2.csv"] +) +``` + +Result: +```python +>>> output_dataframe +{'dataframe': } +``` + +#### PolarsDataFrameConverter + ```python import polars as pl diff --git a/notebooks/pandas-example.ipynb b/notebooks/pandas-example.ipynb index 3575c38..5570eb3 100644 --- a/notebooks/pandas-example.ipynb +++ b/notebooks/pandas-example.ipynb @@ -112,6 +112,28 @@ " \n", " \n", " 0\n", + " Large Language Models as Software Components: ...\n", + " [Irene Weber]\n", + " Large Language Models (LLMs) have become widel...\n", + " 2024-06-13 21:32:56+00:00\n", + " cs.SE\n", + " [cs.SE, cs.CL, cs.LG, A.1; I.2.7; D.2.11]\n", + " http://arxiv.org/pdf/2406.10300v1\n", + " http://arxiv.org/abs/2406.10300v1\n", + " \n", + " \n", + " 1\n", + " Parrot: Efficient Serving of LLM-based Applica...\n", + " [Chaofan Lin, Zhenhua Han, Chengruidong Zhang,...\n", + " The rise of large language models (LLMs) has e...\n", + " 2024-05-30 09:46:36+00:00\n", + " cs.LG\n", + " [cs.LG, cs.AI]\n", + " http://arxiv.org/pdf/2405.19888v1\n", + " http://arxiv.org/abs/2405.19888v1\n", + " \n", + " \n", + " 2\n", " A Survey of Large Language Models for Code: Ev...\n", " [Zibin Zheng, Kaiwen Ning, Yanlin Wang, Jingwe...\n", " General large language models (LLMs), represen...\n", @@ -122,7 +144,18 @@ " http://arxiv.org/abs/2311.10372v2\n", " \n", " \n", - " 1\n", + " 3\n", + " A Survey of Large Language Models on Generativ...\n", + " [Wenbo Shang, Xin Huang]\n", + " A graph is a fundamental data model to represe...\n", + " 2024-04-23 07:39:24+00:00\n", + " cs.CL\n", + " [cs.CL, cs.AI, cs.DB]\n", + " http://arxiv.org/pdf/2404.14809v1\n", + " http://arxiv.org/abs/2404.14809v1\n", + " \n", + " \n", + " 4\n", " TEST: Text Prototype Aligned Embedding to Acti...\n", " [Chenxi Sun, Hongyan Li, Yaliang Li, Shenda Hong]\n", " This work summarizes two ways to accomplish Ti...\n", @@ -132,78 +165,52 @@ " http://arxiv.org/pdf/2308.08241v2\n", " http://arxiv.org/abs/2308.08241v2\n", " \n", - " \n", - " 2\n", - " Benchmarking LLMs via Uncertainty Quantification\n", - " [Fanghua Ye, Mingming Yang, Jianhui Pang, Long...\n", - " The proliferation of open-source Large Languag...\n", - " 2024-01-23 14:29:17+00:00\n", - " cs.CL\n", - " [cs.CL]\n", - " http://arxiv.org/pdf/2401.12794v1\n", - " http://arxiv.org/abs/2401.12794v1\n", - " \n", - " \n", - " 3\n", - " Is LLM-as-a-Judge Robust? Investigating Univer...\n", - " [Vyas Raina, Adian Liusie, Mark Gales]\n", - " Large Language Models (LLMs) are powerful zero...\n", - " 2024-02-21 18:55:20+00:00\n", - " cs.CL\n", - " [cs.CL]\n", - " http://arxiv.org/pdf/2402.14016v1\n", - " http://arxiv.org/abs/2402.14016v1\n", - " \n", - " \n", - " 4\n", - " MEGAnno+: A Human-LLM Collaborative Annotation...\n", - " [Hannah Kim, Kushan Mitra, Rafael Li Chen, Saj...\n", - " Large language models (LLMs) can label data fa...\n", - " 2024-02-28 04:58:07+00:00\n", - " cs.CL\n", - " [cs.CL, cs.HC]\n", - " http://arxiv.org/pdf/2402.18050v1\n", - " http://arxiv.org/abs/2402.18050v1\n", - " \n", " \n", "\n", "" ], "text/plain": [ " title \\\n", - "0 A Survey of Large Language Models for Code: Ev... \n", - "1 TEST: Text Prototype Aligned Embedding to Acti... \n", - "2 Benchmarking LLMs via Uncertainty Quantification \n", - "3 Is LLM-as-a-Judge Robust? Investigating Univer... \n", - "4 MEGAnno+: A Human-LLM Collaborative Annotation... \n", + "0 Large Language Models as Software Components: ... \n", + "1 Parrot: Efficient Serving of LLM-based Applica... \n", + "2 A Survey of Large Language Models for Code: Ev... \n", + "3 A Survey of Large Language Models on Generativ... \n", + "4 TEST: Text Prototype Aligned Embedding to Acti... \n", "\n", " authors \\\n", - "0 [Zibin Zheng, Kaiwen Ning, Yanlin Wang, Jingwe... \n", - "1 [Chenxi Sun, Hongyan Li, Yaliang Li, Shenda Hong] \n", - "2 [Fanghua Ye, Mingming Yang, Jianhui Pang, Long... \n", - "3 [Vyas Raina, Adian Liusie, Mark Gales] \n", - "4 [Hannah Kim, Kushan Mitra, Rafael Li Chen, Saj... \n", + "0 [Irene Weber] \n", + "1 [Chaofan Lin, Zhenhua Han, Chengruidong Zhang,... \n", + "2 [Zibin Zheng, Kaiwen Ning, Yanlin Wang, Jingwe... \n", + "3 [Wenbo Shang, Xin Huang] \n", + "4 [Chenxi Sun, Hongyan Li, Yaliang Li, Shenda Hong] \n", "\n", " summary \\\n", - "0 General large language models (LLMs), represen... \n", - "1 This work summarizes two ways to accomplish Ti... \n", - "2 The proliferation of open-source Large Languag... \n", - "3 Large Language Models (LLMs) are powerful zero... \n", - "4 Large language models (LLMs) can label data fa... \n", + "0 Large Language Models (LLMs) have become widel... \n", + "1 The rise of large language models (LLMs) has e... \n", + "2 General large language models (LLMs), represen... \n", + "3 A graph is a fundamental data model to represe... \n", + "4 This work summarizes two ways to accomplish Ti... \n", + "\n", + " published primary_category \\\n", + "0 2024-06-13 21:32:56+00:00 cs.SE \n", + "1 2024-05-30 09:46:36+00:00 cs.LG \n", + "2 2023-11-17 07:55:16+00:00 cs.SE \n", + "3 2024-04-23 07:39:24+00:00 cs.CL \n", + "4 2023-08-16 09:16:02+00:00 cs.CL \n", "\n", - " published primary_category categories \\\n", - "0 2023-11-17 07:55:16+00:00 cs.SE [cs.SE] \n", - "1 2023-08-16 09:16:02+00:00 cs.CL [cs.CL, cs.AI] \n", - "2 2024-01-23 14:29:17+00:00 cs.CL [cs.CL] \n", - "3 2024-02-21 18:55:20+00:00 cs.CL [cs.CL] \n", - "4 2024-02-28 04:58:07+00:00 cs.CL [cs.CL, cs.HC] \n", + " categories \\\n", + "0 [cs.SE, cs.CL, cs.LG, A.1; I.2.7; D.2.11] \n", + "1 [cs.LG, cs.AI] \n", + "2 [cs.SE] \n", + "3 [cs.CL, cs.AI, cs.DB] \n", + "4 [cs.CL, cs.AI] \n", "\n", " pdf_url entry_id \n", - "0 http://arxiv.org/pdf/2311.10372v2 http://arxiv.org/abs/2311.10372v2 \n", - "1 http://arxiv.org/pdf/2308.08241v2 http://arxiv.org/abs/2308.08241v2 \n", - "2 http://arxiv.org/pdf/2401.12794v1 http://arxiv.org/abs/2401.12794v1 \n", - "3 http://arxiv.org/pdf/2402.14016v1 http://arxiv.org/abs/2402.14016v1 \n", - "4 http://arxiv.org/pdf/2402.18050v1 http://arxiv.org/abs/2402.18050v1 " + "0 http://arxiv.org/pdf/2406.10300v1 http://arxiv.org/abs/2406.10300v1 \n", + "1 http://arxiv.org/pdf/2405.19888v1 http://arxiv.org/abs/2405.19888v1 \n", + "2 http://arxiv.org/pdf/2311.10372v2 http://arxiv.org/abs/2311.10372v2 \n", + "3 http://arxiv.org/pdf/2404.14809v1 http://arxiv.org/abs/2404.14809v1 \n", + "4 http://arxiv.org/pdf/2308.08241v2 http://arxiv.org/abs/2308.08241v2 " ] }, "execution_count": 4, @@ -220,7 +227,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Loading the data in `haystack`" + "Saving the data in a temporary file." ] }, { @@ -229,7 +236,23 @@ "metadata": {}, "outputs": [], "source": [ - "from dataframes_haystack.components.converters.pandas import PandasDataFrameConverter" + "import tempfile\n", + "\n", + "# create a temporary file\n", + "temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=\".csv\")\n", + "\n", + "# write the dataframe to the temporary file\n", + "with open(temp_file.name, \"w\") as f:\n", + " df.to_csv(f, index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading the data in `haystack`\n", + "\n", + "We can read the data using a `FileToPandasDataFrame` and convert the rows into `Document`s using a `PandasDataFrameConverter` component." ] }, { @@ -237,6 +260,203 @@ "execution_count": 6, "metadata": {}, "outputs": [], + "source": [ + "from dataframes_haystack.components.converters.pandas import FileToPandasDataFrame, PandasDataFrameConverter" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "file_to_pandas = FileToPandasDataFrame(file_format=\"csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "output_dataframe = file_to_pandas.run(file_paths=[temp_file.name])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['dataframe'])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# the output_dataframe is a dictionary with a dataframe key\n", + "output_dataframe.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
titleauthorssummarypublishedprimary_categorycategoriespdf_urlentry_id
0Large Language Models as Software Components: ...['Irene Weber']Large Language Models (LLMs) have become widel...2024-06-13 21:32:56+00:00cs.SE['cs.SE', 'cs.CL', 'cs.LG', 'A.1; I.2.7; D.2.11']http://arxiv.org/pdf/2406.10300v1http://arxiv.org/abs/2406.10300v1
1Parrot: Efficient Serving of LLM-based Applica...['Chaofan Lin', 'Zhenhua Han', 'Chengruidong Z...The rise of large language models (LLMs) has e...2024-05-30 09:46:36+00:00cs.LG['cs.LG', 'cs.AI']http://arxiv.org/pdf/2405.19888v1http://arxiv.org/abs/2405.19888v1
2A Survey of Large Language Models for Code: Ev...['Zibin Zheng', 'Kaiwen Ning', 'Yanlin Wang', ...General large language models (LLMs), represen...2023-11-17 07:55:16+00:00cs.SE['cs.SE']http://arxiv.org/pdf/2311.10372v2http://arxiv.org/abs/2311.10372v2
3A Survey of Large Language Models on Generativ...['Wenbo Shang', 'Xin Huang']A graph is a fundamental data model to represe...2024-04-23 07:39:24+00:00cs.CL['cs.CL', 'cs.AI', 'cs.DB']http://arxiv.org/pdf/2404.14809v1http://arxiv.org/abs/2404.14809v1
4TEST: Text Prototype Aligned Embedding to Acti...['Chenxi Sun', 'Hongyan Li', 'Yaliang Li', 'Sh...This work summarizes two ways to accomplish Ti...2023-08-16 09:16:02+00:00cs.CL['cs.CL', 'cs.AI']http://arxiv.org/pdf/2308.08241v2http://arxiv.org/abs/2308.08241v2
\n", + "
" + ], + "text/plain": [ + " title \\\n", + "0 Large Language Models as Software Components: ... \n", + "1 Parrot: Efficient Serving of LLM-based Applica... \n", + "2 A Survey of Large Language Models for Code: Ev... \n", + "3 A Survey of Large Language Models on Generativ... \n", + "4 TEST: Text Prototype Aligned Embedding to Acti... \n", + "\n", + " authors \\\n", + "0 ['Irene Weber'] \n", + "1 ['Chaofan Lin', 'Zhenhua Han', 'Chengruidong Z... \n", + "2 ['Zibin Zheng', 'Kaiwen Ning', 'Yanlin Wang', ... \n", + "3 ['Wenbo Shang', 'Xin Huang'] \n", + "4 ['Chenxi Sun', 'Hongyan Li', 'Yaliang Li', 'Sh... \n", + "\n", + " summary \\\n", + "0 Large Language Models (LLMs) have become widel... \n", + "1 The rise of large language models (LLMs) has e... \n", + "2 General large language models (LLMs), represen... \n", + "3 A graph is a fundamental data model to represe... \n", + "4 This work summarizes two ways to accomplish Ti... \n", + "\n", + " published primary_category \\\n", + "0 2024-06-13 21:32:56+00:00 cs.SE \n", + "1 2024-05-30 09:46:36+00:00 cs.LG \n", + "2 2023-11-17 07:55:16+00:00 cs.SE \n", + "3 2024-04-23 07:39:24+00:00 cs.CL \n", + "4 2023-08-16 09:16:02+00:00 cs.CL \n", + "\n", + " categories \\\n", + "0 ['cs.SE', 'cs.CL', 'cs.LG', 'A.1; I.2.7; D.2.11'] \n", + "1 ['cs.LG', 'cs.AI'] \n", + "2 ['cs.SE'] \n", + "3 ['cs.CL', 'cs.AI', 'cs.DB'] \n", + "4 ['cs.CL', 'cs.AI'] \n", + "\n", + " pdf_url entry_id \n", + "0 http://arxiv.org/pdf/2406.10300v1 http://arxiv.org/abs/2406.10300v1 \n", + "1 http://arxiv.org/pdf/2405.19888v1 http://arxiv.org/abs/2405.19888v1 \n", + "2 http://arxiv.org/pdf/2311.10372v2 http://arxiv.org/abs/2311.10372v2 \n", + "3 http://arxiv.org/pdf/2404.14809v1 http://arxiv.org/abs/2404.14809v1 \n", + "4 http://arxiv.org/pdf/2308.08241v2 http://arxiv.org/abs/2308.08241v2 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output_dataframe[\"dataframe\"].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], "source": [ "pandas_converter = PandasDataFrameConverter(\n", " content_column=\"summary\",\n", @@ -246,41 +466,41 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'documents': [Document(id=e5345d1a494ff02e70e539ea512e5051fdb9444b74fb4a341bcc5536ea1bbedd, content: 'General large language models (LLMs), represented by ChatGPT, have\n", - " demonstrated significant potentia...', meta: {'title': 'A Survey of Large Language Models for Code: Evolution, Benchmarking, and Future Trends', 'authors': ['Zibin Zheng', 'Kaiwen Ning', 'Yanlin Wang', 'Jingwen Zhang', 'Dewu Zheng', 'Mingxi Ye', 'Jiachi Chen'], 'published': Timestamp('2023-11-17 07:55:16+0000', tz='UTC'), 'primary_category': 'cs.SE', 'categories': ['cs.SE'], 'pdf_url': 'http://arxiv.org/pdf/2311.10372v2'}),\n", - " Document(id=eb043b305efedf30bfb8a566ad615deb77408e8b13edd315a27e6680f1c060b7, content: 'This work summarizes two ways to accomplish Time-Series (TS) tasks in today's\n", - " Large Language Model (...', meta: {'title': \"TEST: Text Prototype Aligned Embedding to Activate LLM's Ability for Time Series\", 'authors': ['Chenxi Sun', 'Hongyan Li', 'Yaliang Li', 'Shenda Hong'], 'published': Timestamp('2023-08-16 09:16:02+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI'], 'pdf_url': 'http://arxiv.org/pdf/2308.08241v2'}),\n", - " Document(id=7787bced397e1b475ab8998eba3b3758ce8a090c54808ef3f52269cf6e23df13, content: 'The proliferation of open-source Large Language Models (LLMs) from various\n", - " institutions has highligh...', meta: {'title': 'Benchmarking LLMs via Uncertainty Quantification', 'authors': ['Fanghua Ye', 'Mingming Yang', 'Jianhui Pang', 'Longyue Wang', 'Derek F. Wong', 'Emine Yilmaz', 'Shuming Shi', 'Zhaopeng Tu'], 'published': Timestamp('2024-01-23 14:29:17+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL'], 'pdf_url': 'http://arxiv.org/pdf/2401.12794v1'}),\n", - " Document(id=8165713c8b277cf96ebb09a4323df065b259bdfb5d05b939470502ea6efa05e0, content: 'Large Language Models (LLMs) are powerful zero-shot assessors and are\n", - " increasingly used in real-worl...', meta: {'title': 'Is LLM-as-a-Judge Robust? Investigating Universal Adversarial Attacks on Zero-shot LLM Assessment', 'authors': ['Vyas Raina', 'Adian Liusie', 'Mark Gales'], 'published': Timestamp('2024-02-21 18:55:20+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL'], 'pdf_url': 'http://arxiv.org/pdf/2402.14016v1'}),\n", - " Document(id=236f41028f068c0009b1b9c57b932661096232b60b2fe153bed09d96373e534f, content: 'Large language models (LLMs) can label data faster and cheaper than humans\n", - " for various NLP tasks. De...', meta: {'title': 'MEGAnno+: A Human-LLM Collaborative Annotation System', 'authors': ['Hannah Kim', 'Kushan Mitra', 'Rafael Li Chen', 'Sajjadur Rahman', 'Dan Zhang'], 'published': Timestamp('2024-02-28 04:58:07+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.HC'], 'pdf_url': 'http://arxiv.org/pdf/2402.18050v1'}),\n", - " Document(id=f4fe18db15c552aa0c3c006b68b4e13d4b7673655583230cd426815034edfd97, content: 'Large Language Model (LLM) assistants, such as ChatGPT, have emerged as\n", - " potential alternatives to se...', meta: {'title': 'Why and When LLM-Based Assistants Can Go Wrong: Investigating the Effectiveness of Prompt-Based Interactions for Software Help-Seeking', 'authors': ['Anjali Khurana', 'Hari Subramonyam', 'Parmit K Chilana'], 'published': Timestamp('2024-02-12 19:49:58+0000', tz='UTC'), 'primary_category': 'cs.HC', 'categories': ['cs.HC', 'cs.AI', 'cs.LG'], 'pdf_url': 'http://arxiv.org/pdf/2402.08030v1'}),\n", - " Document(id=af72006bf55a56642dfee961f57936b385de0e9499f66ab4f40bcb48fb23ceb6, content: 'Since late 2022, Large Language Models (LLMs) have become very prominent with\n", - " LLMs like ChatGPT and ...', meta: {'title': 'On the Origin of LLMs: An Evolutionary Tree and Graph for 15,821 Large Language Models', 'authors': ['Sarah Gao', 'Andrew Kean Gao'], 'published': Timestamp('2023-07-19 07:17:43+0000', tz='UTC'), 'primary_category': 'cs.DL', 'categories': ['cs.DL', 'cs.CL', 'I.2.1; H.5.0'], 'pdf_url': 'http://arxiv.org/pdf/2307.09793v1'}),\n", - " Document(id=9662dda2011ab2f3437a365f79e5c26e72983bfd0ee15b626c0cd83bb9794de6, content: 'Misinformation such as fake news and rumors is a serious threat on\n", - " information ecosystems and public...', meta: {'title': 'Combating Misinformation in the Age of LLMs: Opportunities and Challenges', 'authors': ['Canyu Chen', 'Kai Shu'], 'published': Timestamp('2023-11-09 00:05:27+0000', tz='UTC'), 'primary_category': 'cs.CY', 'categories': ['cs.CY'], 'pdf_url': 'http://arxiv.org/pdf/2311.05656v1'}),\n", - " Document(id=ea33c8f65ae51f76b7c754bcbdaaaada73406b960092450cef4a61fe351a4745, content: 'Recent advancements in multimodal large language models (MLLMs) have achieved\n", - " significant multimodal...', meta: {'title': 'Towards Vision Enhancing LLMs: Empowering Multimodal Knowledge Storage and Sharing in LLMs', 'authors': ['Yunxin Li', 'Baotian Hu', 'Wei Wang', 'Xiaochun Cao', 'Min Zhang'], 'published': Timestamp('2023-11-27 12:29:20+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI', 'cs.CV'], 'pdf_url': 'http://arxiv.org/pdf/2311.15759v1'}),\n", - " Document(id=30ad1bdfb1636680b77dc65da3e37f621da71afc7efb8d31fcaf2fa8d88575a4, content: 'Recently, considerable efforts have been directed towards compressing Large\n", - " Language Models (LLMs), ...', meta: {'title': 'Any-Precision LLM: Low-Cost Deployment of Multiple, Different-Sized LLMs', 'authors': ['Yeonhong Park', 'Jake Hyun', 'SangLyul Cho', 'Bonggeun Sim', 'Jae W. Lee'], 'published': Timestamp('2024-02-16 09:06:06+0000', tz='UTC'), 'primary_category': 'cs.LG', 'categories': ['cs.LG'], 'pdf_url': 'http://arxiv.org/pdf/2402.10517v1'})]}" + "{'documents': [Document(id=9cc8974e10748c08b9dceaa8c30d43f669be68507bb894de7dc7859705405413, content: 'Large Language Models (LLMs) have become widely adopted recently. Research\n", + " explores their use both a...', meta: {'title': 'Large Language Models as Software Components: A Taxonomy for LLM-Integrated Applications', 'authors': \"['Irene Weber']\", 'published': '2024-06-13 21:32:56+00:00', 'primary_category': 'cs.SE', 'categories': \"['cs.SE', 'cs.CL', 'cs.LG', 'A.1; I.2.7; D.2.11']\", 'pdf_url': 'http://arxiv.org/pdf/2406.10300v1'}),\n", + " Document(id=f90081e94dc913433a91bb8e77e6179a9d63749891f9215fc1c9e2627995e152, content: 'The rise of large language models (LLMs) has enabled LLM-based applications\n", + " (a.k.a. AI agents or co-...', meta: {'title': 'Parrot: Efficient Serving of LLM-based Applications with Semantic Variable', 'authors': \"['Chaofan Lin', 'Zhenhua Han', 'Chengruidong Zhang', 'Yuqing Yang', 'Fan Yang', 'Chen Chen', 'Lili Qiu']\", 'published': '2024-05-30 09:46:36+00:00', 'primary_category': 'cs.LG', 'categories': \"['cs.LG', 'cs.AI']\", 'pdf_url': 'http://arxiv.org/pdf/2405.19888v1'}),\n", + " Document(id=4d1e020feec9aea5a9dec6856ebe956bf8e25900ecf3bf4e4308c7729c4e2202, content: 'General large language models (LLMs), represented by ChatGPT, have\n", + " demonstrated significant potentia...', meta: {'title': 'A Survey of Large Language Models for Code: Evolution, Benchmarking, and Future Trends', 'authors': \"['Zibin Zheng', 'Kaiwen Ning', 'Yanlin Wang', 'Jingwen Zhang', 'Dewu Zheng', 'Mingxi Ye', 'Jiachi Chen']\", 'published': '2023-11-17 07:55:16+00:00', 'primary_category': 'cs.SE', 'categories': \"['cs.SE']\", 'pdf_url': 'http://arxiv.org/pdf/2311.10372v2'}),\n", + " Document(id=fe876693ff0c3df82eff969f81e6a696b8ad094071b82f8b52ab610d09b4b3fb, content: 'A graph is a fundamental data model to represent various entities and their\n", + " complex relationships in...', meta: {'title': 'A Survey of Large Language Models on Generative Graph Analytics: Query, Learning, and Applications', 'authors': \"['Wenbo Shang', 'Xin Huang']\", 'published': '2024-04-23 07:39:24+00:00', 'primary_category': 'cs.CL', 'categories': \"['cs.CL', 'cs.AI', 'cs.DB']\", 'pdf_url': 'http://arxiv.org/pdf/2404.14809v1'}),\n", + " Document(id=b7d8b363d9bf896cfea0fc5f2c5cfdfd2de98885e4e1ab32c3b00fb22b7d4cd5, content: 'This work summarizes two ways to accomplish Time-Series (TS) tasks in today's\n", + " Large Language Model (...', meta: {'title': \"TEST: Text Prototype Aligned Embedding to Activate LLM's Ability for Time Series\", 'authors': \"['Chenxi Sun', 'Hongyan Li', 'Yaliang Li', 'Shenda Hong']\", 'published': '2023-08-16 09:16:02+00:00', 'primary_category': 'cs.CL', 'categories': \"['cs.CL', 'cs.AI']\", 'pdf_url': 'http://arxiv.org/pdf/2308.08241v2'}),\n", + " Document(id=960a46561cd457b1e49b3cd1cdbf3b4e2f9e15b3661486072c0ac29fd82d088d, content: 'Large language models (LLMs) can label data faster and cheaper than humans\n", + " for various NLP tasks. De...', meta: {'title': 'MEGAnno+: A Human-LLM Collaborative Annotation System', 'authors': \"['Hannah Kim', 'Kushan Mitra', 'Rafael Li Chen', 'Sajjadur Rahman', 'Dan Zhang']\", 'published': '2024-02-28 04:58:07+00:00', 'primary_category': 'cs.CL', 'categories': \"['cs.CL', 'cs.HC']\", 'pdf_url': 'http://arxiv.org/pdf/2402.18050v1'}),\n", + " Document(id=f76cb8ce196482573dfc57775f5f40e825b1323d73aed6dbc2cb8d61f156222a, content: 'Large Language Model (LLM) assistants, such as ChatGPT, have emerged as\n", + " potential alternatives to se...', meta: {'title': 'Why and When LLM-Based Assistants Can Go Wrong: Investigating the Effectiveness of Prompt-Based Interactions for Software Help-Seeking', 'authors': \"['Anjali Khurana', 'Hari Subramonyam', 'Parmit K Chilana']\", 'published': '2024-02-12 19:49:58+00:00', 'primary_category': 'cs.HC', 'categories': \"['cs.HC', 'cs.AI', 'cs.LG']\", 'pdf_url': 'http://arxiv.org/pdf/2402.08030v1'}),\n", + " Document(id=227f6b76c8f6926250f28a0aa0bc2156820f9501f8f74aaae18f50b1e488a815, content: 'Since late 2022, Large Language Models (LLMs) have become very prominent with\n", + " LLMs like ChatGPT and ...', meta: {'title': 'On the Origin of LLMs: An Evolutionary Tree and Graph for 15,821 Large Language Models', 'authors': \"['Sarah Gao', 'Andrew Kean Gao']\", 'published': '2023-07-19 07:17:43+00:00', 'primary_category': 'cs.DL', 'categories': \"['cs.DL', 'cs.CL', 'I.2.1; H.5.0']\", 'pdf_url': 'http://arxiv.org/pdf/2307.09793v1'}),\n", + " Document(id=9e46297678c651b637a26473d6353c2c59aa1398ae9cae18d9edb5797d8b592d, content: 'Misinformation such as fake news and rumors is a serious threat on\n", + " information ecosystems and public...', meta: {'title': 'Combating Misinformation in the Age of LLMs: Opportunities and Challenges', 'authors': \"['Canyu Chen', 'Kai Shu']\", 'published': '2023-11-09 00:05:27+00:00', 'primary_category': 'cs.CY', 'categories': \"['cs.CY']\", 'pdf_url': 'http://arxiv.org/pdf/2311.05656v1'}),\n", + " Document(id=82fc0bb8cbd540a00e201f6b7df70b0d1624ee2d788cdbbf2ba77a06ab3f4252, content: 'Recent advancements in multimodal large language models (MLLMs) have achieved\n", + " significant multimodal...', meta: {'title': 'Towards Vision Enhancing LLMs: Empowering Multimodal Knowledge Storage and Sharing in LLMs', 'authors': \"['Yunxin Li', 'Baotian Hu', 'Wei Wang', 'Xiaochun Cao', 'Min Zhang']\", 'published': '2023-11-27 12:29:20+00:00', 'primary_category': 'cs.CL', 'categories': \"['cs.CL', 'cs.AI', 'cs.CV']\", 'pdf_url': 'http://arxiv.org/pdf/2311.15759v1'})]}" ] }, - "execution_count": 7, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pandas_converter.run(dataframe=df)" + "pandas_converter.run(dataframe=output_dataframe[\"dataframe\"])" ] }, { @@ -292,35 +512,35 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'documents': [Document(id=0, content: 'General large language models (LLMs), represented by ChatGPT, have\n", - " demonstrated significant potentia...', meta: {'title': 'A Survey of Large Language Models for Code: Evolution, Benchmarking, and Future Trends', 'authors': ['Zibin Zheng', 'Kaiwen Ning', 'Yanlin Wang', 'Jingwen Zhang', 'Dewu Zheng', 'Mingxi Ye', 'Jiachi Chen'], 'published': Timestamp('2023-11-17 07:55:16+0000', tz='UTC'), 'primary_category': 'cs.SE', 'categories': ['cs.SE'], 'pdf_url': 'http://arxiv.org/pdf/2311.10372v2'}),\n", - " Document(id=1, content: 'This work summarizes two ways to accomplish Time-Series (TS) tasks in today's\n", - " Large Language Model (...', meta: {'title': \"TEST: Text Prototype Aligned Embedding to Activate LLM's Ability for Time Series\", 'authors': ['Chenxi Sun', 'Hongyan Li', 'Yaliang Li', 'Shenda Hong'], 'published': Timestamp('2023-08-16 09:16:02+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI'], 'pdf_url': 'http://arxiv.org/pdf/2308.08241v2'}),\n", - " Document(id=2, content: 'The proliferation of open-source Large Language Models (LLMs) from various\n", - " institutions has highligh...', meta: {'title': 'Benchmarking LLMs via Uncertainty Quantification', 'authors': ['Fanghua Ye', 'Mingming Yang', 'Jianhui Pang', 'Longyue Wang', 'Derek F. Wong', 'Emine Yilmaz', 'Shuming Shi', 'Zhaopeng Tu'], 'published': Timestamp('2024-01-23 14:29:17+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL'], 'pdf_url': 'http://arxiv.org/pdf/2401.12794v1'}),\n", - " Document(id=3, content: 'Large Language Models (LLMs) are powerful zero-shot assessors and are\n", - " increasingly used in real-worl...', meta: {'title': 'Is LLM-as-a-Judge Robust? Investigating Universal Adversarial Attacks on Zero-shot LLM Assessment', 'authors': ['Vyas Raina', 'Adian Liusie', 'Mark Gales'], 'published': Timestamp('2024-02-21 18:55:20+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL'], 'pdf_url': 'http://arxiv.org/pdf/2402.14016v1'}),\n", - " Document(id=4, content: 'Large language models (LLMs) can label data faster and cheaper than humans\n", - " for various NLP tasks. De...', meta: {'title': 'MEGAnno+: A Human-LLM Collaborative Annotation System', 'authors': ['Hannah Kim', 'Kushan Mitra', 'Rafael Li Chen', 'Sajjadur Rahman', 'Dan Zhang'], 'published': Timestamp('2024-02-28 04:58:07+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.HC'], 'pdf_url': 'http://arxiv.org/pdf/2402.18050v1'}),\n", - " Document(id=5, content: 'Large Language Model (LLM) assistants, such as ChatGPT, have emerged as\n", - " potential alternatives to se...', meta: {'title': 'Why and When LLM-Based Assistants Can Go Wrong: Investigating the Effectiveness of Prompt-Based Interactions for Software Help-Seeking', 'authors': ['Anjali Khurana', 'Hari Subramonyam', 'Parmit K Chilana'], 'published': Timestamp('2024-02-12 19:49:58+0000', tz='UTC'), 'primary_category': 'cs.HC', 'categories': ['cs.HC', 'cs.AI', 'cs.LG'], 'pdf_url': 'http://arxiv.org/pdf/2402.08030v1'}),\n", - " Document(id=6, content: 'Since late 2022, Large Language Models (LLMs) have become very prominent with\n", - " LLMs like ChatGPT and ...', meta: {'title': 'On the Origin of LLMs: An Evolutionary Tree and Graph for 15,821 Large Language Models', 'authors': ['Sarah Gao', 'Andrew Kean Gao'], 'published': Timestamp('2023-07-19 07:17:43+0000', tz='UTC'), 'primary_category': 'cs.DL', 'categories': ['cs.DL', 'cs.CL', 'I.2.1; H.5.0'], 'pdf_url': 'http://arxiv.org/pdf/2307.09793v1'}),\n", - " Document(id=7, content: 'Misinformation such as fake news and rumors is a serious threat on\n", - " information ecosystems and public...', meta: {'title': 'Combating Misinformation in the Age of LLMs: Opportunities and Challenges', 'authors': ['Canyu Chen', 'Kai Shu'], 'published': Timestamp('2023-11-09 00:05:27+0000', tz='UTC'), 'primary_category': 'cs.CY', 'categories': ['cs.CY'], 'pdf_url': 'http://arxiv.org/pdf/2311.05656v1'}),\n", - " Document(id=8, content: 'Recent advancements in multimodal large language models (MLLMs) have achieved\n", - " significant multimodal...', meta: {'title': 'Towards Vision Enhancing LLMs: Empowering Multimodal Knowledge Storage and Sharing in LLMs', 'authors': ['Yunxin Li', 'Baotian Hu', 'Wei Wang', 'Xiaochun Cao', 'Min Zhang'], 'published': Timestamp('2023-11-27 12:29:20+0000', tz='UTC'), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI', 'cs.CV'], 'pdf_url': 'http://arxiv.org/pdf/2311.15759v1'}),\n", - " Document(id=9, content: 'Recently, considerable efforts have been directed towards compressing Large\n", - " Language Models (LLMs), ...', meta: {'title': 'Any-Precision LLM: Low-Cost Deployment of Multiple, Different-Sized LLMs', 'authors': ['Yeonhong Park', 'Jake Hyun', 'SangLyul Cho', 'Bonggeun Sim', 'Jae W. Lee'], 'published': Timestamp('2024-02-16 09:06:06+0000', tz='UTC'), 'primary_category': 'cs.LG', 'categories': ['cs.LG'], 'pdf_url': 'http://arxiv.org/pdf/2402.10517v1'})]}" + "{'documents': [Document(id=0, content: 'Large Language Models (LLMs) have become widely adopted recently. Research\n", + " explores their use both a...', meta: {'title': 'Large Language Models as Software Components: A Taxonomy for LLM-Integrated Applications', 'authors': \"['Irene Weber']\", 'published': '2024-06-13 21:32:56+00:00', 'primary_category': 'cs.SE', 'categories': \"['cs.SE', 'cs.CL', 'cs.LG', 'A.1; I.2.7; D.2.11']\", 'pdf_url': 'http://arxiv.org/pdf/2406.10300v1'}),\n", + " Document(id=1, content: 'The rise of large language models (LLMs) has enabled LLM-based applications\n", + " (a.k.a. AI agents or co-...', meta: {'title': 'Parrot: Efficient Serving of LLM-based Applications with Semantic Variable', 'authors': \"['Chaofan Lin', 'Zhenhua Han', 'Chengruidong Zhang', 'Yuqing Yang', 'Fan Yang', 'Chen Chen', 'Lili Qiu']\", 'published': '2024-05-30 09:46:36+00:00', 'primary_category': 'cs.LG', 'categories': \"['cs.LG', 'cs.AI']\", 'pdf_url': 'http://arxiv.org/pdf/2405.19888v1'}),\n", + " Document(id=2, content: 'General large language models (LLMs), represented by ChatGPT, have\n", + " demonstrated significant potentia...', meta: {'title': 'A Survey of Large Language Models for Code: Evolution, Benchmarking, and Future Trends', 'authors': \"['Zibin Zheng', 'Kaiwen Ning', 'Yanlin Wang', 'Jingwen Zhang', 'Dewu Zheng', 'Mingxi Ye', 'Jiachi Chen']\", 'published': '2023-11-17 07:55:16+00:00', 'primary_category': 'cs.SE', 'categories': \"['cs.SE']\", 'pdf_url': 'http://arxiv.org/pdf/2311.10372v2'}),\n", + " Document(id=3, content: 'A graph is a fundamental data model to represent various entities and their\n", + " complex relationships in...', meta: {'title': 'A Survey of Large Language Models on Generative Graph Analytics: Query, Learning, and Applications', 'authors': \"['Wenbo Shang', 'Xin Huang']\", 'published': '2024-04-23 07:39:24+00:00', 'primary_category': 'cs.CL', 'categories': \"['cs.CL', 'cs.AI', 'cs.DB']\", 'pdf_url': 'http://arxiv.org/pdf/2404.14809v1'}),\n", + " Document(id=4, content: 'This work summarizes two ways to accomplish Time-Series (TS) tasks in today's\n", + " Large Language Model (...', meta: {'title': \"TEST: Text Prototype Aligned Embedding to Activate LLM's Ability for Time Series\", 'authors': \"['Chenxi Sun', 'Hongyan Li', 'Yaliang Li', 'Shenda Hong']\", 'published': '2023-08-16 09:16:02+00:00', 'primary_category': 'cs.CL', 'categories': \"['cs.CL', 'cs.AI']\", 'pdf_url': 'http://arxiv.org/pdf/2308.08241v2'}),\n", + " Document(id=5, content: 'Large language models (LLMs) can label data faster and cheaper than humans\n", + " for various NLP tasks. De...', meta: {'title': 'MEGAnno+: A Human-LLM Collaborative Annotation System', 'authors': \"['Hannah Kim', 'Kushan Mitra', 'Rafael Li Chen', 'Sajjadur Rahman', 'Dan Zhang']\", 'published': '2024-02-28 04:58:07+00:00', 'primary_category': 'cs.CL', 'categories': \"['cs.CL', 'cs.HC']\", 'pdf_url': 'http://arxiv.org/pdf/2402.18050v1'}),\n", + " Document(id=6, content: 'Large Language Model (LLM) assistants, such as ChatGPT, have emerged as\n", + " potential alternatives to se...', meta: {'title': 'Why and When LLM-Based Assistants Can Go Wrong: Investigating the Effectiveness of Prompt-Based Interactions for Software Help-Seeking', 'authors': \"['Anjali Khurana', 'Hari Subramonyam', 'Parmit K Chilana']\", 'published': '2024-02-12 19:49:58+00:00', 'primary_category': 'cs.HC', 'categories': \"['cs.HC', 'cs.AI', 'cs.LG']\", 'pdf_url': 'http://arxiv.org/pdf/2402.08030v1'}),\n", + " Document(id=7, content: 'Since late 2022, Large Language Models (LLMs) have become very prominent with\n", + " LLMs like ChatGPT and ...', meta: {'title': 'On the Origin of LLMs: An Evolutionary Tree and Graph for 15,821 Large Language Models', 'authors': \"['Sarah Gao', 'Andrew Kean Gao']\", 'published': '2023-07-19 07:17:43+00:00', 'primary_category': 'cs.DL', 'categories': \"['cs.DL', 'cs.CL', 'I.2.1; H.5.0']\", 'pdf_url': 'http://arxiv.org/pdf/2307.09793v1'}),\n", + " Document(id=8, content: 'Misinformation such as fake news and rumors is a serious threat on\n", + " information ecosystems and public...', meta: {'title': 'Combating Misinformation in the Age of LLMs: Opportunities and Challenges', 'authors': \"['Canyu Chen', 'Kai Shu']\", 'published': '2023-11-09 00:05:27+00:00', 'primary_category': 'cs.CY', 'categories': \"['cs.CY']\", 'pdf_url': 'http://arxiv.org/pdf/2311.05656v1'}),\n", + " Document(id=9, content: 'Recent advancements in multimodal large language models (MLLMs) have achieved\n", + " significant multimodal...', meta: {'title': 'Towards Vision Enhancing LLMs: Empowering Multimodal Knowledge Storage and Sharing in LLMs', 'authors': \"['Yunxin Li', 'Baotian Hu', 'Wei Wang', 'Xiaochun Cao', 'Min Zhang']\", 'published': '2023-11-27 12:29:20+00:00', 'primary_category': 'cs.CL', 'categories': \"['cs.CL', 'cs.AI', 'cs.CV']\", 'pdf_url': 'http://arxiv.org/pdf/2311.15759v1'})]}" ] }, - "execution_count": 8, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -331,19 +551,19 @@ " meta_columns=[\"title\", \"authors\", \"published\", \"primary_category\", \"categories\", \"pdf_url\"],\n", " use_index_as_id=True,\n", ")\n", - "pandas_converter.run(dataframe=df)" + "pandas_converter.run(dataframe=output_dataframe[\"dataframe\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Using the `PandasDataFrameConverter` in a pipeline" + "### Using the components in a pipeline" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -354,12 +574,12 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "" ] @@ -372,21 +592,23 @@ "document_store = InMemoryDocumentStore()\n", "\n", "indexing = Pipeline()\n", + "indexing.add_component(\"file_to_pandas\", FileToPandasDataFrame(file_format=\"csv\"))\n", "indexing.add_component(\n", - " \"converter\",\n", + " \"dataframe_converter\",\n", " PandasDataFrameConverter(\n", " content_column=\"summary\",\n", " meta_columns=[\"title\", \"authors\", \"published\", \"primary_category\", \"categories\", \"pdf_url\"],\n", " ),\n", ")\n", "indexing.add_component(\"writer\", DocumentWriter(document_store))\n", - "indexing.connect(\"converter\", \"writer\")\n", + "indexing.connect(\"file_to_pandas\", \"dataframe_converter\")\n", + "indexing.connect(\"dataframe_converter\", \"writer\")\n", "indexing.show()" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -395,13 +617,26 @@ "{'writer': {'documents_written': 10}}" ] }, - "execution_count": 11, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "indexing.run({\"converter\": {\"dataframe\": df}})" + "indexing.run({\"file_to_pandas\": {\"file_paths\": [temp_file.name]}})" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# Cleanup\n", + "# delete the temporary file\n", + "from pathlib import Path\n", + "\n", + "Path(temp_file.name).unlink()" ] }, { diff --git a/notebooks/polars-example.ipynb b/notebooks/polars-example.ipynb index 8012cf3..cbfce20 100644 --- a/notebooks/polars-example.ipynb +++ b/notebooks/polars-example.ipynb @@ -82,45 +82,43 @@ "data": { "text/html": [ "
\n", - "shape: (5, 8)
titleauthorssummarypublishedprimary_categorycategoriespdf_urlentry_id
strlist[str]strdatetime[μs]strlist[str]strstr
"A Survey of La…["Zibin Zheng", "Kaiwen Ning", … "Jiachi Chen"]"General large …2023-11-17 07:55:16"cs.SE"["cs.SE"]"http://arxiv.o…"http://arxiv.o…
"TEST: Text Pro…["Chenxi Sun", "Hongyan Li", … "Shenda Hong"]"This work summ…2023-08-16 09:16:02"cs.CL"["cs.CL", "cs.AI"]"http://arxiv.o…"http://arxiv.o…
"Benchmarking L…["Fanghua Ye", "Mingming Yang", … "Zhaopeng Tu"]"The proliferat…2024-01-23 14:29:17"cs.CL"["cs.CL"]"http://arxiv.o…"http://arxiv.o…
"Is LLM-as-a-Ju…["Vyas Raina", "Adian Liusie", "Mark Gales"]"Large Language…2024-02-21 18:55:20"cs.CL"["cs.CL"]"http://arxiv.o…"http://arxiv.o…
"MEGAnno+: A Hu…["Hannah Kim", "Kushan Mitra", … "Dan Zhang"]"Large language…2024-02-28 04:58:07"cs.CL"["cs.CL", "cs.HC"]"http://arxiv.o…"http://arxiv.o…
" + "shape: (5, 8)
titleauthorssummarypublishedprimary_categorycategoriespdf_urlentry_id
strlist[str]strdatetime[μs]strlist[str]strstr
"Large Language Models as Softw…["Irene Weber"]"Large Language Models (LLMs) h…2024-06-13 21:32:56"cs.SE"["cs.SE", "cs.CL", … "A.1; I.2.7; D.2.11"]"http://arxiv.org/pdf/2406.1030…"http://arxiv.org/abs/2406.1030…
"Parrot: Efficient Serving of L…["Chaofan Lin", "Zhenhua Han", … "Lili Qiu"]"The rise of large language mod…2024-05-30 09:46:36"cs.LG"["cs.LG", "cs.AI"]"http://arxiv.org/pdf/2405.1988…"http://arxiv.org/abs/2405.1988…
"A Survey of Large Language Mod…["Zibin Zheng", "Kaiwen Ning", … "Jiachi Chen"]"General large language models …2023-11-17 07:55:16"cs.SE"["cs.SE"]"http://arxiv.org/pdf/2311.1037…"http://arxiv.org/abs/2311.1037…
"A Survey of Large Language Mod…["Wenbo Shang", "Xin Huang"]"A graph is a fundamental data …2024-04-23 07:39:24"cs.CL"["cs.CL", "cs.AI", "cs.DB"]"http://arxiv.org/pdf/2404.1480…"http://arxiv.org/abs/2404.1480…
"TEST: Text Prototype Aligned E…["Chenxi Sun", "Hongyan Li", … "Shenda Hong"]"This work summarizes two ways …2023-08-16 09:16:02"cs.CL"["cs.CL", "cs.AI"]"http://arxiv.org/pdf/2308.0824…"http://arxiv.org/abs/2308.0824…
" ], "text/plain": [ "shape: (5, 8)\n", - "┌────────────┬────────────┬────────────┬───────────┬────────────┬──────────┬───────────┬───────────┐\n", - "│ title ┆ authors ┆ summary ┆ published ┆ primary_ca ┆ categori ┆ pdf_url ┆ entry_id │\n", - "│ --- ┆ --- ┆ --- ┆ --- ┆ tegory ┆ es ┆ --- ┆ --- │\n", - "│ str ┆ list[str] ┆ str ┆ datetime[ ┆ --- ┆ --- ┆ str ┆ str │\n", - "│ ┆ ┆ ┆ μs] ┆ str ┆ list[str ┆ ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ] ┆ ┆ │\n", - "╞════════════╪════════════╪════════════╪═══════════╪════════════╪══════════╪═══════════╪═══════════╡\n", - "│ A Survey ┆ [\"Zibin ┆ General ┆ 2023-11-1 ┆ cs.SE ┆ [\"cs.SE\" ┆ http://ar ┆ http://ar │\n", - "│ of Large ┆ Zheng\", ┆ large ┆ 7 ┆ ┆ ] ┆ xiv.org/p ┆ xiv.org/a │\n", - "│ Language ┆ \"Kaiwen ┆ language ┆ 07:55:16 ┆ ┆ ┆ df/2311.1 ┆ bs/2311.1 │\n", - "│ Model… ┆ Ning\", …… ┆ models (L… ┆ ┆ ┆ ┆ 0372v… ┆ 0372v… │\n", - "│ TEST: Text ┆ [\"Chenxi ┆ This work ┆ 2023-08-1 ┆ cs.CL ┆ [\"cs.CL\" ┆ http://ar ┆ http://ar │\n", - "│ Prototype ┆ Sun\", ┆ summarizes ┆ 6 ┆ ┆ , ┆ xiv.org/p ┆ xiv.org/a │\n", - "│ Aligned ┆ \"Hongyan ┆ two ways ┆ 09:16:02 ┆ ┆ \"cs.AI\"] ┆ df/2308.0 ┆ bs/2308.0 │\n", - "│ Emb… ┆ Li\", … \"… ┆ to… ┆ ┆ ┆ ┆ 8241v… ┆ 8241v… │\n", - "│ Benchmarki ┆ [\"Fanghua ┆ The prolif ┆ 2024-01-2 ┆ cs.CL ┆ [\"cs.CL\" ┆ http://ar ┆ http://ar │\n", - "│ ng LLMs ┆ Ye\", ┆ eration of ┆ 3 ┆ ┆ ] ┆ xiv.org/p ┆ xiv.org/a │\n", - "│ via Uncert ┆ \"Mingming ┆ open-sourc ┆ 14:29:17 ┆ ┆ ┆ df/2401.1 ┆ bs/2401.1 │\n", - "│ aint… ┆ Yang\", … ┆ e… ┆ ┆ ┆ ┆ 2794v… ┆ 2794v… │\n", - "│ Is LLM-as- ┆ [\"Vyas ┆ Large ┆ 2024-02-2 ┆ cs.CL ┆ [\"cs.CL\" ┆ http://ar ┆ http://ar │\n", - "│ a-Judge ┆ Raina\", ┆ Language ┆ 1 ┆ ┆ ] ┆ xiv.org/p ┆ xiv.org/a │\n", - "│ Robust? ┆ \"Adian ┆ Models ┆ 18:55:20 ┆ ┆ ┆ df/2402.1 ┆ bs/2402.1 │\n", - "│ Invest… ┆ Liusie\", ┆ (LLMs) ┆ ┆ ┆ ┆ 4016v… ┆ 4016v… │\n", - "│ ┆ \"… ┆ are… ┆ ┆ ┆ ┆ ┆ │\n", - "│ MEGAnno+: ┆ [\"Hannah ┆ Large ┆ 2024-02-2 ┆ cs.CL ┆ [\"cs.CL\" ┆ http://ar ┆ http://ar │\n", - "│ A ┆ Kim\", ┆ language ┆ 8 ┆ ┆ , ┆ xiv.org/p ┆ xiv.org/a │\n", - "│ Human-LLM ┆ \"Kushan ┆ models ┆ 04:58:07 ┆ ┆ \"cs.HC\"] ┆ df/2402.1 ┆ bs/2402.1 │\n", - "│ Collaborat ┆ Mitra\", …… ┆ (LLMs) ┆ ┆ ┆ ┆ 8050v… ┆ 8050v… │\n", - "│ … ┆ ┆ can… ┆ ┆ ┆ ┆ ┆ │\n", - "└────────────┴────────────┴────────────┴───────────┴────────────┴──────────┴───────────┴───────────┘" + "┌────────────┬────────────┬────────────┬───────────┬───────────┬───────────┬───────────┬───────────┐\n", + "│ title ┆ authors ┆ summary ┆ published ┆ primary_c ┆ categorie ┆ pdf_url ┆ entry_id │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ategory ┆ s ┆ --- ┆ --- │\n", + "│ str ┆ list[str] ┆ str ┆ datetime[ ┆ --- ┆ --- ┆ str ┆ str │\n", + "│ ┆ ┆ ┆ μs] ┆ str ┆ list[str] ┆ ┆ │\n", + "╞════════════╪════════════╪════════════╪═══════════╪═══════════╪═══════════╪═══════════╪═══════════╡\n", + "│ Large ┆ [\"Irene ┆ Large ┆ 2024-06-1 ┆ cs.SE ┆ [\"cs.SE\", ┆ http://ar ┆ http://ar │\n", + "│ Language ┆ Weber\"] ┆ Language ┆ 3 ┆ ┆ \"cs.CL\", ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Models as ┆ ┆ Models ┆ 21:32:56 ┆ ┆ … \"A.1; ┆ df/2406.1 ┆ bs/2406.1 │\n", + "│ Softw… ┆ ┆ (LLMs) h… ┆ ┆ ┆ I.2… ┆ 030… ┆ 030… │\n", + "│ Parrot: ┆ [\"Chaofan ┆ The rise ┆ 2024-05-3 ┆ cs.LG ┆ [\"cs.LG\", ┆ http://ar ┆ http://ar │\n", + "│ Efficient ┆ Lin\", ┆ of large ┆ 0 ┆ ┆ \"cs.AI\"] ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Serving of ┆ \"Zhenhua ┆ language ┆ 09:46:36 ┆ ┆ ┆ df/2405.1 ┆ bs/2405.1 │\n", + "│ L… ┆ Han\",… ┆ mod… ┆ ┆ ┆ ┆ 988… ┆ 988… │\n", + "│ A Survey ┆ [\"Zibin ┆ General ┆ 2023-11-1 ┆ cs.SE ┆ [\"cs.SE\"] ┆ http://ar ┆ http://ar │\n", + "│ of Large ┆ Zheng\", ┆ large ┆ 7 ┆ ┆ ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Language ┆ \"Kaiwen ┆ language ┆ 07:55:16 ┆ ┆ ┆ df/2311.1 ┆ bs/2311.1 │\n", + "│ Mod… ┆ Ning\",… ┆ models … ┆ ┆ ┆ ┆ 037… ┆ 037… │\n", + "│ A Survey ┆ [\"Wenbo ┆ A graph is ┆ 2024-04-2 ┆ cs.CL ┆ [\"cs.CL\", ┆ http://ar ┆ http://ar │\n", + "│ of Large ┆ Shang\", ┆ a fundamen ┆ 3 ┆ ┆ \"cs.AI\", ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Language ┆ \"Xin ┆ tal data … ┆ 07:39:24 ┆ ┆ \"cs.DB\"] ┆ df/2404.1 ┆ bs/2404.1 │\n", + "│ Mod… ┆ Huang\"] ┆ ┆ ┆ ┆ ┆ 480… ┆ 480… │\n", + "│ TEST: Text ┆ [\"Chenxi ┆ This work ┆ 2023-08-1 ┆ cs.CL ┆ [\"cs.CL\", ┆ http://ar ┆ http://ar │\n", + "│ Prototype ┆ Sun\", ┆ summarizes ┆ 6 ┆ ┆ \"cs.AI\"] ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Aligned E… ┆ \"Hongyan ┆ two ways … ┆ 09:16:02 ┆ ┆ ┆ df/2308.0 ┆ bs/2308.0 │\n", + "│ ┆ Li\", …… ┆ ┆ ┆ ┆ ┆ 824… ┆ 824… │\n", + "└────────────┴────────────┴────────────┴───────────┴───────────┴───────────┴───────────┴───────────┘" ] }, "execution_count": 4, @@ -137,7 +135,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Loading the data in `haystack`" + "Saving the data in a temporary file." ] }, { @@ -146,7 +144,23 @@ "metadata": {}, "outputs": [], "source": [ - "from dataframes_haystack.components.converters.polars import PolarsDataFrameConverter" + "import tempfile\n", + "\n", + "# create a temporary file\n", + "temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=\".parquet\")\n", + "\n", + "# write the dataframe to the temporary file\n", + "with open(temp_file.name, \"w\") as f:\n", + " df.write_parquet(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading the data in `haystack`\n", + "\n", + "We can read the data using a `FileToPolarsDataFrame` and convert the rows into `Document`s using a `PolarsDataFrameConverter` component." ] }, { @@ -154,6 +168,111 @@ "execution_count": 6, "metadata": {}, "outputs": [], + "source": [ + "from dataframes_haystack.components.converters.polars import FileToPolarsDataFrame, PolarsDataFrameConverter" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "file_to_polars = FileToPolarsDataFrame(file_format=\"parquet\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "output_dataframe = file_to_polars.run(file_paths=[temp_file.name])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['dataframe'])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# the output_dataframe is a dictionary with a dataframe key\n", + "output_dataframe.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "shape: (5, 8)
titleauthorssummarypublishedprimary_categorycategoriespdf_urlentry_id
strlist[str]strdatetime[μs]strlist[str]strstr
"Large Language Models as Softw…["Irene Weber"]"Large Language Models (LLMs) h…2024-06-13 21:32:56"cs.SE"["cs.SE", "cs.CL", … "A.1; I.2.7; D.2.11"]"http://arxiv.org/pdf/2406.1030…"http://arxiv.org/abs/2406.1030…
"Parrot: Efficient Serving of L…["Chaofan Lin", "Zhenhua Han", … "Lili Qiu"]"The rise of large language mod…2024-05-30 09:46:36"cs.LG"["cs.LG", "cs.AI"]"http://arxiv.org/pdf/2405.1988…"http://arxiv.org/abs/2405.1988…
"A Survey of Large Language Mod…["Zibin Zheng", "Kaiwen Ning", … "Jiachi Chen"]"General large language models …2023-11-17 07:55:16"cs.SE"["cs.SE"]"http://arxiv.org/pdf/2311.1037…"http://arxiv.org/abs/2311.1037…
"A Survey of Large Language Mod…["Wenbo Shang", "Xin Huang"]"A graph is a fundamental data …2024-04-23 07:39:24"cs.CL"["cs.CL", "cs.AI", "cs.DB"]"http://arxiv.org/pdf/2404.1480…"http://arxiv.org/abs/2404.1480…
"TEST: Text Prototype Aligned E…["Chenxi Sun", "Hongyan Li", … "Shenda Hong"]"This work summarizes two ways …2023-08-16 09:16:02"cs.CL"["cs.CL", "cs.AI"]"http://arxiv.org/pdf/2308.0824…"http://arxiv.org/abs/2308.0824…
" + ], + "text/plain": [ + "shape: (5, 8)\n", + "┌────────────┬────────────┬────────────┬───────────┬───────────┬───────────┬───────────┬───────────┐\n", + "│ title ┆ authors ┆ summary ┆ published ┆ primary_c ┆ categorie ┆ pdf_url ┆ entry_id │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ategory ┆ s ┆ --- ┆ --- │\n", + "│ str ┆ list[str] ┆ str ┆ datetime[ ┆ --- ┆ --- ┆ str ┆ str │\n", + "│ ┆ ┆ ┆ μs] ┆ str ┆ list[str] ┆ ┆ │\n", + "╞════════════╪════════════╪════════════╪═══════════╪═══════════╪═══════════╪═══════════╪═══════════╡\n", + "│ Large ┆ [\"Irene ┆ Large ┆ 2024-06-1 ┆ cs.SE ┆ [\"cs.SE\", ┆ http://ar ┆ http://ar │\n", + "│ Language ┆ Weber\"] ┆ Language ┆ 3 ┆ ┆ \"cs.CL\", ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Models as ┆ ┆ Models ┆ 21:32:56 ┆ ┆ … \"A.1; ┆ df/2406.1 ┆ bs/2406.1 │\n", + "│ Softw… ┆ ┆ (LLMs) h… ┆ ┆ ┆ I.2… ┆ 030… ┆ 030… │\n", + "│ Parrot: ┆ [\"Chaofan ┆ The rise ┆ 2024-05-3 ┆ cs.LG ┆ [\"cs.LG\", ┆ http://ar ┆ http://ar │\n", + "│ Efficient ┆ Lin\", ┆ of large ┆ 0 ┆ ┆ \"cs.AI\"] ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Serving of ┆ \"Zhenhua ┆ language ┆ 09:46:36 ┆ ┆ ┆ df/2405.1 ┆ bs/2405.1 │\n", + "│ L… ┆ Han\",… ┆ mod… ┆ ┆ ┆ ┆ 988… ┆ 988… │\n", + "│ A Survey ┆ [\"Zibin ┆ General ┆ 2023-11-1 ┆ cs.SE ┆ [\"cs.SE\"] ┆ http://ar ┆ http://ar │\n", + "│ of Large ┆ Zheng\", ┆ large ┆ 7 ┆ ┆ ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Language ┆ \"Kaiwen ┆ language ┆ 07:55:16 ┆ ┆ ┆ df/2311.1 ┆ bs/2311.1 │\n", + "│ Mod… ┆ Ning\",… ┆ models … ┆ ┆ ┆ ┆ 037… ┆ 037… │\n", + "│ A Survey ┆ [\"Wenbo ┆ A graph is ┆ 2024-04-2 ┆ cs.CL ┆ [\"cs.CL\", ┆ http://ar ┆ http://ar │\n", + "│ of Large ┆ Shang\", ┆ a fundamen ┆ 3 ┆ ┆ \"cs.AI\", ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Language ┆ \"Xin ┆ tal data … ┆ 07:39:24 ┆ ┆ \"cs.DB\"] ┆ df/2404.1 ┆ bs/2404.1 │\n", + "│ Mod… ┆ Huang\"] ┆ ┆ ┆ ┆ ┆ 480… ┆ 480… │\n", + "│ TEST: Text ┆ [\"Chenxi ┆ This work ┆ 2023-08-1 ┆ cs.CL ┆ [\"cs.CL\", ┆ http://ar ┆ http://ar │\n", + "│ Prototype ┆ Sun\", ┆ summarizes ┆ 6 ┆ ┆ \"cs.AI\"] ┆ xiv.org/p ┆ xiv.org/a │\n", + "│ Aligned E… ┆ \"Hongyan ┆ two ways … ┆ 09:16:02 ┆ ┆ ┆ df/2308.0 ┆ bs/2308.0 │\n", + "│ ┆ Li\", …… ┆ ┆ ┆ ┆ ┆ 824… ┆ 824… │\n", + "└────────────┴────────────┴────────────┴───────────┴───────────┴───────────┴───────────┴───────────┘" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output_dataframe[\"dataframe\"].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], "source": [ "polars_converter = PolarsDataFrameConverter(\n", " content_column=\"summary\",\n", @@ -163,20 +282,22 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'documents': [Document(id=2702154691a919112848f4dde5e22d7ef687c3ef52b259fa35e4688bda71ecba, content: 'General large language models (LLMs), represented by ChatGPT, have\n", + "{'documents': [Document(id=c4fbde87ad579d0c39ebe835c996dc1b6fee182aca86b1ce71496f1fa970180a, content: 'Large Language Models (LLMs) have become widely adopted recently. Research\n", + " explores their use both a...', meta: {'title': 'Large Language Models as Software Components: A Taxonomy for LLM-Integrated Applications', 'authors': ['Irene Weber'], 'published': datetime.datetime(2024, 6, 13, 21, 32, 56), 'primary_category': 'cs.SE', 'categories': ['cs.SE', 'cs.CL', 'cs.LG', 'A.1; I.2.7; D.2.11'], 'pdf_url': 'http://arxiv.org/pdf/2406.10300v1'}),\n", + " Document(id=3f45abd46d3ffddf3178166b14c95f9efc5926765cd1f874f3ed89c4cfa14152, content: 'The rise of large language models (LLMs) has enabled LLM-based applications\n", + " (a.k.a. AI agents or co-...', meta: {'title': 'Parrot: Efficient Serving of LLM-based Applications with Semantic Variable', 'authors': ['Chaofan Lin', 'Zhenhua Han', 'Chengruidong Zhang', 'Yuqing Yang', 'Fan Yang', 'Chen Chen', 'Lili Qiu'], 'published': datetime.datetime(2024, 5, 30, 9, 46, 36), 'primary_category': 'cs.LG', 'categories': ['cs.LG', 'cs.AI'], 'pdf_url': 'http://arxiv.org/pdf/2405.19888v1'}),\n", + " Document(id=2702154691a919112848f4dde5e22d7ef687c3ef52b259fa35e4688bda71ecba, content: 'General large language models (LLMs), represented by ChatGPT, have\n", " demonstrated significant potentia...', meta: {'title': 'A Survey of Large Language Models for Code: Evolution, Benchmarking, and Future Trends', 'authors': ['Zibin Zheng', 'Kaiwen Ning', 'Yanlin Wang', 'Jingwen Zhang', 'Dewu Zheng', 'Mingxi Ye', 'Jiachi Chen'], 'published': datetime.datetime(2023, 11, 17, 7, 55, 16), 'primary_category': 'cs.SE', 'categories': ['cs.SE'], 'pdf_url': 'http://arxiv.org/pdf/2311.10372v2'}),\n", + " Document(id=e12a87c3ad0193f1df442ee76eeb12eea9d24af4a80b6ea76c9af0f1d4ee8675, content: 'A graph is a fundamental data model to represent various entities and their\n", + " complex relationships in...', meta: {'title': 'A Survey of Large Language Models on Generative Graph Analytics: Query, Learning, and Applications', 'authors': ['Wenbo Shang', 'Xin Huang'], 'published': datetime.datetime(2024, 4, 23, 7, 39, 24), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI', 'cs.DB'], 'pdf_url': 'http://arxiv.org/pdf/2404.14809v1'}),\n", " Document(id=35967fa7acbb9084391de4d3d211ca12da8a3688e599b3039f077735fc946ea7, content: 'This work summarizes two ways to accomplish Time-Series (TS) tasks in today's\n", " Large Language Model (...', meta: {'title': \"TEST: Text Prototype Aligned Embedding to Activate LLM's Ability for Time Series\", 'authors': ['Chenxi Sun', 'Hongyan Li', 'Yaliang Li', 'Shenda Hong'], 'published': datetime.datetime(2023, 8, 16, 9, 16, 2), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI'], 'pdf_url': 'http://arxiv.org/pdf/2308.08241v2'}),\n", - " Document(id=c53999a2cfb14491a38daf3025c7d773d9ffdfa34326be06a4ffdc8f5668435f, content: 'The proliferation of open-source Large Language Models (LLMs) from various\n", - " institutions has highligh...', meta: {'title': 'Benchmarking LLMs via Uncertainty Quantification', 'authors': ['Fanghua Ye', 'Mingming Yang', 'Jianhui Pang', 'Longyue Wang', 'Derek F. Wong', 'Emine Yilmaz', 'Shuming Shi', 'Zhaopeng Tu'], 'published': datetime.datetime(2024, 1, 23, 14, 29, 17), 'primary_category': 'cs.CL', 'categories': ['cs.CL'], 'pdf_url': 'http://arxiv.org/pdf/2401.12794v1'}),\n", - " Document(id=f6dd52359666e3776138a991ad012bcb2eb735c4f31c86634c82884cd06a14a0, content: 'Large Language Models (LLMs) are powerful zero-shot assessors and are\n", - " increasingly used in real-worl...', meta: {'title': 'Is LLM-as-a-Judge Robust? Investigating Universal Adversarial Attacks on Zero-shot LLM Assessment', 'authors': ['Vyas Raina', 'Adian Liusie', 'Mark Gales'], 'published': datetime.datetime(2024, 2, 21, 18, 55, 20), 'primary_category': 'cs.CL', 'categories': ['cs.CL'], 'pdf_url': 'http://arxiv.org/pdf/2402.14016v1'}),\n", " Document(id=745d6697c6e2fb135cfe008832c95dd7f00a6982dcfa2dfaab092bd7be554fd0, content: 'Large language models (LLMs) can label data faster and cheaper than humans\n", " for various NLP tasks. De...', meta: {'title': 'MEGAnno+: A Human-LLM Collaborative Annotation System', 'authors': ['Hannah Kim', 'Kushan Mitra', 'Rafael Li Chen', 'Sajjadur Rahman', 'Dan Zhang'], 'published': datetime.datetime(2024, 2, 28, 4, 58, 7), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.HC'], 'pdf_url': 'http://arxiv.org/pdf/2402.18050v1'}),\n", " Document(id=0116aacda54b63b3313e3ac349901d51696934b90d870c6d47c46285693bc25b, content: 'Large Language Model (LLM) assistants, such as ChatGPT, have emerged as\n", @@ -186,18 +307,16 @@ " Document(id=f5b686fa9275fb823ee0d379097104617336a4e148ed5d099b88b0daef6cf9dd, content: 'Misinformation such as fake news and rumors is a serious threat on\n", " information ecosystems and public...', meta: {'title': 'Combating Misinformation in the Age of LLMs: Opportunities and Challenges', 'authors': ['Canyu Chen', 'Kai Shu'], 'published': datetime.datetime(2023, 11, 9, 0, 5, 27), 'primary_category': 'cs.CY', 'categories': ['cs.CY'], 'pdf_url': 'http://arxiv.org/pdf/2311.05656v1'}),\n", " Document(id=a4ff52b2707b844c90ab03ea149e2b0077066c04fa29ee9a81262aa91e6f6810, content: 'Recent advancements in multimodal large language models (MLLMs) have achieved\n", - " significant multimodal...', meta: {'title': 'Towards Vision Enhancing LLMs: Empowering Multimodal Knowledge Storage and Sharing in LLMs', 'authors': ['Yunxin Li', 'Baotian Hu', 'Wei Wang', 'Xiaochun Cao', 'Min Zhang'], 'published': datetime.datetime(2023, 11, 27, 12, 29, 20), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI', 'cs.CV'], 'pdf_url': 'http://arxiv.org/pdf/2311.15759v1'}),\n", - " Document(id=2abe90bfff06f78bfe430cfc58c6372bdd0b934442b2152f9413e470a9eacd19, content: 'Recently, considerable efforts have been directed towards compressing Large\n", - " Language Models (LLMs), ...', meta: {'title': 'Any-Precision LLM: Low-Cost Deployment of Multiple, Different-Sized LLMs', 'authors': ['Yeonhong Park', 'Jake Hyun', 'SangLyul Cho', 'Bonggeun Sim', 'Jae W. Lee'], 'published': datetime.datetime(2024, 2, 16, 9, 6, 6), 'primary_category': 'cs.LG', 'categories': ['cs.LG'], 'pdf_url': 'http://arxiv.org/pdf/2402.10517v1'})]}" + " significant multimodal...', meta: {'title': 'Towards Vision Enhancing LLMs: Empowering Multimodal Knowledge Storage and Sharing in LLMs', 'authors': ['Yunxin Li', 'Baotian Hu', 'Wei Wang', 'Xiaochun Cao', 'Min Zhang'], 'published': datetime.datetime(2023, 11, 27, 12, 29, 20), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI', 'cs.CV'], 'pdf_url': 'http://arxiv.org/pdf/2311.15759v1'})]}" ] }, - "execution_count": 7, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "polars_converter.run(dataframe=df)" + "polars_converter.run(dataframe=output_dataframe[\"dataframe\"])" ] }, { @@ -209,20 +328,22 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'documents': [Document(id=http://arxiv.org/abs/2311.10372v2, content: 'General large language models (LLMs), represented by ChatGPT, have\n", + "{'documents': [Document(id=http://arxiv.org/abs/2406.10300v1, content: 'Large Language Models (LLMs) have become widely adopted recently. Research\n", + " explores their use both a...', meta: {'title': 'Large Language Models as Software Components: A Taxonomy for LLM-Integrated Applications', 'authors': ['Irene Weber'], 'published': datetime.datetime(2024, 6, 13, 21, 32, 56), 'primary_category': 'cs.SE', 'categories': ['cs.SE', 'cs.CL', 'cs.LG', 'A.1; I.2.7; D.2.11'], 'pdf_url': 'http://arxiv.org/pdf/2406.10300v1'}),\n", + " Document(id=http://arxiv.org/abs/2405.19888v1, content: 'The rise of large language models (LLMs) has enabled LLM-based applications\n", + " (a.k.a. AI agents or co-...', meta: {'title': 'Parrot: Efficient Serving of LLM-based Applications with Semantic Variable', 'authors': ['Chaofan Lin', 'Zhenhua Han', 'Chengruidong Zhang', 'Yuqing Yang', 'Fan Yang', 'Chen Chen', 'Lili Qiu'], 'published': datetime.datetime(2024, 5, 30, 9, 46, 36), 'primary_category': 'cs.LG', 'categories': ['cs.LG', 'cs.AI'], 'pdf_url': 'http://arxiv.org/pdf/2405.19888v1'}),\n", + " Document(id=http://arxiv.org/abs/2311.10372v2, content: 'General large language models (LLMs), represented by ChatGPT, have\n", " demonstrated significant potentia...', meta: {'title': 'A Survey of Large Language Models for Code: Evolution, Benchmarking, and Future Trends', 'authors': ['Zibin Zheng', 'Kaiwen Ning', 'Yanlin Wang', 'Jingwen Zhang', 'Dewu Zheng', 'Mingxi Ye', 'Jiachi Chen'], 'published': datetime.datetime(2023, 11, 17, 7, 55, 16), 'primary_category': 'cs.SE', 'categories': ['cs.SE'], 'pdf_url': 'http://arxiv.org/pdf/2311.10372v2'}),\n", + " Document(id=http://arxiv.org/abs/2404.14809v1, content: 'A graph is a fundamental data model to represent various entities and their\n", + " complex relationships in...', meta: {'title': 'A Survey of Large Language Models on Generative Graph Analytics: Query, Learning, and Applications', 'authors': ['Wenbo Shang', 'Xin Huang'], 'published': datetime.datetime(2024, 4, 23, 7, 39, 24), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI', 'cs.DB'], 'pdf_url': 'http://arxiv.org/pdf/2404.14809v1'}),\n", " Document(id=http://arxiv.org/abs/2308.08241v2, content: 'This work summarizes two ways to accomplish Time-Series (TS) tasks in today's\n", " Large Language Model (...', meta: {'title': \"TEST: Text Prototype Aligned Embedding to Activate LLM's Ability for Time Series\", 'authors': ['Chenxi Sun', 'Hongyan Li', 'Yaliang Li', 'Shenda Hong'], 'published': datetime.datetime(2023, 8, 16, 9, 16, 2), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI'], 'pdf_url': 'http://arxiv.org/pdf/2308.08241v2'}),\n", - " Document(id=http://arxiv.org/abs/2401.12794v1, content: 'The proliferation of open-source Large Language Models (LLMs) from various\n", - " institutions has highligh...', meta: {'title': 'Benchmarking LLMs via Uncertainty Quantification', 'authors': ['Fanghua Ye', 'Mingming Yang', 'Jianhui Pang', 'Longyue Wang', 'Derek F. Wong', 'Emine Yilmaz', 'Shuming Shi', 'Zhaopeng Tu'], 'published': datetime.datetime(2024, 1, 23, 14, 29, 17), 'primary_category': 'cs.CL', 'categories': ['cs.CL'], 'pdf_url': 'http://arxiv.org/pdf/2401.12794v1'}),\n", - " Document(id=http://arxiv.org/abs/2402.14016v1, content: 'Large Language Models (LLMs) are powerful zero-shot assessors and are\n", - " increasingly used in real-worl...', meta: {'title': 'Is LLM-as-a-Judge Robust? Investigating Universal Adversarial Attacks on Zero-shot LLM Assessment', 'authors': ['Vyas Raina', 'Adian Liusie', 'Mark Gales'], 'published': datetime.datetime(2024, 2, 21, 18, 55, 20), 'primary_category': 'cs.CL', 'categories': ['cs.CL'], 'pdf_url': 'http://arxiv.org/pdf/2402.14016v1'}),\n", " Document(id=http://arxiv.org/abs/2402.18050v1, content: 'Large language models (LLMs) can label data faster and cheaper than humans\n", " for various NLP tasks. De...', meta: {'title': 'MEGAnno+: A Human-LLM Collaborative Annotation System', 'authors': ['Hannah Kim', 'Kushan Mitra', 'Rafael Li Chen', 'Sajjadur Rahman', 'Dan Zhang'], 'published': datetime.datetime(2024, 2, 28, 4, 58, 7), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.HC'], 'pdf_url': 'http://arxiv.org/pdf/2402.18050v1'}),\n", " Document(id=http://arxiv.org/abs/2402.08030v1, content: 'Large Language Model (LLM) assistants, such as ChatGPT, have emerged as\n", @@ -232,12 +353,10 @@ " Document(id=http://arxiv.org/abs/2311.05656v1, content: 'Misinformation such as fake news and rumors is a serious threat on\n", " information ecosystems and public...', meta: {'title': 'Combating Misinformation in the Age of LLMs: Opportunities and Challenges', 'authors': ['Canyu Chen', 'Kai Shu'], 'published': datetime.datetime(2023, 11, 9, 0, 5, 27), 'primary_category': 'cs.CY', 'categories': ['cs.CY'], 'pdf_url': 'http://arxiv.org/pdf/2311.05656v1'}),\n", " Document(id=http://arxiv.org/abs/2311.15759v1, content: 'Recent advancements in multimodal large language models (MLLMs) have achieved\n", - " significant multimodal...', meta: {'title': 'Towards Vision Enhancing LLMs: Empowering Multimodal Knowledge Storage and Sharing in LLMs', 'authors': ['Yunxin Li', 'Baotian Hu', 'Wei Wang', 'Xiaochun Cao', 'Min Zhang'], 'published': datetime.datetime(2023, 11, 27, 12, 29, 20), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI', 'cs.CV'], 'pdf_url': 'http://arxiv.org/pdf/2311.15759v1'}),\n", - " Document(id=http://arxiv.org/abs/2402.10517v1, content: 'Recently, considerable efforts have been directed towards compressing Large\n", - " Language Models (LLMs), ...', meta: {'title': 'Any-Precision LLM: Low-Cost Deployment of Multiple, Different-Sized LLMs', 'authors': ['Yeonhong Park', 'Jake Hyun', 'SangLyul Cho', 'Bonggeun Sim', 'Jae W. Lee'], 'published': datetime.datetime(2024, 2, 16, 9, 6, 6), 'primary_category': 'cs.LG', 'categories': ['cs.LG'], 'pdf_url': 'http://arxiv.org/pdf/2402.10517v1'})]}" + " significant multimodal...', meta: {'title': 'Towards Vision Enhancing LLMs: Empowering Multimodal Knowledge Storage and Sharing in LLMs', 'authors': ['Yunxin Li', 'Baotian Hu', 'Wei Wang', 'Xiaochun Cao', 'Min Zhang'], 'published': datetime.datetime(2023, 11, 27, 12, 29, 20), 'primary_category': 'cs.CL', 'categories': ['cs.CL', 'cs.AI', 'cs.CV'], 'pdf_url': 'http://arxiv.org/pdf/2311.15759v1'})]}" ] }, - "execution_count": 8, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -248,19 +367,19 @@ " meta_columns=[\"title\", \"authors\", \"published\", \"primary_category\", \"categories\", \"pdf_url\"],\n", " index_column=\"entry_id\",\n", ")\n", - "polars_converter.run(dataframe=df)" + "polars_converter.run(dataframe=output_dataframe[\"dataframe\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Using the `PolarsDataFrameConverter` in a pipeline" + "### Using the components in a pipeline" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -271,12 +390,12 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { - "image/png": "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Ll26xM8//1zRzRBCglkIgNTUVJo1a8ZHH31U0U0RQoJZCIC8vDzy8m754G0hHhoJZnFfMjIymDhxIqGhodSvX5+IiAjmzZtHYWEhAAkJCTz33HP4+vri5eVF//792b9/v7Z8dHQ0rq6uTJkyhcGDB9OwYUOCgoKYMGEC167931Oj+vfvj6urK99//722nFKKli1b4urqSnR0NADp6em88cYbNGnShPr169O1a1d++umnUnV16NCBMWPG0LhxY+rXr8+GDRto1aoVADExMbi6uuLq6kpqaqq27E8//UTnzp2pX78+AQEBvPHGG1y8eFF7v0GDBri6ujJr1ixCQkKoW7cuc+fOfaDrXlRdEszinmVmZtKrVy+WLFlCXl4eYWFhXL58me3bt2NjY8Pp06fp06cPv/zyCw0bNiQ4OJg///yTAQMGcPjwYbOyFi1axKlTpxgwYAAODg58+eWXTJkyBYCRI0cCmAXzrl27SEpKol27doSEhHDp0iX69OnDt99+S82aNQkLCyMuLo4RI0bw9ddfm9VlMBj47bff6NevHz169KBTp0706tULgJo1azJw4EAGDhxI9erVAfj8888ZMWIEJ06coGXLljg6OvLtt9/Sr18/rl69alb2/Pnzad++PR07duTZZ599QGteVHW3vbucEDczd+5cTp06Rbdu3fjmm29wcHDg+vXrpKenA/DRRx9x+fJlhg8fzrx58wD4+OOPmTlzJrNmzWLNmjVaWY0bN2bXrl1Ur16djIwMgoOD+f7775k3bx79+vXDw8ODPXv2cObMGby8vLSwffnll83aMnz4cObOnYtOp8NgMNClSxc++OADnn/+ea0ua2trNm7cSGBgoDbtww8/ZNu2bXh7e/Pll19q0y9cuMD06dNxdnZm586d+Pn5oZRizJgxrFmzhm+++YaxY8dq88+ePZvhw4c/0PUuqj4JZnHPtm7dCsA///lPHBwcAHBwcMDHxweKe7UAo0aN0pZ5/vnnmTlzJnv37jUrq06dOloPtXbt2vj4+HD8+HHOnj2Ll5cXw4YN48MPP2T16tUMHTqUrVu34unpyaOPPgrAli1bALh69SrTpk3TynV2diYzM5NTp05p0wIDA81C+VZ+++038vLycHd356uvvtKmZ2dnA5Tq+Q8cOPCOyhXiViSYxT07f/48AA0bNizz/YyMDADq1aunTatTpw4AOTk5tzzZZmdnB0B+fj4AQ4cOZe7cuXz//fdUq1aN/Px8Ro4cibW1tVlbSvbCSzL15gGcnJzu+jMmJyezcOHCMsst6W7KFuJmJJjFPatZsya5ubmcO3eO2rVrl3q/du3apKWlkZ6ejouLCwDnzp2D4gAzhe+dcHNzo3///qxdu5aPP/4YBwcHXnzxRe39GjVqkJuby/79+2nSpEmZZWRmZt62HqPRaPa6Ro0aADzxxBMsXbr0jtsrxP2Qk3/innXo0AGKx3dNvd/8/HyOHj0KQMeOHQHMhgAWL14MQKdOne66PtOQSFZWFk8++aQW9gDt27cHYM6cOVovu6CgoNRQw804OzsDcObMGa1nnZ+fr5W7detWs7KOHTtGTk7OXX8GIe6EBLO4ZxMmTMDJyYkNGzYQEhJC7969CQ4O5oUXXqCwsJDx48fj6OjIokWL6Nq1K926dePTTz/F3t6ef/7zn3ddX0REBM2bNwdg9OjRZu+98847ODo6snbtWpo3b06fPn0ICgri+eefJzc397Zlu7m50bBhQ7KysmjdujUdO3Zk9erVBAQE8Oyzz3L9+nV69+5N165d6dixI927dzf7wRGiPEkwi3sWEBDAL7/8Qp8+fcjLy+PYsWM4OTkxePBgCgsLadKkCT///DNdu3blxIkTJCQk0KlTJzZu3EhISMg91fnSSy/RsWNHmjVrZjY9MDCQLVu20KtXL3Jycjhy5AhOTk489dRTpYYnbmbJkiWEhoaSnp7O2bNnteGZBQsW8O677+Lr60tsbCwpKSl06NCB4ODge/oMQtyO7lZvLl68+P2goKD3bvwSCCGEuDdZWVns3Lkz7aWXXvK82TzSYxZCCAsjwSyEEBZGglkIISyMBLMQQlgYCWYhhLAwEsxCCGFhJJiFEMLCSDALIYSFkWCuIi5duoSrqyuRkZEV3RQhxH2SYLYghYWFBAcHU69ePXx8fGjfvj3//e9/72jZqKgobGxsCAoKKtc2HTt2DH9/f+rXr0+LFi0YPny49iinO7Fv3767unH8+++/rz3aqeSfJdyXIi4ujuHDh9OkSRPc3d1p3779Hf9z74flbte3sExy208LEh8fT1paGj/88AM+Pj7s37+f8ePHU6dOnds+pujYsWMEBgZib29/1/UWFRVp9zW+0ZEjR9DpdPz666+kp6ezcOFCevTowfr167U7r93KqlWrsLG5890sJiaGxx9/vNRNjjw8PErNazQasbJ6OH2LP/74g2effZYePXqwYsUKXFxcOH369EOr/1ZKbr+7Xd+3KktUnIrfq4QmKioKDw8PevTogb+/Py+88AI+Pj7ExMQAsHnzZjp16oSHhwdt2rThl19+0ZY9evQoLVq00F5fu3aNyZMnExAQgKenJxEREWzatAmAadOm8dhjjzF27FiaNm3K999/T2pqKoMHD8bHx4eQkBA2bNgAxQ8wDQkJITQ0lO7du2t3XFuwYIFW15IlS2jVqhX169cnKCiIDz/8EIDx48fz7bffsnnzZry9vdm4cSMU33R+yJAh+Pj44OvrS8+ePUlISNDq69WrF/7+/mZ/Tk5OdO/enXHjxjFw4EB8fX1JSUm5Zf2vvfYar7zyCv3798fHx4fQ0FC++eYbnnnmGTw8PGjdujV6vV77HN9//z0dOnTQjg5MD3K9cuUKI0eO5PHHH+err76iQ4cONGvWjD59+mjL3mzbXLx4keDgYL766ivatWuHh4cH/fv359q1a3zyySelbn/6zDPPaI/BOnjwII8//jienp74+fkxY8YMKH5KS+3atZk9ezZdunShdevWt1zfZ8+e1R4+6+3tzZAhQ8jKyrrpviAqngSzBYmKiiI8PByAy5cvs3DhQu2Zehs3buT1119nxowZnDp1isGDBzN69GjtnsDHjh3TbomplGLo0KHExcWxa9cuTp48SUFBAZcvX4bih5HGxcXx6quvEhsby6BBg7QHnx44cIDPP/+cli1bauWWvBNctWrV6NChA8nJyQDMmzePTz/9lCVLlnDmzBk6duyovTdjxgysra35+eefSUlJoX///qSnp9OvXz8aN26MwWBgx44dREZGYmNjw9mzZ0lPT2f8+PF4e3vj7e3N/Pnzobh3HB8fT1xcHF9++SV6vR5fX99b1n/t2jV2797Nu+++y5EjR3B1deXf//43EydOJDIykuvXr7Ny5UoAFi5cyMSJE5k0aRIJCQkMGzaM999/H4CVK1eSl5fHrFmzytxut9o29vb2pKWlsXfvXtatW8fWrVv566+/2LFjBz179kSv12vPSNy9ezd79uxh1qxZHDhwgP79+9OxY0diYmJYuXIl8+fPJyUlhbi4OJRSpKens2PHDv7444+bru/MzEz69OlDbm4uv//+O5GRkRw5coTN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J01NTWrVqhWNHz+eioqK6HFbt24lLy8v0tDQoNatW9PEiRMpNzeXFAoFAaCVK1cqLT9gwADy9/cnIqLr16+Tnp4eHT9+nDw9PUlNTY0cHBwoLCyMQkNDycbGhvT09GjQoEGUl5en1M4333xDjo6OpKmpSS4uLrRs2TIqKysT2tXS0qKoqCjq3LkzaWpqkrOzMx05ckRY39bWlgAI/2xtbYmI6NGjRzR27FgyNjYmY2NjGjRoEN26dYte1NatW+nevXsvvN7169eFY25vb099+/YlAHT37l0iIqqsrKSFCxeSpaUlqaurk5eXF/34449KbZSWltLChQvJ3t6e1NXVqV27drR8+XKqqqqixYsXk4aGhtLyV65cIQB08uRJIiIaNGgQLViwgGbMmEH6+vqkp6dHb775JkVFRVFQUBBpaWmRvb097dy5U6md9PR0Gjx4sPAz1adPH7py5Yowf9CgQTR//nxavHgxmZmZkaGhIY0YMYIePHhARETbtm1TOicAaNu2bUREdPPmTQoMDCQdHR2ytramyZMnk0KhCGjq3yfGXgkiCiovLycvLy/S1tamJUuWUFhYGPn5+SkFs0wmI21tberUqROFh4fT+vXrydDQkHr37i38oi1dupQA0PDhw2n79u20evVq6t27N927d++5gxkAtWnTho4fP06RkZHk7u5OACggIIAuXrxI4eHhpKurS6NGjRLa+OSTT0hPT48WL15Mu3fvpiVLlpCenh6NHj1aqV0zMzPas2cP/f7779SnTx/S1tam/Px8IYyMjY1pyJAhdP78eSFAPvroI5JIJLRs2TLasmULBQQEUEFBwQsH7Ouvv04GBga0dOlSun///nOtk5iYSPr6+tS2bVtau3YtbdiwgczMzJSCedy4caSqqkpLly6l/fv306BBg0gikdCvv/5KRERVVVUUGBhIampqNHfuXNq5cyctXLhQOH7PG8wAaMaMGRQdHU3Lly8nAKSmpkYbNmygy5cv05AhQ0gqlVJiYiIREd29e5csLCyoR48etHXrVgoLC6OePXuSpqYmxcfHC+1KpVIaMWIEXb58mbZv307q6uo0b948IiLKzc2luXPnEgA6fvw4nT9/nnJzc4mIKCAggExNTWnz5s30xRdf0Ouvv05ExMHMWgYiCvriiy8IAJ05c0b45UxISFAK5nfffZf09PSUen07d+4k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", + "image/png": "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995Ty8nJyYFEInnmtSAiDB06FJ9//jmmTJmCEydOiCNYnvf6G3veHr8OaIJrKyMIgtx1AICoqCi563D16lWkpKSgV69e9xtUOGs0bjErgJmZGfLy8p65zfLly+Ho6IioqCixBfd460lG9guG2tEBK1euxLRp07B+/XoAeGbrsz62bt2K3NxcnD9/HtbW1gAAa2trpKWlNapcIyMj5Ofnw8XFpUH7rVixQmztPRqqp0+fxmeffYYrV67g/fffx+7du2FgYPDUcmSt5Gddi99++w2nTp3Crl27MH78eAB46ut+9DqgGc5bc1xb1F4HmadcC3rSQtZ8uMWsAN26dcOlS5ee+Quan5+Prl27iqFcWVmJhw8fin9e4pGgzs7OFpeVlpaivLwc3bp1kysLj/xp2lD5+fkwMzMTw0W27EXLkwkMDMQff/yB2NhYueWlpaXP3K9379547bXX8Nprr6Fr167i8sWLF8Pf3x/p6en49NNPnxnKqO0GcXJyQmRkJKqqqp64jezcPe986ujoyF0HNMN5a45rCwADBgyAiooKvvrqqzrHY4rBLWYF+Oijj7Bjxw707dsX77//PszNzbFnzx65bQICAvD9998jIiICJiYm+PLLL1FYWIjExERxTGuvXr2gpqaGuXPnYurUqSgvL8fMmTPh4eGBjRs3okOHDiguLsann34KVVVVJCQkvFB9AwICsGnTJixZsgT+/v7Yv38/oqOjIZVKUVBQINfH2xCffPIJjh07hqCgIMybNw/t27fH8ePHUV1djUOHDjW4vNOnT0NbW7tB+yxbtgxvvvkmevXqhSlTpkBVVRUbNmwQ17/yyivQ1NREaGgopk+fjvj4eKxatQoAkJCQAHt7ewBA3759sXv3bqxevRrGxsbo2bNnk583ExOTJr+2AODo6Ig5c+Zgw4YNGD58OF577TXk5ORg06ZNiI6Ohre39wuXzVirIBvH/Msvv5CPjw9paGiQg4MDLViwQG5URnFxMY0ePZq0tbXJ0tKSPvvsMzp8+DB17NiRTp8+LX5yHhERQR07diRDQ0MaMGAAERElJSWRn58faWhokLu7Ox04cICWLVtGhoaGVFlZSfScURkpKSl1RhcsWbKEjI2NycjIiCZOnEixsbHk5uZGy5YtI6odldGtWze5fTp37kwTJkyQWwaAli9fLj5PSUmhIUOGkLa2Nunq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", "text/plain": [ "" ] @@ -289,21 +408,23 @@ "document_store = InMemoryDocumentStore()\n", "\n", "indexing = Pipeline()\n", + "indexing.add_component(\"file_to_polars\", FileToPolarsDataFrame(file_format=\"parquet\"))\n", "indexing.add_component(\n", - " \"converter\",\n", + " \"dataframe_converter\",\n", " PolarsDataFrameConverter(\n", " content_column=\"summary\",\n", " meta_columns=[\"title\", \"authors\", \"published\", \"primary_category\", \"categories\", \"pdf_url\"],\n", " ),\n", ")\n", "indexing.add_component(\"writer\", DocumentWriter(document_store))\n", - "indexing.connect(\"converter\", \"writer\")\n", + "indexing.connect(\"file_to_polars\", \"dataframe_converter\")\n", + "indexing.connect(\"dataframe_converter\", \"writer\")\n", "indexing.show()" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -312,13 +433,33 @@ "{'writer': {'documents_written': 10}}" ] }, - "execution_count": 11, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "indexing.run({\"converter\": {\"dataframe\": df}})" + "indexing.run({\"file_to_polars\": {\"file_paths\": [temp_file.name]}})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Saving the data in a temporary file." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# Cleanup\n", + "# delete the temporary file\n", + "from pathlib import Path\n", + "\n", + "Path(temp_file.name).unlink()" ] }, { diff --git a/src/dataframes_haystack/components/converters/pandas.py b/src/dataframes_haystack/components/converters/pandas.py index 609a361..9f50d14 100644 --- a/src/dataframes_haystack/components/converters/pandas.py +++ b/src/dataframes_haystack/components/converters/pandas.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Optional, Union +from typing import Any, Dict, List, Literal, Optional, Union import pandas as pd from haystack import Document, component, logging @@ -6,6 +6,93 @@ logger = logging.getLogger(__name__) +FileFormat = Literal["csv", "fwf", "json", "html", "xml", "excel", "feather", "parquet", "orc", "pickle"] + + +@component +class FileToPandasDataFrame: + """ + Converts files to a pandas.DataFrame. + + Usage example: + ```python + from dataframes_haystack.components.converters.pandas import FileToPandasDataFrame + + converter = FileToPandasDataFrame() + results = converter.run(files=["file1.csv", "file2.csv"]) + df = results["dataframe"] + print(df.head()) + ``` + """ + + def __init__( + self, + file_format: FileFormat = "csv", + read_kwargs: Union[Dict[str, Any], None] = None, + columns_subset: Union[List[str], None] = None, + ): + """ + Create a FileToPandasDataFrame component. + + Please refer to the pandas documentation for more information on the supported readers and their parameters: https://pandas.pydata.org/docs/user_guide/io.html + + Args: + file_format: The format of the files to read. Supported formats are "csv", "fwf", "json", "html", "xml", + "excel", "feather", "parquet", "orc", and "pickle". + read_kwargs: Optional keyword arguments to pass to the pandas reader function. + columns_subset: Optional list of column names to select from the DataFrame after reading the file. + """ + self.file_format = file_format + self._reader_function = self._get_read_function() + self.read_kwargs = read_kwargs or {} + self.columns_subset = columns_subset + + def _get_read_function(self): + """Returns the function to read files based on the file format.""" + + file_format_mapping = { + "csv": pd.read_csv, + "fwf": pd.read_fwf, + "json": pd.read_json, + "html": pd.read_html, + "xml": pd.read_xml, + "excel": pd.read_excel, + "feather": pd.read_feather, + "parquet": pd.read_parquet, + "orc": pd.read_orc, + "pickle": pd.read_pickle, + "sql": pd.read_sql, + "gbq": pd.read_gbq, + } + reader_function = file_format_mapping.get(self.file_format) + if reader_function: + return reader_function + msg = f"Unsupported file format: {self.file_format}" + raise ValueError(msg) + + def _read_with_select(self, file_path: str) -> pd.DataFrame: + """Reads a file and selects a subset of columns, if provided.""" + df = self._reader_function(file_path, **self.read_kwargs) + if self.columns_subset: + return df[self.columns_subset] + return df + + @component.output_types(dataframe=pd.DataFrame) + def run(self, file_paths: List[str]) -> Dict[str, pd.DataFrame]: + """ + Converts files to a pandas.DataFrame. + + Args: + file_paths: List of file paths. + + Returns: + A dictionary with the following keys: + - `dataframe`: pandas.DataFrame containing the content of the files. + """ + df_list = [self._read_with_select(path) for path in file_paths] + df = pd.concat(df_list, ignore_index=True) + return {"dataframe": df} + @component class PandasDataFrameConverter: @@ -16,7 +103,7 @@ class PandasDataFrameConverter: ```python from dataframes_haystack.components.converters.pandas import PandasDataFrameConverter - converter = PandasDataFrameToDocument(content_column="text") + converter = PandasDataFrameConverter(content_column="text") results = converter.run(dataframe=df) documents = results["documents"] print(documents[0].content) diff --git a/src/dataframes_haystack/components/converters/polars.py b/src/dataframes_haystack/components/converters/polars.py index 9ffeb1c..8b6da14 100644 --- a/src/dataframes_haystack/components/converters/polars.py +++ b/src/dataframes_haystack/components/converters/polars.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Optional, Union +from typing import Any, Dict, List, Literal, Optional, Union from haystack import Document, component, logging from haystack.components.converters.utils import normalize_metadata @@ -12,6 +12,89 @@ logger = logging.getLogger(__name__) +FileFormat = Literal["avro", "csv", "delta", "excel", "ipc", "json", "parquet"] + + +@component +class FileToPolarsDataFrame: + """ + Converts files to a polars.DataFrame. + + Usage example: + ```python + from dataframes_haystack.components.converters.polars import FileToPolarsDataFrame + + converter = FileToPolarsDataFrame() + results = converter.run(files=["file1.csv", "file2.csv"]) + df = results["dataframe"] + print(df.head()) + ``` + """ + + def __init__( + self, + file_format: FileFormat = "csv", + read_kwargs: Optional[Dict[str, Any]] = None, + columns_subset: Union[List[str], None] = None, + ): + """ + Create a FileToPolarsDataFrame component. + + Please refer to the polars documentation for more information on the supported readers and their parameters: https://docs.pola.rs/api/python/stable/reference/io.html + + Args: + file_format: The format of the files to read. Supported formats are "avro", "csv", "delta", "excel", "ipc", + "json", and "parquet". + read_kwargs: Optional keyword arguments to pass to the polars reader function. + columns_subset: Optional list of column names to select from the DataFrame after reading the file. + """ + self.file_format = file_format + self._reader_function = self._get_read_function() + self.read_kwargs = read_kwargs or {} + self.columns_subset = columns_subset + + def _get_read_function(self): + """Returns the function to read files based on the file format.""" + + file_format_mapping = { + "avro": pl.read_avro, + "csv": pl.read_csv, + "delta": pl.read_delta, + "excel": pl.read_excel, + "ipc": pl.read_ipc, + "json": pl.read_json, + "parquet": pl.read_parquet, + } + reader_function = file_format_mapping.get(self.file_format) + if reader_function: + return reader_function + msg = f"Unsupported file format: {self.file_format}" + raise ValueError(msg) + + def _read_with_select(self, file_path: str) -> pl.DataFrame: + """Reads a file and selects only the specified columns.""" + df = self._reader_function(file_path, **self.read_kwargs) + if self.columns_subset: + return df.select(self.columns_subset) + return df + + @component.output_types(dataframe=pl.DataFrame) + def run(self, file_paths: List[str]): + """ + Converts files to a polars.DataFrame. + + Args: + file_paths: List of file paths to read. + + Returns: + A dictionary with the following keys: + - `dataframe`: The polars.DataFrame created from the files. + """ + df_list = [self._read_with_select(path) for path in file_paths] + df = pl.concat(df_list, how="vertical") + return {"dataframe": df} + + @component class PolarsDataFrameConverter: """ @@ -21,7 +104,7 @@ class PolarsDataFrameConverter: ```python from dataframes_haystack.components.converters.polars import PolarsDataFrameConverter - converter = PolarsDataFrameToDocument(content_column="text") + converter = PolarsDataFrameConverter(content_column="text") results = converter.run(dataframe=df) documents = results["documents"] print(documents[0].content) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..139cddf --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,33 @@ +from pathlib import Path + +import pandas as pd +import polars as pl +import pytest + +DATA = { + "content": ["content1", "content2"], + "meta1": ["meta1_1", "meta1_2"], + "meta2": ["meta2_1", "meta2_2"], +} + +CSV_STRING = """content,meta1,meta2 +content1,meta1_1,meta2_1 +content2,meta1_2,meta2_2 +""" + + +@pytest.fixture(scope="function") +def pandas_dataframe(): + return pd.DataFrame(data=DATA, index=[0, 1]) + + +@pytest.fixture(scope="function") +def polars_dataframe(): + return pl.DataFrame(data=DATA) + + +@pytest.fixture(scope="session") +def csv_file_path(tmp_path_factory: pytest.TempPathFactory) -> Path: + tmp_path = tmp_path_factory.mktemp("data") / "data.csv" + tmp_path.write_text(CSV_STRING) + return tmp_path diff --git a/tests/test_converters_pandas.py b/tests/test_converters_pandas.py index 799761a..42dbfed 100644 --- a/tests/test_converters_pandas.py +++ b/tests/test_converters_pandas.py @@ -1,21 +1,12 @@ +from pathlib import Path from typing import Any, Dict, List, Union import pandas as pd import pytest +from pandas.testing import assert_frame_equal -from dataframes_haystack.components.converters.pandas import PandasDataFrameConverter - - -@pytest.fixture(scope="function") -def pandas_dataframe(): - return pd.DataFrame( - data={ - "content": ["content1", "content2"], - "meta1": ["meta1_1", "meta1_2"], - "meta2": ["meta2_1", "meta2_2"], - }, - index=[0, 1], - ) +from dataframes_haystack.components.converters.pandas import FileToPandasDataFrame, PandasDataFrameConverter +from tests.utils import assert_pipeline_yaml_equal def test_pandas_dataframe_default_converter(pandas_dataframe: pd.DataFrame): @@ -111,6 +102,29 @@ def test_pandas_dataframe_converters_multindex_error( converter.run(dataframe=pandas_dataframe) +@pytest.mark.parametrize("column_subset", [None, ["content"], ["content", "meta1"]]) +def test_file_to_pandas_converter( + csv_file_path: Path, pandas_dataframe: pd.DataFrame, column_subset: Union[List[str], None] +): + converter = FileToPandasDataFrame(columns_subset=column_subset) + results = converter.run(file_paths=[str(csv_file_path)]) + if column_subset: + pandas_dataframe = pandas_dataframe[column_subset] + assert_frame_equal(results["dataframe"], pandas_dataframe) + + +def test_file_to_pandas_converter_read_kwargs(csv_file_path: Path, pandas_dataframe: pd.DataFrame): + cols_to_select = ["content", "meta2"] + converter = FileToPandasDataFrame(read_kwargs={"usecols": cols_to_select}) + results = converter.run(file_paths=[str(csv_file_path)]) + assert_frame_equal(results["dataframe"], pandas_dataframe[cols_to_select]) + + +def test_file_to_pandas_converter_valueerror(): + with pytest.raises(ValueError): + FileToPandasDataFrame(file_format="foo") + + def test_converter_in_pipeline(): from textwrap import dedent @@ -118,8 +132,10 @@ def test_converter_in_pipeline(): from haystack.core.pipeline import Pipeline pipeline = Pipeline() + pipeline.add_component("file_to_pandas", FileToPandasDataFrame()) pipeline.add_component("converter", PandasDataFrameConverter(content_column="content")) pipeline.add_component("cleaner", DocumentCleaner()) + pipeline.connect("file_to_pandas", "converter") pipeline.connect("converter", "cleaner") yaml_pipeline = pipeline.dumps() @@ -132,7 +148,16 @@ def test_converter_in_pipeline(): use_index_as_id: false type: dataframes_haystack.components.converters.pandas.PandasDataFrameConverter """ + file_to_pandas_expected_yaml = """\ + file_to_pandas: + init_parameters: + columns_subset: null + file_format: csv + read_kwargs: {} + type: dataframes_haystack.components.converters.pandas.FileToPandasDataFrame + """ assert dedent(converter_expected_yaml) in yaml_pipeline + assert dedent(file_to_pandas_expected_yaml) in yaml_pipeline new_pipeline = Pipeline.loads(yaml_pipeline) - assert yaml_pipeline == new_pipeline.dumps() + assert_pipeline_yaml_equal(yaml_pipeline, new_pipeline.dumps()) diff --git a/tests/test_converters_polars.py b/tests/test_converters_polars.py index 915f2cc..cc8ae0f 100644 --- a/tests/test_converters_polars.py +++ b/tests/test_converters_polars.py @@ -1,9 +1,12 @@ +from pathlib import Path from typing import Any, Dict, List, Union import polars as pl import pytest +from polars.testing import assert_frame_equal -from dataframes_haystack.components.converters.polars import PolarsDataFrameConverter +from dataframes_haystack.components.converters.polars import FileToPolarsDataFrame, PolarsDataFrameConverter +from tests.utils import assert_pipeline_yaml_equal @pytest.fixture(scope="function") @@ -105,6 +108,29 @@ def test_polars_dataframe_converter_all_metadata( assert [doc.meta for doc in documents] == expected_meta +@pytest.mark.parametrize("column_subset", [None, ["content"], ["content", "meta1"]]) +def test_file_to_polars_converter( + csv_file_path: Path, polars_dataframe: pl.DataFrame, column_subset: Union[List[str], None] +): + converter = FileToPolarsDataFrame(columns_subset=column_subset) + results = converter.run(file_paths=[str(csv_file_path)]) + if column_subset: + polars_dataframe = polars_dataframe.select(column_subset) + assert_frame_equal(results["dataframe"], polars_dataframe) + + +def test_file_to_polars_converter_read_kwargs(csv_file_path: Path, polars_dataframe: pl.DataFrame): + cols_to_select = ["content", "meta2"] + converter = FileToPolarsDataFrame(read_kwargs={"columns": cols_to_select}) + results = converter.run(file_paths=[str(csv_file_path)]) + assert_frame_equal(results["dataframe"], polars_dataframe.select(cols_to_select)) + + +def test_file_to_polars_converter_valueerror(): + with pytest.raises(ValueError): + FileToPolarsDataFrame(file_format="foo") + + def test_converter_in_pipeline(): from textwrap import dedent @@ -112,9 +138,11 @@ def test_converter_in_pipeline(): from haystack.core.pipeline import Pipeline pipeline = Pipeline() + pipeline.add_component("file_to_polars", FileToPolarsDataFrame()) pipeline.add_component("converter", PolarsDataFrameConverter(content_column="content")) pipeline.add_component("cleaner", DocumentCleaner()) pipeline.connect("converter", "cleaner") + pipeline.connect("file_to_polars", "converter") yaml_pipeline = pipeline.dumps() @@ -126,7 +154,16 @@ def test_converter_in_pipeline(): meta_columns: [] type: dataframes_haystack.components.converters.polars.PolarsDataFrameConverter """ + file_to_polars_expected_yaml = """\ + file_to_polars: + init_parameters: + columns_subset: null + file_format: csv + read_kwargs: {} + type: dataframes_haystack.components.converters.polars.FileToPolarsDataFrame + """ assert dedent(converter_expected_yaml) in yaml_pipeline + assert dedent(file_to_polars_expected_yaml) in yaml_pipeline new_pipeline = Pipeline.loads(yaml_pipeline) - assert yaml_pipeline == new_pipeline.dumps() + assert_pipeline_yaml_equal(yaml_pipeline, new_pipeline.dumps()) diff --git a/tests/utils.py b/tests/utils.py new file mode 100644 index 0000000..be19c94 --- /dev/null +++ b/tests/utils.py @@ -0,0 +1,9 @@ +import yaml + + +def assert_pipeline_yaml_equal(current_pipeline_yaml: str, expected_pipeline_yaml: str): + current_pipeline = yaml.safe_load(current_pipeline_yaml) + expected_pipeline = yaml.safe_load(expected_pipeline_yaml) + current_pipeline["connections"] = sorted(current_pipeline["connections"], key=lambda x: x["receiver"]) + expected_pipeline["connections"] = sorted(expected_pipeline["connections"], key=lambda x: x["receiver"]) + assert current_pipeline == expected_pipeline