概要
「つくしチャット」は、IIIF Tsukushi Viewerの生成AIチャット機能を活用することで、「AIの支援を受けながら日本古典籍を読む」ことを可能とするサービスです。
上の図は、IIIF Tsukushi Viewerに『絵本江戸桜』を表示し、本全体コンテキストを対象に、「この本に出てくるお寺の観光ガイドを作ってください」とプロンプトを入力した結果です。本のテキスト(古文)からプロンプトに関連するページを検索し、それをもとにガイド風の文章を生成しています。元の古典籍が昔の日本語(古文)で書かれているにもかかわらず、入力(プロンプト)にも出力(回答)にも現代日本語が使えるというのが、生成AIチャットの大きなメリットです。
古典籍のAIくずし字OCRや翻刻から得られた古文テキストを対象に、現代日本語で質問し、現代日本語で回答が得られるようなシステムを実現することで、くずし字や古文が読めない人でも現代日本語を用いて古典籍にアクセスできるようになり、現代の人々と古典籍との距離が縮まることが期待できます。
もちろん古文から現代文への翻訳は常に正しいわけではなく、AIはきちんと文法や語彙を理解してチャットしているわけではありません。正確な意味については、学術的な文献を参照する、あるいは自分できちんと勉強して解釈する必要があります。
生成AIの技術は日々進化しています。そこでIIIF Tsukushi Viewerは、大規模言語モデル(LLM)を利用者が選べるようにしました。現在は11種類のLLMを用意しており、古典籍とのチャットに対する適性を比較できます。
なお、つくしチャットは、閲覧する本を決めた後に利用するサービスですが、閲覧する本を決めるにはつくしサーチをご利用ください。これは、日本古典籍データセットを対象としたテキスト検索サービスであり、検索結果から本やページを指定した状態でIIIF Tsukushi Viewerを起動することができます。
システム
つくしチャットは、以下の4つのソフトウェアが連携したシステムです。
IIIF Tsukushi Viewer
IIIF Tsukushi Viewerは、本の閲覧に用いられてきたIIIF (International Image Interoperability Framework)の世界に、大規模言語モデル(LLM)や大規模マルチモーダルモデル(LMM)などの生成AIを接続し、本を読みながら生成AIチャットを行うための仕組みを備えています。IIIF Curation Platformの中核となるIIIF Curation Viewerを拡張することで、IIIF機能とチャット機能を両立させました。
IIIF Tsukushi Viewerは3つのサービスと連携します。まずTsukushi Content Serviceは、IIIFの基本単位(manifestおよびcanvas)単位で本のテキストを登録/検索する機能を提供します。次にTsukushi Chat Serviceは、ユーザが入力したプロンプトとユーザが閲覧しているコンテンツを合わせたコンテキストを大規模言語モデルに入力し、チャットの内容を記憶しつつユーザに返答する機能を提供します。最後にTsukushi OCR Serviceは、Tsukushi Content Serviceに本のテキストが登録されていない場合に、オンデマンドでOCRをリクエストする機能を提供します。
IIIF Tsukushi Viewer自体は汎用的なツールであり、この3つのサービスをそれぞれのAPI仕様にしたがって構築すれば、任意のジャンルの本を対象とした生成AIチャットが提供できます。しかしそれぞれのサービスは、ジャンルを限定した方がよりユーザにとって使いやすいものとなります。そこで、この3つのサービスを日本古典籍に適した仕様で実装したのが「つくしチャット」です。以下では個々のサービスの実装の概要を説明します。
Tsukushi Content Service
IIIFの基本単位でテキストを登録し検索する機能をRESTful APIとして提供するウェブサービスです。このAPIはIIIFの識別子をキーとしてテキストを取得する仕組みを提供します。またテキスト化にはAIくずし字OCRおよびみんなで翻刻データ v2を用いています。さらにテキストのベクトル化にはテキスト埋め込みモデルを利用し、コサイン類似度を用いたベクトル検索も可能です。
なお、データベースにはPostgreSQL、ベクトル検索にはpgvector、テキスト埋め込みモデルにはOpenAIのtext-embedding-3-small(次元を1536から512に削減)を用いています。
Tsukushi Chat Service
利用者から受け取ったプロンプトを大規模言語モデルに伝え、その回答を利用者に届けるための機能をJSON-RPC APIとして提供するウェブサービスです。Tsukushi Content Serviceでテキストを検索してコンテキストに加える機能や、のチャット履歴を記憶・管理する機能などを備えています。さらにチャットの途中で大規模言語モデル(LLM)の選択を変更することもできます。チャットデータの扱いについては、プライバシーポリシー/利用規約もご確認ください。
なお、LLMに関するプロンプトやメモリの管理にはLangChainを利用しています。また、非課金APIであるローカルLLMとの接続にはOllamaを利用しています。一方、課金APIを利用するモデルには、利用回数制限を設けています。
Tsukushi OCR Service
Tsukushi Content Serviceにテキストが登録されていない資料に対して、オンデマンドでOCRをリクエストできるサービスです。リクエストは順次処理され、テキストおよびベクトルがTsukushi Content Serviceに登録され、Tsukushi Chat Serviceから利用できるようになります。
現在のオンデマンドOCRにはAIくずし字OCRを用いています。ただし、OCRが失敗することがあるため、成功するまで何回か試した方がよい場合もあります。
大規模言語モデル(LLM)の選択
Tsukushi Chat Service(TCS)で利用可能なLLMは現在11種類です。LLMの選択を支援するために、☆3つから☆1つまでおすすめ度を付与しました。以下はおすすめ順のLLMリストです。
1. Claude Sonnet 4.5 ☆☆☆
Anthropicが提供する Claude Sonnet 4.5 は、多言語の言語モデルです。 TCSでは利用回数制限を適用します。 ご利用の際には、 プライバシーポリシー や 利用規約 をご確認ください。
2. GPT-4o ☆☆☆
OpenAIが提供する GPT-4o は、多言語のマルチモーダルなモデルです。 TCSでは利用回数制限を適用します。 プライバシーポリシー や 利用規約 をご確認ください。
3. Gemini 2.0 Flash ☆☆☆
Googleが提供する Gemini 2.0 Flash は、多言語のマルチモーダルなモデルです。 TCSでは利用回数制限を適用します。
4. Phi-4 ☆☆
Microsoftが公開する Phi-4 は、多言語の言語モデルです。 Phi 4 (14.7B)を量子化したモデル をローカルLLMとして利用します。モデルのライセンスはMicrosoft Research License Agreementです。
5. Gemma3 ☆☆
Google DeepMindが公開する Gemma 3 は、多言語のマルチモーダルモデルです。 gemma3 (27.4B)を量子化したモデル 27b-it-qat をローカルLLMとして利用します。モデルのライセンスは、 Gemma Terms of Use です。
6. Qwen2.5 ☆☆
Alibabaが公開する Qwen2.5 は、多言語の言語モデルです。 Qwen2.5 32B (32.8B)を量子化したモデル をローカルLLMとして利用します。モデルのライセンスはApache License 2.0です。
7. DeepSeek R1 ☆☆
DeepSeekが公開する DeepSeek-R1 は、多言語の言語(推論)モデルです。 DeepSeek R1 Distill Qwen 32B (32.8B)を量子化したモデル をローカルLLMとして利用します。モデルのライセンスは、MIT Licenseです。
8. gpt-oss ☆☆
OpenAIが公開する gpt-oss は、多言語の言語モデルです。 gptoss (20.9B)を量子化したモデル をローカルLLMとして利用します。モデルのライセンスはApache License 2.0です。
9. LLM-jp ☆☆
LLM勉強会が公開する LLM-jp-3.1-13b-instruct4 は、日本語中心の言語モデルです。 llm-jp-3.1-13b-instruct4-gguf をローカルLLMとして利用します。モデルのライセンスはApache License 2.0です。
10. Elyza ☆
Elyzaが公開する Llama-3-ELYZA-JP-8B は、日本語中心の言語モデルです。 Llama-3-8B-optimal-merged-stage2 (8.03B)を量子化したモデル をローカルLLMとして利用します。モデルのライセンスは Meta Llama 3 Community License です。
11. Mistral Small 3.2 ☆
Mistral AIが公開する Mistral Small 3.2 は、多言語のマルチモーダルモデルです。 Mistral Small 3.2 (24B)を量子化したモデル をローカルLLMとして利用します。モデルのライセンスはMistral AI Research Licenseです。
おすすめ度
モデル選択の参考にするために、つくしチャットの要約を各モデルで実行し、その結果を相対評価して☆3つから☆1つまで分けました。ただし、おすすめ度はモデル自体の評価とは以下の点で異なる点にもご注意下さい。
- ローカルLLMとして、元のモデルの重みを量子化したモデルを用いているため、元のモデルよりも性能が悪化している可能性があります。
- どのモデルでも共通のプロンプトを用いているため、モデルによっては最適なプロンプトになっていない可能性があります。
- 特定のタスクに関する小規模の評価結果であり、その他のタスクでは異なる結果となります。
利用回数制限
TCSで利用するLLMは以下の2種類に分類することができます。
- 課金API:外部組織が提供するAPIにアクセスしてLLMを利用するため、API利用に料金が発生するもの
- 非課金API:プロジェクトで用意したGPU上で動作するLLM(ローカルLLM)を利用するため、API利用に料金が発生しないもの
課金APIの料金には、現在のところ受益者負担の仕組みがありません。そのため、持続可能なサービス設計とするために、FirebaseログインIDごとに利用回数制限を課しています。現在のところ、課金APIの利用を合計して24時間あたりの最大利用回数を100回としていますが、この回数は利用状況を見ながら変更する可能性があります。
プライバシーポリシー/利用規約
ローカルLLMとして利用する場合、TCSのプライバシーポリシー/利用規約を適用します。課金APIを利用する場合は、各社のウェブサイトをご覧下さい。