RAGに使うPDFをいい感じに前処理してみた

# はじめに
RAGを自分で作るとなったときに、LangChainなどであらかじめ実装されているPDF用のモジュールに適当にそのまま資料を突っ込んだだけではあまり精度が出なかったりします。
というのも、

- 実際の資料には表やポンチ絵など、文字を視覚的に配置した要素が含まれていることが多々あり、そもそもテキストの抽出が上手くいっていない
- ページごとといった適当な単位でテキストを分割してベクトル化すると、一つのベクトルに含まれる情報が多くなりすぎてベクトル検索が上手くいかない

といったことが発生するからです。

今回は、[こちらのページ](https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/pdf/index.html)で総務省がまとめている、[こちらのPDF](https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/pdf/n4900000.pdf)を対象として、PDFをいい感じに前処理できないか試してみました。

# 資料からのテキスト抽出

一つ目の問題に対応するため、まずは視覚的な要素を考慮してテキスト抽出を行う方法を考えてみます。

## まずは普通にテキスト抽出してみる

総務省のPDFにはグラフ、縦書きの見出し、フッターといった要素を含んでいます。
PythonでPdfを処理する際の定番ライブラリとしてPyPdfがありますが、こういった要素を含むPDFを普通にテキスト抽出するとどうなるでしょうか？

**コード**

```python
from pypdf import PdfReader

reader = PdfReader("n4900000.pdf")

for i, page in enumerate(reader.pages):
    print(f"-----page {i}-----")
    print(page.extract_text())
```

**結果**
<details><summary>長いので格納</summary>

```
-----page 0-----
AI の動向
ୈୈ99અ AI޲અ AI޲
 1	 市場概況
世界のAI市場規模（売上高）は、2022年には前年比78.4％増の18兆7,148億円まで成長する
と見込まれており、その後も2030年まで緩やかな加速度的成長が予測されている（ 図表4-9-1-1 ）。
日本のAIシステム＊1市場規模（支出額）は、2022年に3,883億6,700万円（前年比35.5％増）
となっており、今後も成長を続け、2027年には1兆1,034億7,700万円まで拡大すると予測され
ている（図表4-9-1-2）。＊2＊3
図表4-9-1-1世界のAI市場規模（売上高）の推移及び
予測
961422082984205837951,0691,4151,847
02004006008001,0001,2001,4001,6001,8002,000
2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 （年）（10億ドル）
予測値
（出典）Statista（Next Move Strategy Consulting）＊2図表4-9-1-2国内AIシステムの市場規模（支出額）
及び予測
（年） 2022 2023 2024 2025 2025 202702004006008001,0001,200
05101525
2035
3040予測値
支出額 成長率（10億円） （％）
（出典）IDC「2023年 国内AIシステム市場予測を発表」 （2023年4月27日）＊3
 2	 AIを巡る各国等の動向
Thundermark Capitalが毎年公表しているAI Research Rankingでは、論文数などを基に研
究をリードする国や企業・大学等が公表されている。国別では、2020年以降、米国、中国、英国
の順となっており、日本は毎年Top10には入っているものの、年々順位が低下している。
組織別にみると、2022年は、Googleが世界各国の大学・企業を抑えてトップとなっており、
Microsoft、Facebookも上位10位にランクインしている。上位10位以下の民間企業をみると、Amazon（米国） 、IBM（米国） 、Huawei（中国） 、Alibaba（中国） 、NVIDIA（米国） 、Tencent（中国） 、Samsung（韓国） 、Baidu（中国） 、NTT（日本） 、Apple（米国） 、OpenAI
（米国）と続いており、ICT市場で売り上げの大きな企業が上位となっている中、AI専業の
OpenAIが躍進している。
国別AIランキング（Top10）の推移
出典：Thundermark Capital「AI Research Ranking 2022」を基に作成
URL：https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/html/datashu.html#f00259
（データ集）関連データ
＊1	 AI機能を利用するためのハードウェア、ソフトウェア・プラットフォーム及びAIシステム構築に関わるITサービス
＊2	 https://www.statista.com/statistics/1365145/artificial-intelligence-market-size/＊3	 https://www.idc.com/getdoc.jsp?containerId=prJPJ50603323ICT市場の動向
131第9節
令和5年版　情報通信白書　第 2部
ୈ
4
ষ
IIIIIIII
情通R5_04-09_第4章9節.indd   131情通R5_04-09_第4章9節.indd   131 2023/06/13   20:12:322023/06/13   20:12:32
-----page 1-----
組織別AIランキング（Top10）の推移
出典：Thundermark Capital「AI Research Ranking 2022」を基に作成
URL：https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/html/datashu.html#f00260
（データ集）関連データ
中国のAI市場支出予測
出典： IDC「China’s Artificial Intelligence Market Will Exceed US$26.7 Billion by 2026, according to 
IDC」 （2022年10月4日）
URL：https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/html/datashu.html#f00261
（データ集）関連データ
また、近年、AIの社会実装が進んでおり、ChatGPT、Stable Diffusion、CeVIO AI等の文章、
画像、音声等を生成する、いわゆる生成AI（Generative AI）が注目されている。AI関連企業へ
の投資も活発化しており、スタンフォード大学が公表した報告書「Artificial Intelligence Index Report 2023」によれば、2022年に新たに資金調達を受けたAI企業数は、米国が542社で1位、中国が160社で2位、日本が32社で10位となっている（図表4-9-2-1）。
図表4-9-2-1 新たに資金調達を受けたAI企業数（国別・2022年）
542
160
99
121222232632364144475773
0 100 200 300
企業数400 500米国
中国
英国
イスラエル
インド
カナダ
フランス
ドイツ
シンガポール
日本
スイス
オーストラリア
韓国
スウェーデン
オランダ
（出典）Stanford University「Artificial Intelligence Index Report 2023」＊4
＊4
＊4	 https://aiindex.stanford.edu/wp-content/uploads/2023/04/HAI_AI-Index_Report_2023.pdf
132AI の動向 第9節
令和5年版　情報通信白書　第 2部
ୈ
4
ষ
IIIIIIII
情通R5_04-09_第4章9節.indd   132情通R5_04-09_第4章9節.indd   132 2023/06/13   20:12:332023/06/13   20:12:33
```
</details>

うーん、よくわからないことになってますね。
特に、グラフ周りは全く元の情報を読み取ることができません。
これを見れば、LangChainなどのPyPdfを利用したPDF用モジュールに視覚的な要素を持ったPDFを突っ込んでも精度がでないとわかります。

## Layoutモード + GPT-4oによるテキスト整形

普通にテキスト抽出してもうまくいかないことがわかりましたが、実はPyPdfのテキスト抽出機能にはLayoutモードというもう一つのモードが搭載されています。
こちらを使って抽出したテキストをAzure OpenAI ServiceのGPT-4oを使って整形させるとうまくグラフの情報もある程度保ったままきれいなテキストにすることができました。

### Layoutモードによるテキスト抽出

PyPdfのLayoutモードですが、[公式の例](https://pypdf.readthedocs.io/en/latest/user/extract-text.html#extract-text-from-a-pdf)にもあるように、いくつかオプションが存在します。
今回、Layoutモードをオンにするだけでもある程度きれいにテキスト抽出できましたが、`layout_mode_space_vertically`という引数を`False`にすると余分な空白が比較的少なくなったので、こちらも採用しました。

**コード**

```python
texts = []
for i, page in enumerate(reader.pages):
    print(f"-----page {i}-----")
    text = page.extract_text(extraction_mode="layout", layout_mode_space_vertically=False)
    print(text)
    texts.append(text)
```

**結果**

<details><summary>長いので格納</summary>

```
-----page 0-----
ICT      市場の動向
                                                                                                                                                                                                                                                                                         AI    の動向                             第                      9    節
                                                     ୈୈ         99          અ       AI   ͷಈ޲અ       AI   ͷಈ޲
                                          1	                          市場概況
                                               世界の   AI   市場規模（売上高）は、2022   年には前年比   78.4％増の  18   兆   7,148   億円まで成長する
                                         と見込まれており、その後も   2030   年まで緩やかな加速度的成長が予測されている（                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               図表  4-9-1-1                               ）。
                                               日本の   AI   システム                                                                                         ＊1            市場規模（支出額）は、2022   年に   3,883   億   6,700   万円（前年比   35.5％増）
                                         となっており、今後も成長を続け、2027   年には   1   兆   1,034   億   7,700   万円まで拡大すると予測され
                                         ている（図表  4-9-1-2）。                                                                                                                                                                                              ＊2 ＊3
                                             図表  4-9-1-1                                             世界の  AI  市場規模（売上高）の推移及び予測                                                                            図表  4-9-1-2                                             国内  AI  システムの市場規模（支出額）及び予測
                                          （10 億ドル）                                                                                                                                                     （10 億円）                                                                                                                                                                                                                                                                                                                                           （％）予測値
                                            2,000                                                                                                                    1,847                                 1,200                                                                                                                  40
                                            1,800                      予測値                                                                                                                                                                                                                                                        35
                                            1,600                                                                                                                                                          1,000
                                                                                                                                                         1,415                                                                                                                                                                    30
                                            1,400                                                                                                                                                             800
                                            1,200                                                                                            1,069                                                         支出額                                                                                                                                                                                                                                                                                                                                                                                                 成長率25
                                            1,000                                                                                  795                                                                        600                                                                                                                 20                                      ୈ
                                                800                                                                    583                                                                                                                                                                                                        15                                      4
                                                600                                                         420                                                                                               400
                                                400                                             298                                                                                                                                                                                                                               10                                      ষ
                                                             96         142         208                                                                                                                       200                                                                                                                 5
                                                200
                                                     0                                                                                                                                                              0                                                                                                             0                                       IIIIIIII
                                                           2021   2022   2023   2024   2025   2026   2027   2028   2029   2030（年）                                                                                          2022                     2023                    2024                     2025                     2025                    2027（年）
                                                                                     （出典）Statista（Next Move Strategy Consulting）                                        ＊2                         （出典）IDC「2023  年 国内  AI  システム市場予測を発表」（2023  年  4  月  27  日）                                                                                                                                                                                        ＊3
                                          2	                          AI   を巡る各国等の動向
                                               Thundermark    Capital   が毎年公表している   AI    Research    Ranking   では、論文数などを基に研
                                         究をリードする国や企業・大学等が公表されている。国別では、2020   年以降、米国、中国、英国
                                         の順となっており、日本は毎年   Top10   には入っているものの、年々順位が低下している。
                                               組織別にみると、2022   年は、Google   が世界各国の大学・企業を抑えてトップとなっており、
                                         Microsoft、Facebook   も上位   10   位にランクインしている。上位   10   位以下の民間企業をみると、
                                         Amazon（    米    国    ）、IBM（    米    国    ）、Huawei（    中    国    ）、Alibaba（    中    国    ）、NVIDIA（    米    国    ）、
                                         Tencent（ 中 国 ）、Samsung（ 韓 国 ）、Baidu（ 中 国 ）、NTT（ 日 本 ）、Apple（ 米 国 ）、OpenAI
                                     （米国）と続いており、ICT 市場で売り上げの大きな企業が上位となっている中、AI 専業の
                                         OpenAI   が躍進している。
                                                関連データ                                       国別  AI  ランキング（Top10）の推移
                                                                                            出典：Thundermark Capital「AI Research Ranking 2022」を基に作成
                                                                                            URL：https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/html/datashu.html#f00259
                                                                                          （データ集）
                                         ＊1	          AI 機能を利用するためのハードウェア、ソフトウェア・プラットフォーム及び AI システム構築に関わる IT サービス
                                         ＊2	          https://www.statista.com/statistics/1365145/artificial-intelligence-market-size/
                                         ＊3	          https://www.idc.com/getdoc.jsp?containerId=prJPJ50603323
                                                                                                                                                                                                                                                                                                                                                        131
      情通R5_04-09_第4章9節.indd   131情通R5_04-09_第4章9節.indd   131                                                                                                                                                                                                                                                                                     2023/06/13   20:12:322023/06/13   20:12:32
-----page 1-----
                         第                      9    節AI    の動向
                              関連データ                            組織別  AI  ランキング（Top10）の推移
                                                               出典：Thundermark Capital「AI Research Ranking 2022」を基に作成
                                                               URL：https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/html/datashu.html#f00260
                                                              （データ集）
                              ؔ࿈デồタ                            中国の  AI  市場支出予測
                                                               出典：                                                               IDC「China’s Artificial Intelligence Market Will Exceed US$26.7 Billion by 2026, according to
                                                                           IDC」（2022  年  10  月  4  日）
                                                               URL：https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/html/datashu.html#f00261
                                                              （データ集）
                              また、近年、AI   の社会実装が進んでおり、ChatGPT、Stable Diffusion、CeVIO AI   等の文章、
                         画像、音声等を生成する、いわゆる生成   AI（Generative    AI）が注目されている。AI   関連企業へ
                         の投資も活発化しており、スタンフォード大学が公表した報告書「Artificial    Intelligence    Index
                         Report 2023」によれば、2022   年に新たに資金調達を受けた   AI   企業数は、米国が   542   社で   1   位、
                         中国が   160   社で   2   位、日本が   32   社で   10   位となっている（図表  4-9-2-1）。
                            図表  4-9-2-1                                              新たに資金調達を受けた  AI  企業数（国別・2022  年）
      ୈ                                                        米国                                                                                                                                                   542
      4                                                        中国                                                 160
      ষ                                                        英国                                99
                                                      イスラエル                               73
      IIIIIIII                                              インド                       57
                                                            カナダ                    47
                                                         フランス                     44
                                                            ドイツ                  41
                                                   シンガポール                       36
                                                               日本              32
                                                            スイス               26
                                                オーストラリア                     23
                                                               韓国           22
                                                   スウェーデン                12
                                                         オランダ            12
                                                                     0                                                                                               100                                                                                     200                                                                                    300400                                                                                      500
                                                                                                                                                企業数
                                                                                                                                          （出典）Stanford University「Artificial Intelligence Index Report 2023」                                       ＊4
                              ＊4
                         ＊4	          https://aiindex.stanford.edu/wp-content/uploads/2023/04/HAI_AI-Index_Report_2023.pdf
              132
情通R5_04-09_第4章9節.indd   132情通R5_04-09_第4章9節.indd   132                                                                                                                                                                                                  2023/06/13   20:12:332023/06/13   20:12:33
```
</details>

かなり汚いですが、普通にテキスト抽出するよりも理解しやすい形(特にグラフ部分)になっているのではないかと思います。

### GPT-4oによるテキスト整形

上記で抽出したテキストをそのまま使うのは汚すぎてさすがに問題が出そうな気がします。
そこで、GPT-4oを使ってテキスト整形をしてみました。

**コード**

```python
from langchain_openai import AzureChatOpenAI
from langchain.prompts import ChatPromptTemplate

formatting_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "あなたはテキスト整形の専門家です。ユーザーから与えられたテキストを整形してください。与えられたテキストはPDFからOCRで抽出したテキストのため、矢印などの記号がなくなっている場合がありますが、適宜補完してください。また、整形したテキスト以外は応答に含めないでください。"),
        ("human", "{text}")
    ]
)
formatting_chat = AzureChatOpenAI(azure_deployment="デプロイ名", temperature=0).bind(seed=0)
formatting_chain = formatting_prompt | formatting_chat

results = formatting_chain.batch([{"text": text} for text in texts])

concatenated_text = ""
for result in results:
    concatenated_text += "----------\n"
    concatenated_text += str(result.content) + "\n"

print(concatenated_text)
```

**結果**

<details><summary>長いので格納</summary>

```
----------
# ICT市場の動向

## AIの動向 第9節

### 1. 市場概況

世界のAI市場規模（売上高）は、2022年には前年比78.4％増の18兆7,148億円まで成長すると見込まれており、その後も2030年まで緩やかな加速度的成長が予測されている（図表4-9-1-1）。

日本のAIシステム市場規模（支出額）は、2022年に3,883億6,700万円（前年比35.5％増）となっており、今後も成長を続け、2027年には1兆1,034億7,700万円まで拡大すると予測されている（図表4-9-1-2）。

#### 図表4-9-1-1 世界のAI市場規模（売上高）の推移及び予測

（10億ドル）

| 年   | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 | 2028 | 2029 | 2030 |
|------|------|------|------|------|------|------|------|------|------|------|
| 売上 | 96   | 142  | 208  | 298  | 420  | 583  | 795  | 1,069| 1,415| 1,847|

（出典）Statista（Next Move Strategy Consulting）

#### 図表4-9-1-2 国内AIシステムの市場規模（支出額）及び予測

（10億円）

| 年   | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 |
|------|------|------|------|------|------|------|
| 支出 | 388.36 | -    | -    | -    | -    | 1,103.47 |
| 成長率 | 35.5% | -    | -    | -    | -    | -    |

（出典）IDC「2023年国内AIシステム市場予測を発表」（2023年4月27日）

### 2. AIを巡る各国等の動向

Thundermark Capitalが毎年公表しているAI Research Rankingでは、論文数などを基に研究をリードする国や企業・大学等が公表されている。国別では、2020年以降、米国、中国、英国の順となっており、日本は毎年Top10には入っているものの、年々順位が低下している。

組織別にみると、2022年は、Googleが世界各国の大学・企業を抑えてトップとなっており、Microsoft、Facebookも上位10位にランクインしている。上位10位以下の民間企業をみると、Amazon（米国）、IBM（米国）、Huawei（中国）、Alibaba（中国）、NVIDIA（米国）、Tencent（中国）、Samsung（韓国）、Baidu（中国）、NTT（日本）、Apple（米国）、OpenAI（米国）と続いており、ICT市場で売り上げの大きな企業が上位となっている中、AI専業のOpenAIが躍進している。

#### 関連データ 国別AIランキング（Top10）の推移

出典：Thundermark Capital「AI Research Ranking 2022」を基に作成
URL：https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/html/datashu.html#f00259

（データ集）

### 注釈

＊1 AI機能を利用するためのハードウェア、ソフトウェア・プラットフォーム及びAIシステム構築に関わるITサービス

＊2 https://www.statista.com/statistics/1365145/artificial-intelligence-market-size/

＊3 https://www.idc.com/getdoc.jsp?containerId=prJPJ50603323
----------
### 第9節 AIの動向

#### 関連データ

**組織別 AI ランキング（Top10）の推移**  
出典：Thundermark Capital「AI Research Ranking 2022」を基に作成  
URL：https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/html/datashu.html#f00260

**中国の AI 市場支出予測**  
出典：IDC「China’s Artificial Intelligence Market Will Exceed US$26.7 Billion by 2026, according to IDC」（2022年10月4日）  
URL：https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r05/html/datashu.html#f00261

また、近年、AIの社会実装が進んでおり、ChatGPT、Stable Diffusion、CeVIO AI等の文章、画像、音声等を生成する、いわゆる生成AI（Generative AI）が注目されている。AI関連企業への投資も活発化しており、スタンフォード大学が公表した報告書「Artificial Intelligence Index Report 2023」によれば、2022年に新たに資金調達を受けたAI企業数は、米国が542社で1位、中国が160社で2位、日本が32社で10位となっている（図表4-9-2-1）。

#### 図表 4-9-2-1 新たに資金調達を受けた AI 企業数（国別・2022年）

| 国名         | 企業数 |
|--------------|--------|
| 米国         | 542    |
| 中国         | 160    |
| 英国         | 99     |
| イスラエル   | 73     |
| インド       | 57     |
| カナダ       | 47     |
| フランス     | 44     |
| ドイツ       | 41     |
| シンガポール | 36     |
| 日本         | 32     |
| スイス       | 26     |
| オーストラリア | 23   |
| 韓国         | 22     |
| スウェーデン | 12     |
| オランダ     | 12     |

（出典）Stanford University「Artificial Intelligence Index Report 2023」  
URL：https://aiindex.stanford.edu/wp-content/uploads/2023/04/HAI_AI-Index_Report_2023.pdf
```
</details>

これはかなりきれいなんじゃないでしょうか。
しかも、気を利かしてマークダウン風に表も書き直してくれているため、人間が見ても解釈しやすいです。
GPT-4oすごいですね...。

# FAQ集の作成

さて、テキスト抽出もうまくいったので2つめの問題に対応する方法を考えてみます。

RAGにおけるベクトル検索はユーザーの検索クエリのベクトルとベクトルDBの文書ベクトルの類似度を出して文書を持ってきています。
しかし、ユーザーの検索クエリはだいたい「XXXですか？」のような質問形式になっているのに対して、比較対象が「〇〇〇においてXXXは△△△として...」といった質問形式ではない文章や、あまり関係ない情報も含むような長い文章であれば類似度が小さくなってしまうことは容易に想像できると思います。

クエリとDB内の文書のずれに対処する手法として、[HyDE](https://arxiv.org/abs/2212.10496)というユーザーのクエリから仮の回答を作り、それを用いてベクトル検索する手法が有名です。
が、今回は最近流行の[Dify](https://dify.ai/jp)などで見かける、ベクトルとする文書を質問形式にして、LLMに渡す文書はその回答とする方法を試してみます。
(絶対ちゃんとした手法の名前があると思うのですが、調べられなかったです...。)

実装としては単純に先ほど抽出したテキストからGPT-4oにFAQを生成してもらう形にしました。

**コード**

```python
import json
import pandas as pd

create_faq_prompt = ChatPromptTemplate.from_messages(
    [
        ("system", 'ユーザから与えられた文書をもとに、FAQ集を作成してください。\nFAQの質問・回答は、前提条件を含めるなど可能な限り詳細な文面にしてください。\nユーザーへの応答は下記のような形式のJSON文字列としてください。\n{{"faqs": [{{"question": 質問, "answer": 回答}},...]}}'),
        ("human", "{text}")
    ]
)
create_faq_chat = AzureChatOpenAI(azure_deployment="デプロイ名", temperature=0).bind(seed=0, response_format={"type": "json_object"})
create_faq_chain = create_faq_prompt | create_faq_chat

faq = create_faq_chain.invoke({"text": concatenated_text}).content

# GPT-4oが生成したJSONをCSVに変換
faq_df = pd.DataFrame(json.loads(str(faq))["faqs"])
faq_csv = faq_df.to_csv(index=False)
print(faq_csv)
```

**結果**

```
question,answer
2022年の世界のAI市場規模はどのくらいですか？,"2022年の世界のAI市場規模（売上高）は18兆7,148億円と見込まれています。前年比78.4％増の成長が予測されています。"
日本のAIシステム市場規模は2022年にどのくらいですか？,"日本のAIシステム市場規模（支出額）は2022年に3,883億6,700万円で、前年比35.5％増となっています。"
2030年までの世界のAI市場規模の予測はどうなっていますか？,"2030年までの世界のAI市場規模は、2022年の142億ドルから2030年には1,847億ドルまで成長すると予測されています。"
日本のAIシステム市場規模は2027年にどのくらいになると予測されていますか？,"日本のAIシステム市場規模は2027年に1兆1,034億7,700万円まで拡大すると予測されています。"
AI Research Rankingで2022年にトップとなった企業はどこですか？,2022年のAI Research Rankingでトップとなった企業はGoogleです。
2022年に新たに資金調達を受けたAI企業数が最も多い国はどこですか？,2022年に新たに資金調達を受けたAI企業数が最も多い国は米国で、542社です。
生成AI（Generative AI）とは何ですか？,生成AI（Generative AI）とは、文章、画像、音声などを生成するAI技術のことです。ChatGPT、Stable Diffusion、CeVIO AIなどがその例です。
AI関連企業への投資状況はどうなっていますか？,AI関連企業への投資は活発化しており、2022年には米国で542社、中国で160社、日本で32社が新たに資金調達を受けています。
```

もうすこし網羅的に内容を入れ込んでもらいたい感もありますが、~~これ以上の調整が面倒なので~~今回はこれで良しとします。

# 実際にベクトル検索してみる

ここまででRAGに使うQA形式の文書を作成することができましたが、実際のところうまく検索できるのでしょうか？
FAISSを使ってベクトルDBを作成し、いくつか検索クエリを入れてみます。

**コード**

```python
from langchain_community.vectorstores import FAISS
from langchain_openai import AzureOpenAIEmbeddings

embeddings = AzureOpenAIEmbeddings(azure_deployment="デプロイ名")
question_embeddings = embeddings.embed_documents(faq_df["question"].to_list())
text_embedding_pairs = zip(faq_df["answer"].to_list(), question_embeddings)
faiss = FAISS.from_embeddings(text_embedding_pairs, embeddings)

def vector_search(query):
    results = faiss.similarity_search(query, k=3)

    print("-----")
    print("検索クエリ:")
    print(query)
    print("検索結果:")
    for i, result in enumerate(results):
        print(f"{i + 1}. {result.page_content}")

vector_search("AIの市場規模は？")
vector_search("AI関連企業について教えて")
vector_search("AIとは？")
vector_search("日本におけるAIの状況を教えてください")
```

**結果**

```
-----
検索クエリ:
AIの市場規模は？
検索結果:
1. 2022年の世界のAI市場規模（売上高）は18兆7,148億円と見込まれています。前年比78.4％増の成長が予測されています。
2. 2030年までの世界のAI市場規模は、2022年の142億ドルから2030年には1,847億ドルまで成長すると予測されています。
3. 日本のAIシステム市場規模（支出額）は2022年に3,883億6,700万円で、前年比35.5％増となっています。
-----
検索クエリ:
AI関連企業について教えて
検索結果:
1. AI関連企業への投資は活発化しており、2022年には米国で542社、中国で160社、日本で32社が新たに資金調達を受けています。
2. 2022年のAI Research Rankingでトップとなった企業はGoogleです。
3. 生成AI（Generative AI）とは、文章、画像、音声などを生成するAI技術のことです。ChatGPT、Stable Diffusion、CeVIO AIなどがその例です。
-----
検索クエリ:
AIとは？
検索結果:
1. 生成AI（Generative AI）とは、文章、画像、音声などを生成するAI技術のことです。ChatGPT、Stable Diffusion、CeVIO AIなどがその例です。
2. AI関連企業への投資は活発化しており、2022年には米国で542社、中国で160社、日本で32社が新たに資金調達を受けています。
3. 2022年の世界のAI市場規模（売上高）は18兆7,148億円と見込まれています。前年比78.4％増の成長が予測されています。
-----
検索クエリ:
日本におけるAIの状況を教えてください
検索結果:
1. 日本のAIシステム市場規模（支出額）は2022年に3,883億6,700万円で、前年比35.5％増となっています。
2. AI関連企業への投資は活発化しており、2022年には米国で542社、中国で160社、日本で32社が新たに資金調達を受けています。
3. 日本のAIシステム市場規模は2027年に1兆1,034億7,700万円まで拡大すると予測されています。
```

なんだかうまくいってそうです。
検索してでてくるテキストが回答形式なので、場合によってはベクトル検索をそのまま返すだけでも十分な回答になるかもしれません。

# まとめ

今回はRAGに使うPDFの前処理について試行錯誤してみました。
1ドキュメント分しか確かめていませんが、なかなかうまくいったように思えます。
皆さんもRAGの精度がでないときは、前処理を工夫してみてはいかがでしょうか？