Tencent Cloudでもできる⁉生成系AI×ドキュメント検索

去年に引き続き今年のアドベントカレンダーもTencent Cloudで書いていきます！

今回のテーマは「2025年問題を社内ドキュメント検索で乗り越えよう‼」です。
Tencent Cloudどのようなサービスを用いれば良いのかを考えてみましたので書いていきます。

# 2025年問題
まずは、2025年問題が一体どのような問題なのかを振り返ってみましょう。
[日本財団ジャーナル](https://www.nippon-foundation.or.jp/journal/2023/89142/health_aging)から以下の文章を見つけました。
>人口構造の変化により、さまざまな問題が発生すると懸念される「2025年問題」。日本の人口は2010年を境に減少を続けており、2025年には約800万人いる全ての「団塊の世代」（1947～1949年生まれ）が後期高齢者（75歳以上）となることで、国民の5人に1人が後期高齢者という超高齢化社会を迎えます。
その結果、大量の後期高齢者を支えるために、社会保障、主に医療・介護、年金などが限界に達し、社会全体に負の影響がもたらされると考えられています。

この2025年問題の課題は労働人口が減り、**あらゆる産業が人材不足に陥り、従業員の採用競争の激化**していくというところです。この超少子高齢化問題は簡単に解決できるものではありません。今できることは、少ない労働人口でどれだけ価値を生み出せれるかが重要なのではと私は考えます。

# 社内ドキュメント検索とは
社内ドキュメント検索とは何でしょう。なんとなくイメージできますが、実際にどんなことができるのかGTP-4に聞いてみましょう。

:::note
社内ドキュメント検索とは、企業や組織内のネットワークやデータベースに保存されているドキュメントやファイルを簡単に見つけ出すことができるシステムやプロセスのことです。これは通常、社内の情報管理を効率化し、従業員が必要とする情報に迅速にアクセスできるようにするための手段として導入されます。 社内ドキュメント検索の機能には以下のようなものが含まれる場合があります：
キーワード検索：ユーザーが特定のキーワードやフレーズを入力してドキュメントを検索できる。

メタデータフィルター：ドキュメントの作成日、作成者、タグなどのメタデータに基づいて絞り込み検索を行う。

フルテキスト検索：ドキュメント全体のテキスト内容に基づいて検索を行う。

アクセス権限：ユーザーの権限に基づいてアクセスできるドキュメントの範囲を制限する。

ファイル形式のサポート：Word文書やPDF、Excelスプレッドシートなど、複数のファイル形式の検索をサポートする。

このような内部検索システムは従業員の時間を節約し、文書の再利用を促進し、全体として情報共有と組織の知識管理を向上させる効果があります。最近ではクラウドベースの文書管理システム（DMS）やエンタープライズコンテンツ管理（ECM）システムなど、高度な検索機能を備えた製品が多数提供されています。
:::

流石ですね。良い返答が返ってきました。
この文章で大切なのは社内ドキュメント検索で**従業員の時間を節約し、文書の再利用を促進し、全体として情報共有と組織の知識管理を向上させることができる**という点です。

つまり、社内ドキュメント検索で少ない労働人口でより価値の生産が出来れば問題解決に近づくはずです！

# 社内ドキュメント検索の構成
簡単に社内ドキュメント検索を図示してみました。
![ドキュメント検索.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2521565/33bb72b6-1e98-b88f-b100-b4bec691294d.png)
処理の流れは大きく以下の通りです。
①ユーザーが欲しいドキュメントの情報をドキュメント検索システムに渡す。
②ドキュメント検索システムはユーザーが欲しいドキュメントを探す。
③ユーザーが欲しいであろうドキュメントを返す。

ただし、今回はタイトルにもある通り生成系AIとドキュメント検索システムを連携していきます。
なぜ、生成系AIを使用するかと言うとユーザーの欲しい情報をドキュメントから抽出し、要約した内容を届けたいからです。要約した内容でユーザーが欲しい情報を得ることができればユーザーはドキュメントの中身を見る必要がなくなります。さらに効率化が図れるということですね！
![ドキュメント検=AI索.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2521565/4c28428e-63ac-6b58-f1d0-b7d0e44eaa8c.png)
新たに増えた処理は見つけたドキュメントを生成系AIに渡して要約してもらう箇所です。
最終的にはユーザーに生成系に要約して貰った文と参照したドキュメントを渡します。
万が一、生成文がユーザーの欲しい情報ではなかったとしてもドキュメントから欲しい情報を見つけることができます。

# Tencent Cloudのサービス選定
今回、生成系AIはAzure OpenAI Srviceを使用し、そのほかをTencent Cloudが提供するサービスで構成していきたいと思います。

### [Chat](https://www.tencentcloud.com/products/im)
今回の構成ではユーザーが質問するフロントが必要になってきます。
しかし、一から作るとなると大変な部分になります。
そこでTencent Cloudが提供するChatサービスを利用します。
今回はGemini Proにどのようなサービスなのかを聞いてみました。

::: note
Tencent CloudのChatとは、企業が顧客とコミュニケーションをとるためのクラウドベースのプラットフォームです。企業は、Tencent CloudのChatを使用して、顧客とチャット、音声通話、ビデオ通話を行うことができます。また、Tencent CloudのChatは、顧客サポート、マーケティング、セールスなどのさまざまなビジネスユースケースに使用することができます。
Tencent CloudのChatの主な機能は以下の通りです。

* **チャット、音声通話、ビデオ通話**：Tencent CloudのChatを使用して、顧客とチャット、音声通話、ビデオ通話を行うことができます。

* **顧客サポート**：Tencent CloudのChatは、顧客サポートに最適です。企業は、Tencent CloudのChatを使用して、顧客の質問に答えたり、問題を解決したりすることができます。

* **マーケティング**：Tencent CloudのChatは、マーケティングにも最適です。企業は、Tencent CloudのChatを使用して、顧客に新しい製品やサービスを宣伝したり、顧客とエンゲージしたりすることができます。

* **セールス**：Tencent CloudのChatは、セールスにも最適です。企業は、Tencent CloudのChatを使用して、顧客とつながり、商談を成立させることができます。

　Tencent CloudのChatは、企業が顧客とコミュニケーションをとるための強力なツールです。Tencent CloudのChatを使用することで、企業は、顧客サポート、マーケティング、セールスを改善することができます。
:::

チャットだけでなく、ビデオ通話やライブストリーミングもできるのはとても魅力的なサービスですね。
また、デモが公開されていたので見てみましたがこのクオリティがすぐに構築できるのであれば利用しない手はないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2521565/066b3c97-bfbc-8b8a-626f-e4471b376669.png)

### [Tencent Cloud Lighthouse](https://www.tencentcloud.com/products/lighthouse?from_qcintl=122020102)
さて次に必要になるのは先ほどのChatを公開するWebサーバーです。
しかし、最初からそこまでスペックが良いものは必要ありません。
そこで丁度良いサービスが、Tencent Cloud Lighthouseです。

:::note
Tencent Cloud Lighthouseは、クラウドリソースを管理するためのクラウド管理プラットフォームです。リソースの可視化、ガバナンス、最適化、セキュリティを提供し、企業がクラウドインフラストラクチャをより効果的かつ効率的に管理するのに役立ちます。

Tencent Cloud Lighthouseの主な機能は以下の通りです。

* **リソースの可視化:** Tencent Cloud Lighthouseは、単一のダッシュボードからすべてのクラウドリソースを可視化します。これにより、企業はリソースの使用状況を追跡し、コストを最適化し、セキュリティリスクを特定することができます。
* **ガバナンス:** Tencent Cloud Lighthouseは、企業がクラウドリソースをガバナンスするためのポリシーとルールを提供します。これにより、企業はクラウドインフラストラクチャのセキュリティとコンプライアンスを確保することができます。
* **最適化:** Tencent Cloud Lighthouseは、企業がクラウドリソースを最適化するためのツールを提供します。これにより、企業はクラウドインフラストラクチャのコストを削減し、パフォーマンスを向上させることができます。
* **セキュリティ:** Tencent Cloud Lighthouseは、企業がクラウドインフラストラクチャを保護するためのセキュリティツールを提供します。これにより、企業はクラウドインフラストラクチャをサイバー攻撃から保護することができます。

Tencent Cloud Lighthouseは、クラウドインフラストラクチャを管理するための強力なツールです。企業がクラウドインフラストラクチャをより効果的かつ効率的に管理するのに役立ちます。

Tencent Cloud Lighthouseのメリットは以下の通りです。

* **コスト削減:** Tencent Cloud Lighthouseは、企業がクラウドリソースを最適化し、クラウドインフラストラクチャのコストを削減するのに役立ちます。
* **セキュリティの向上:** Tencent Cloud Lighthouseは、企業がクラウドインフラストラクチャを保護し、サイバー攻撃からクラウドインフラストラクチャを守るのに役立ちます。
* **ガバナンスの強化:** Tencent Cloud Lighthouseは、企業がクラウドリソースをガバナンスし、クラウドインフラストラクチャのセキュリティとコンプライアンスを確保するのに役立ちます。
* **パフォーマンスの向上:** Tencent Cloud Lighthouseは、企業がクラウドリソースを最適化し、クラウドインフラストラクチャのパフォーマンスを向上させるのに役立ちます。
:::

### [Serverless Cloud Function](https://www.tencentcloud.com/products/scf)
ドキュメント検索システムへのリクエストや生成系AIへのリクエスト等を行うアプリケーションはサーバーレスサービスを用います。
Tencent Cloudでは**Serverless Cloud Function**というFaaSを提供しています。

:::note
Tencent CloudのServerless Cloud Function（SCF）は、サーバーレスコンピューティングプラットフォームです。コードを記述してSCFにデプロイするだけで、サーバーを管理したり、インフラストラクチャをプロビジョニングしたりする必要はありません。SCFは、コードの実行に必要なリソースを自動的に管理し、コードが実行されるたびに課金されます。
SCFは、以下の機能を提供します。
・サーバーレスアーキテクチャ：SCFは、サーバーレスアーキテクチャを採用しており、サーバーを管理したり、インフラストラクチャをプロビジョニングしたりする必要はありません。

・自動スケーリング：SCFは、自動スケーリング機能を備えており、トラフィックの増加に応じて、コードの実行に必要なリソースを自動的にスケーリングします。

* **高可用性**：SCFは、高可用性を実現しており、コードの実行が失敗した場合でも、自動的に再実行されます。

* **豊富な言語サポート**：SCFは、Python、Java、Node.js、PHP、Goなど、豊富な言語をサポートしています。

* **低コスト**：SCFは、コードの実行に必要なリソースを自動的に管理し、コードが実行されるたびに課金されるため、低コストで利用できます。

SCFは、以下のユースケースに適しています。
* **Webアプリケーション**：SCFは、Webアプリケーションを開発してデプロイするのに適しています。

* **モバイルアプリケーション**：SCFは、モバイルアプリケーションのバックエンドを開発してデプロイするのに適しています。

* **データ処理**：SCFは、データ処理タスクを開発してデプロイするのに適しています。

* **機械学習**：SCFは、機械学習モデルを開発してデプロイするのに適しています。
:::

FaaSサービスがしっかりあるのは嬉しいですね。これも利用しない手はないです。

### [Elasticsearch Service](https://www.tencentcloud.com/products/es)
ドキュメント検索システムにはElasticsearch Serviceを利用します。
このサービスはElasticsearchを簡単に利用できるようにしたサービスです。

:::note
Tencent CloudのElasticsearch Serviceは、Tencent Cloudが提供するマネージドElasticsearchサービスです。Elasticsearchは、大規模なデータセットを検索、分析、視覚化するのに最適なオープンソースの検索エンジンです。Tencent CloudのElasticsearch Serviceは、Elasticsearchの管理と運用を簡素化し、企業がElasticsearchのメリットを迅速かつ簡単に活用できるようにします。
Tencent CloudのElasticsearch Serviceの主な機能は以下のとおりです。

* **マネージドサービス**:Tencent CloudがElasticsearchの管理と運用を代行するため、企業はElasticsearchの専門知識がなくても、簡単にElasticsearchを利用することができます。

* **高可用性**: Tencent CloudのElasticsearch Serviceは、複数のデータセンターに分散して配置されており、高可用性を提供します。

* **スケーラビリティ**: Tencent CloudのElasticsearch Serviceは、データ量やトラフィックの増加に応じて、簡単にスケールアップすることができます。

* **セキュリティ**: Tencent CloudのElasticsearch Serviceは、データの暗号化やアクセス制御などのセキュリティ機能を提供します。

* **統合**: Tencent CloudのElasticsearch Serviceは、Tencent Cloudの他のサービスと簡単に統合することができます。

Tencent CloudのElasticsearch Serviceは、以下のようなユースケースに最適です。
* **ログ分析**: Elasticsearchは、ログデータを収集、分析、視覚化するために使用することができます。これにより、企業は、システムのパフォーマンスを監視したり、セキュリティ上の脅威を検出したりすることができます。

* **検索**: Elasticsearchは、Webサイトやアプリケーションの検索機能を提供するために使用することができます。これにより、ユーザーは、必要な情報を迅速かつ簡単に検索することができます。


* **データ分析**: Elasticsearchは、大規模なデータセットを分析するために使用することができます。これにより、企業は、ビジネス上の洞察を得たり、意思決定を改善したりすることができます。
:::

ログ分析にも用いることができるのはとても魅力的ですね。

### [Cloud Object Storage](https://www.tencentcloud.com/products/cfs)
最後にドキュメントを格納するストレージが必要になります。
Cloud Object StorageはTencent Cloudにおけるオブジェクトクラウドストレージサービスです。

:::note
Tencent CloudのCloud Object Storage（COS）は、オブジェクトストレージサービスです。クラウド上でデータを安全かつ低コストで保存、管理、アクセスすることができます。COSは、データのバックアップ、アーカイブ、共有に最適です。
COSの主な機能は以下の通りです。
* **安全なストレージ**：COSは、データの暗号化、アクセス制御、データ冗長化などの機能を提供し、データの安全性を確保します。

* **低コスト**：COSは、データの保存とアクセスにかかるコストが低く、コスト効率に優れています。

* **スケーラブル**：COSは、データの量に合わせてストレージ容量を簡単に拡張することができます。

* **グローバル展開**：COSは、世界中の複数のリージョンに展開されており、データへのアクセスが容易です。
COSは、様々な業界やユースケースで利用されています。例えば、以下のような用途で利用されています。

* **データのバックアップ**：COSは、データのバックアップに最適です。データは暗号化され、データ冗長化が提供されるため、データの安全性が確保されます。

* **データのアーカイブ**：COSは、データのアーカイブに最適です。データは低コストで保存することができ、データへのアクセスも容易です。

* **データの共有**：COSは、データの共有に最適です。データへのアクセス権を簡単に設定することができ、データへのアクセスを安全に管理することができます。
:::

# Tencent Cloud上の構成図
大雑把にですが、以下の図がTencent Cloud上での構成になります。
かなり大雑把なため、構築していく際はもう少し調査をしないといけませんね。。
![tenxent.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2521565/b0c6f28d-c998-8c2d-6bdb-f0d98909129d.png)

この構築の良いところは以下になります。
1. 生成系AI以外はTencent Cloudでカバーできる。
1. コードの実装量が少ない。
1. 構築が比較的簡単。

しかし、課題として以下の要素があります。
1. サービスの認証
1. Elasticsearch Serviceの対応ドキュメント
1. チャンク分割やベクトル値生成処理
1. 対象ドキュメントの場所

特に３はRAGを行う上ではとても重要なものとなるため、
処理の追加はマストになってきます。

また、対象ドキュメントの場所が社内のネットワークドライブなどで
Tencent Cloud上にアップロードするのが難しいケースも考えれらます。

# まとめ
・構成を考える上でTencent Cloudのサービスをいろいろと調べました。
　中でもChatサービスはとても良いと感じました！
　様々なものにChat機能を手軽に組み込めるのは革新的です。
　機会があればChatサービスを使用した感想を記事にしていきたいです。

・一年ぶりにTencent Cloudに触りましたが、やはりビデオ類のサービスは魅力的ですね！
　[Low-Code Interactive Classroom](https://www.tencentcloud.com/products/lcic?from_qcintl=322130102) 等新たなサービスが展開されており、
 　今後もパブリッククラウドサービスの中でも唯一無二なサービスが提供されそうです。