LlamaParseとExcelスプレッドシートを用いたRAG

LlamaParseなるものが出ていたとは。そして、LlamaCloudもできてる。

https://docs.cloud.llamaindex.ai/llamaparse/getting_started

> [LlamaIndex](https://llamaindex.ai/)の提供する世界最高のパーシングサービスであるLlamaParseにようこそ。LlamaParseは、PDF、パワーポイント、ワード文書、スプレッドシートのような複雑な文書を構造化データに変換することができるLlamaCloudのコンポーネントです。スタンドアローンのREST API、Pythonパッケージ、TypeScript SDK、Web UIとして利用できます。現状はパブリックベータです。試すために[サインアップ](https://cloud.llamaindex.ai/login)したり、[オンボーディングドキュメント](https://docs.cloud.llamaindex.ai/llamaparse/getting_started/web_ui)を読むことができます。

クイックに試すならサインアップしてWeb UIでPDFなどをアップロードします。
![Screenshot 2024-07-04 at 18.05.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/0bb1c0d5-e404-6dda-be94-1fe3cd079c7f.png)

日本語も動きます。**OCR Language(s)** で`ja`を指定します。
![Screenshot 2024-07-04 at 18.07.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/fea357d8-9ca4-e436-c21f-4ec8fc53e4fb.png)

```md
本書は、ビッグデータを主な対象としたデータ分析フレームワークである Delta Lakeの中級入門書です。「動かしてみる」だけではなく、どのような仕組みになっているのか、どうすれば効率的な実装が行えるかまで踏み込みつつ、データ Apache Spark徹底入門 Learning Spark 2nd Editionの翻訳 + αの内容となっています AIの実装者が Apache Spark、ML owApache Spark、ML ow、  x および Delta Lakeを使いこなすための解説を行います。

● Python、SQL、Scala、またはJavaの高レベルの構造化 APIの学習

● Spark の操作とSQLエンジンの理解

● Spark 構成とSpark UIを使用した Spark操作の検査、調整、デバッグ

● JSON、Parquet、CSV、Avro、ORC、Hive、S3、またはKafkaといったデータ ソースへの接続

● 構造化ストリーミングを使用してバッチ データとストリーミング データの 分析を実施

● オープンソースの Delta LakeとSparkを使用して信頼性の高いデータ パイプラインを構築

● MLlibを使用する機械学習パイプラインの開発、 MLflowを使用するモデルの管理、本番化

● [日本語版オリジナルコンテンツ ]pandas dataframe、spark dataframeに関する 各種データフレームの使い分け

● [日本語版オリジナルコンテンツ ]LLMやEnglish SDK for SparkなどAIを活用 した新たなコーディングスタイル、 LLMの利用方法の実践

©2024 Databricks Inc. — All rights reserved
---
ApacheSparkKJJJIJS_ Biks) インフラエンジニア Books ApacheSpark 30分でわかる「 Apache Spark徹底入門」 TRAP] 4/18(木) 20時からの開催です datobrick tabricksdatabricksdataApache Spark Apchi arkcksdatabricksdata Mjik A[" 'rubnck atabricksdata iJ A /"]Dim T DZE data ApacheSpark datobricks pacheSpark T: Tak ,~,*7 ! Ikhic Se ~s lk data ©2024 Databricks Inc. — All rights reserved
```

タイトルの[サンプルノートブック](https://github.com/run-llama/llama_parse/blob/main/examples/demo_excel.ipynb)でPython APIもDatabricksで試してみます。LlamaCloudでAPIキーを作成しておきます。
![Screenshot 2024-07-04 at 18.10.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/20e1b164-523b-78bb-4630-0a6fdbb8b803.png)

# LlamaPraseとExcelスプレッドシートを用いたRAG

このノートブックでは、ExcelスプレッドシートへのLlamaParseの使い方を説明します。

ここでは、NVIDIAの過去5四半期の収益[データ](https://investor.nvidia.com/financial-info/quarterly-results/default.aspx)を使います。

収益データのExcelはノートブックと同じパスにインポートしておきます。
![Screenshot 2024-07-04 at 18.11.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/76a9a780-b226-45f1-6954-7bbcfa71dd4a.png)

```py
%pip install llama-index
%pip install llama-parse
dbutils.library.restartPython()
```

## LLAMA_CLOUD_API_KEYの設定

```py
import nest_asyncio

nest_asyncio.apply()

from llama_parse import LlamaParse

api_key = "llx-..."  # cloud.llamaindex.ai　でAPIキーを入手
```

## ExcelをパースするためにLlamaParseを使用

```py
parser = LlamaParse(
    api_key=api_key,  # LLAMA_CLOUD_API_KEY　環境変数に設定することもできます
    result_type="markdown",
)

documents = parser.load_data("./nvidia_quarterly_revenue_trend_by_market.xlsx")
```

```py
documents
```

Excelの中身がパースされています。
![Screenshot 2024-07-04 at 18.14.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b51183a0-43bb-e1d6-0c99-fc24f3ca97fd.png)

## OpenAI APIキーの設定

```py
import os

os.environ["OPENAI_API_KEY"] = dbutils.secrets.get("demo-token-takaaki.yayoi", "openai_api_key")

from llama_index.llms.openai import OpenAI
from llama_index.core import Settings

llm = OpenAI(model="gpt-4")
Settings.llm = llm
```

## インデックスとクエリーエンジンの構築

なるほど。Excelがドキュメントとして読み込めているので、RAGの枠組みで問い合わせができるということですね。興味深い。

```py
from llama_index.core import VectorStoreIndex

index = VectorStoreIndex.from_documents(documents)

query_engine = index.as_query_engine()
```

## クエリー

GPT-4なので、日本語でも問い合わせできます。

```py
response = query_engine.query("FY25 Q1の収益合計は？")
print(str(response))
```

```
FY25 Q1の収益合計は$26,044 millionです。
```

合ってます。
![Screenshot 2024-07-04 at 18.16.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d70aa306-6c2f-e636-3951-dde2c79c8c35.png)

```py
response = query_engine.query(
    "FY23 Q1からFY25 Q1にかけてのデータセンターの収益の成長は？"
)
print(str(response))
```

```
データセンターの収益は、FY23 Q1では$3,750 millionでしたが、FY25 Q1では$22,563 millionに成長しました。
```

これも合ってます。
![Screenshot 2024-07-04 at 18.18.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/39e4eef2-d691-473f-0d32-b3c60bad1f18.png)

Unstructuredの代替にもなりそうですが、LlamaIndexとインテグレーションされているのが強みといったところでしょうか。しかし、RAGのエコシステムがどんどん整備されていっている感じがしますね。

https://qiita.com/taka_yayoi/items/7d6e13ebc0200c71babc

他のサンプルも試してみます。

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)