生成AIチャット
概要
IIIF Tsukushi Viewerの生成AIチャット機能は、「AIを使いながら日本古典籍を読む」を実現するものです。
古典籍の閲覧に用いられてきたIIIF (International Image Interoperability Framework)の世界に、大規模言語モデル(LLM)や大規模マルチモーダルモデル(LMM)などの生成AIを接続し、日本古典籍へのアクセス性を向上することを目指します。
生成AIを用いると、古典籍のAIくずし字OCRや翻刻から得られた古文テキストを対象に、現代日本語でチャットできるようになります。つまり、古文に対して現代日本語で質問し、現代日本語で回答が得られます。まるで古文を現代文に自動翻訳しながら、現代語訳を用いて対話するような体験です。もちろんこの翻訳は常に正しいわけではありません。しかし、くずし字や古文が読めない人も古典籍にアクセスできるようになり、現代の人々と古典籍との距離が縮まることが期待できます。
生成AIの技術は日々進化しています。そこでIIIF Tsukushi Viewerは、大規模言語モデル(LLM)を利用者が選べるようにしました。現在は10種類のLLMを用意しており、古典籍とのチャットに対する適性を比較できます。なおLLMの選択を支援するために、おすすめ度を☆で表示しました。
現在公開しているのは、様々な機能を実験的に提供する試行版です。今後、利用者からのフィードバックをもとに改良を重ね、今冬の正式版公開を目指した研究を続けていきます。
![](edozakura.png)
上の図は、IIIF Tsukushi Viewerに『絵本江戸桜』を表示し、本全体コンテキストを対象に、「この本に出てくるお寺の観光ガイドを作ってください」とプロンプトを入力した結果です。本のテキスト(古文)からプロンプトに関連するページを検索し、それをもとにガイド風の文章を生成しています。
元の古典籍が昔の日本語(古文)で書かれているにもかかわらず、入力(プロンプト)にも出力(回答)にも現代日本語が使える。これが生成AIチャットの大きなメリットです。
ソフトウェア
生成AIチャットは、以下の3つのソフトウェアが連携しています。
Tsukushi Content Service
IIIFの基本単位でテキストを登録し検索する機能をRESTful APIとして提供するウェブサービスです。このAPIはIIIFの識別子をキーとしてテキストを取得する仕組みを提供します。またテキスト化には、現在はAIくずし字OCRを用いています。さらにテキストのベクトル化にはテキスト埋め込みモデルを利用し、コサイン類似度を用いたベクトル検索も可能です。
なお、データベースにはPostgreSQL、ベクトル検索にはpgvector、テキスト埋め込みモデルにはOpenAIのtext-embedding-3-small(次元を1536から512に削減)を用いています。
Tsukushi Chat Service
利用者から受け取ったプロンプトを大規模言語モデルに伝え、その回答を利用者に届けるための機能をJSON-RPC APIとして提供するウェブサービスです。Tsukushi Content Serviceなどからテキストを引き出してコンテキストに加える機能や、LLMとのチャット履歴を管理する機能などを備えています。さらにTsukushi Chat Serviceから呼び出せるLLMを切り替えることができます。
ただし、課金APIを利用するモデルについては利用回数制限を設けています。またプライバシーポリシー/利用規約もご確認ください。
なお、LLMに関するプロンプトやメモリの管理にはLangChain、ローカルLLMとの接続にはOllamaを用いています。
IIIF Tsukushi Viewer
生成AIチャットを備えたIIIF画像ビューアです。IIIF Curation Viewerの基本機能を受け継ぎつつ、既存の機能の一部を改良することで、Tsukushi Content ServiceおよびTsukushi Chat Serviceと連携した生成AIチャットを実現しました。生成AIチャットを提供するサイドウィンドウには、コンテキスト選択、チャット履歴表示、プロンプト入力の機能などがあります。またLLMのモデルを切り替えて、目的にあったLLMを設定する機能も備えています。
IIIF Curation Viewerは、IIIF Curation Platformの中核となるソフトウェアです。
つくしサーチ
つくしサーチは、日本古典籍データセットを対象としたテキスト検索サービスです。検索結果からIIIF Tsukushi Viewerを立ち上げることで、生成AIチャットが利用できます。
Tsukushi Chat Serviceと大規模言語モデル(LLM)
Tsukushi Chat Service(TCS)で利用可能な大規模言語モデル(LLM)のリストを示します。☆3つから☆1つまで、おすすめ度の順番に表示します。
Anthropic Claude 3.5 Sonnet ☆☆☆
Anthropicが提供する Claude 3.5 Sonnet は、多言語の言語モデルです。 TCSでは利用回数制限を適用します。 ご利用の際には、 プライバシーポリシー や 利用規約 をご確認ください。
OpenAI GPT-4o ☆☆☆
OpenAIが提供する GPT-4o は、多言語のマルチモーダルなモデルです。 TCSでは利用回数制限を適用します。 プライバシーポリシー や 利用規約 をご確認ください。
Gemma2 ☆☆
Google DeepMindが公開する Gemma 2 は、多言語の言語モデルです。 gemma-2-27b-it (27.2B)をQ4_0で量子化したモデル をローカルLLMとして利用します。モデルのライセンスは、 Apache License 2.0 です。
Qwen2 ☆☆
Alibabaが公開する Qwen2 は、多言語の言語モデルです。 Qwen2-7B-Instruct (7.62B)をQ4_0で量子化したモデル をローカルLLMとして利用します。モデルのライセンスはApache License 2.0です。
Elyza ☆☆
Elyzaが公開する Llama-3-ELYZA-JP-8B は、日本語中心の言語モデルです。 Llama-3-8B-optimal-merged-stage2 (8.03B)をQ4_K_Mで量子化したモデル をローカルLLMとして利用します。モデルのライセンスは Meta Llama 3 Community License です。
Phi-3 ☆
Microsoftが公開する Phi-3 は、英語中心の言語モデルです。 Phi-3 Medium (14.0B)をQ4_0で量子化したモデル をローカルLLMとして利用します。モデルのライセンスはMIT licenseです。
LLM-jp ☆
LLM勉強会が公開する LLM-jp-13B-v2.0 は、日本語中心の言語モデルです。 llm-jp-13b-instruct-full-ac_001_16x-dolly-ichikara_004_001_single-oasst-oasst2-v2.0をggufフォーマットに変換してQ4_K_Mで量子化したモデル をローカルLLMとして利用します。モデルのライセンスはApache License 2.0です。
Mistral ☆
Mistral AIが公開する Mistral 7B は、英語中心の言語モデルです。 Mistral-7B-Instruct-v0.3 (7.25B)をQ4_0で量子化したモデル をローカルLLMとして利用します。モデルのライセンスはApache License 2.0です。
Llama3 ☆
Metaが公開する Llama3 は、英語中心の言語モデルです。 Meta-Llama-3-8B-Instruct (8.03B)をQ4_0で量子化したモデル をローカルLLMとして利用します。モデルのライセンスは Meta Llama 3 Community License です。
Aya ☆
Cohereが公開する Aya は、多言語の言語モデルです。 aya-23-35B (35.0B)をQ4_0で量子化したモデル をローカルLLMとして利用します。モデルのライセンスは、 CC-BY-NC 4.0 License with Acceptable Use Addendum です。
おすすめ度について
モデル選択の参考にするために、日本古典籍5ページのOCRテキストを現代日本語で要約するタスクを各モデルで実行し、その結果を相対評価して☆3つから☆1つまで分けました。例文の選定にあたっては、LLMにとって比較的扱いやすいと思われる5点の実用書の中から、異なるテーマを扱うページをサンプリングしました。ただし、文学作品はより難易度が高いと考えられるため、今回の評価には含めていません。
また、このおすすめ度は、モデル自体の評価とは以下の点で異なる点にもご注意下さい。
- ローカルLLMについては、元のモデルの重みを量子化したモデルを用いているため、元のモデルよりも性能が悪化している可能性があります。
- どのモデルでも共通のプロンプトを用いているため、モデルによっては最適なプロンプトになっていない可能性があります。
- 特定のタスクに関する小規模の評価結果であり、その他のタスクでは異なる結果となります。
利用回数制限について
TCSで利用するLLMは以下の2種類に分類することができます。
- 課金API:外部組織が提供するAPIにアクセスしてLLMを利用するため、API利用に料金が発生するもの
- 非課金API:プロジェクトで用意したGPU上で動作するLLM(ローカルLLM)を利用するため、API利用に料金が発生しないもの
課金APIの料金については、現在のところ受益者負担の仕組みがありません。そのため、持続可能なサービス設計とするために、FirebaseログインIDごとに利用回数制限を課しています。現在のところ、課金APIの利用を合計して24時間あたりの最大利用回数を10回としていますが、この回数は利用状況を見ながら変更する可能性があります。
プライバシーポリシー/利用規約
ローカルLLMとして利用する場合、TCSのプライバシーポリシー/利用規約を適用します。課金APIを利用する場合は、各社のウェブサイトをご覧下さい。