投稿日
社内AIチャット「TIS AIChatLab」:RAGアーキテクチャの刷新とUX改善
もくじ
はじめに
TISは、生成AIを活用した開発を推進しています。そして、その一環として自社データと連携する社内専用のChatGPT環境である「TIS AIChatLab」の開発を進めています。本記事は「TIS AIChatLab」のプロジェクトメンバーへのインタビューを通して、TISにおけるLLMやRAGに関する取り組みを紐解く企画です。全4回のシリーズ記事となります。
インタビュアー
水谷:会員制メディアAIDBの運営者。LLMなど機械学習の知見を論文ベースで紹介している。
サマリ
- 社内のAIチャット環境「TIS AIChatLab」の応答精度の改善を2024年1月から開始
- 組織横断のチームで、RAGアーキテクチャの刷新と応答精度の向上を実現
- RAG応答評価の継続改善のノウハウと仕組みを獲得した
プロジェクト開始
ーTIS AIChatLabプロジェクトはどのような流れで開発が進んできましたか?
浦上さん(以下、浦上):TIS AIChatLabは2023年7月に初期バージョンが公開し、社内情報検索をおこなえる10月にRAG構成へとバージョンアップされました。
社内の生成AI利用の期待に早期に応える一方、少ないエンジニアで対応していたため、いくつかの課題もあがっていました。そこで2024年1月からプロダクトチームの体制を強化し、RAGアーキテクチャの刷新と応答精度の向上に取り組むことになりました。

最初の課題
ー2024年1月時点でのTIS AIChatLabの課題はなんでしたか?
浦上:社内情報に対する回答に望む応答が出力されていなかったことです。また「応答精度の定量的な評価が行えていない」状態でした。
社内情報に対する応答がよくないことは利用者の声から聞こえていましたが「どの質問に回答ができてないか」といったクエリごとの評価や、そもそも検索ヒットができていないのか、合成処理に課題があるのか、といった原因切り分けができるログが十分にとれていませんでした。
ですので、まずは、LLM応答の評価ができる仕組みを構築すること。そして、RAGアーキテクチャの各処理の改善(検索、合成、チャンキング)を行う。これらを並行して進める必要がありました。

ープロジェクト上の役割分担について教えていただけますか?
浦上:中山が技術的なアドバイスとRAGの構築を担当しました。私はプロジェクト全体のマネジメントを担当し、田中は実装部分を担当しました。他のチームメンバーもそれぞれの専門分野でサポートしてくれました。
ーメンバーの方々はLLMやRAGに関する知識は、TIS AIChatLabプロジェクトが立ち上がる前からあったのでしょうか?
浦上:初期プロトタイプ開発時は予備知識がほぼありませんでした。RAGの性能改善の際は、他に知識を持っているメンバーがいたため、改善アプローチを提案してくれました。
また、中山は自然言語処理に関する知識があり、チームの指針となってくれました。
中山さん(以下、中山):もともとR&Dで自然言語処理の研究をしていたので、その知識がありました。また、最近は生成AIもキャッチアップしていたため、TIS AIChatLabにも参加することになりました。
田中さん(以下、田中):私も予備知識は特にありませんでした。また、PythonやLangChainについてもプロジェクト参加後にキャッチアップしました。1

RAGアーキテクチャの刷新
ー2024年1月から改めて性能を改善した際のポイントはなんですか?
浦上:RAG構築のアプローチを変え、Azureの”On Your Data”サービスを利用することからAzure AI Search、Azure AI Document Intelligenceを使用した自前方式に切り替えたことです。その過程でバックエンドのプログラム言語をJavaからPythonに移行しました。

ーOn Your Dataから自前でRAGを構築することに変更した理由を教えていただけますか?
浦上:On Your Dataはノーコードで導入できるため早期構築には適していたのですが、内部処理にブラックボックスな点が多く細かなカスタマイズや課題の切り分けができないことから、精度向上に限界がありました。
社内の文書をもとにユーザーへの回答を行うためには、まず該当の情報を含む文書を検索ヒットさせなければいけない。検索性能の向上が必要です。RAGの課題の多くは検索部分に起因するということは事前調査で分かっていたので、検索性能の向上が見込める方式が必要でした。
2024年11月ごろからAzure AI Searchを用いたRAG構築の公式リファレンスが徐々に充実してきていました。それらをもとに検索処理の改善ポイントをチームで共有できたので、計画段階で方式変更を意思決定することができました。
RAGと生成AI – Azure AI Search | Microsoft Learn
ー検索の改善点とはどのようなものでしょうか?
浦上:二つに分けてお話します。ひとつはユーザーからの質問への検索・応答処理です。もうひとつは社内文書検索のベクトルDBを作る際の文書のチャンキング部分です。

浦上:検索処理にはAzure AI Searchによるハイブリッド検索を使用しています。また社内文書の検索ヒット率を高めるために、ユーザーの質問を検索にそのまま使うのではなく、検索に適した形式に変換する処理(クエリの言い換え)を、検索の前処理に加えています。

中山:Azure AI Searchを使用することで、インデックスのチューニングがしやすくなるなどのメリットもありました。検索の部分はシノニムマップ(同義語辞書)を使用し、社内の独自用語へも対応できるような改善も加えています。

ーチャンキング処理の改善点とはどのようなものでしょうか?
中山:社内文書のチャンキング処理では、文章を単に流すのではなく、文章の構造を利用して意味的にきれいに切り分け、それを検索対象となるベクトルDBのインプットにしています。チャンキング処理ではAzure AI Document Intelligenceを活用しています。

浦上:改善前のOn your dataの固定サイズでのチャンキングでは、文の途中で分割がされてしまい、文脈や意味が失われてしまっていました。改善後は、Azure AI Document Intelligenceを使用して文書全体のレイアウトを解析し、テキストブロック、表のキー/バリューのペアを考慮したチャンキング処理を実装しました。
中山:ルールベースと自然言語処理技術の両方を試してデータの区切り方を検討した結果、現在はルールベースで行っている部分も多いです。この点は今後も改善を進めるポイントです。

ーJavaからPythonへの移行はどのように決められたのでしょうか?
浦上:初期段階でPythonへの移行をチームで決めました。クエリプロセスの改善にはLangChainを使用することが予想されたので、Pythonが実装しやすいだろうと。チャンキング処理もPythonで行うため、バックエンドの処理はPythonに統一できると保守面でもメリットが大きいです。
田中:アプリケーション側では大きな問題なく移行できました。プログラム言語の変換作業は、外部仕様に基づき、技術を選定し実装しました。
TIS AIChatLab 技術スタックまとめ

RAG構築における重要なポイント
ーRAG構築において重要な点について教えてください。
中山:RAGの構築自体はそれほど難しいものではありませんが、RAGに与えるデータをどのように綺麗にするかが重要です。モデルに与えるデータが汚いと良い結果は出ないためです。インプットとなる社内文書のチャンキング処理が、まず重要なポイントです。
また応答評価の継続改善のためにはRAGの性能を定量的に評価する必要があります。測定のためのデータセットを整備することも必要です。初期段階では測定するためのデータセットがありませんでしたので、既存のFAQデータを利用してデータセットを作成する必要がありました。
浦上:FAQデータ以外の評価データセットを社内有識者にどのようにデータを作成してもらうか。そのプロセスを効率的に進められるかは重要なポイントでした。
ー評価データセットをもとに、RAGの応答精度を段階的に改善していくと。
浦上:はい。作成した評価データセットをもとに、人手による評価と定量指標によるLLMを用いた評価の二つを行い、応答改善を定量的に測れるようにしています。
定量評価がないと、アプリの改修やインデックスの更新に対しデグレードしていないかの判断ができません。
応答精度の検証は、アプリの改善/データの改善の両方を含み、かつ反復的なプロセスなので、素早く検証を繰り返すことができる仕組みを初期から構築することが最も重要です。
この応答評価の継続改善のノウハウと仕組みは、異なるデータやRAGプロジェクトでも基本的に使い回せるものになっています。

社内プロジェクトの協力体制
ー協力体制で工夫された点はありますか?
浦上:それぞれの役割を担当する要員をアサインできたことが大きいです。
評価データセットの作成に協力いただける情報システム部門と共に体制を組めていることはとても重要でした。
また、プロダクトチームはAI関連プロダクトを専門とした事業部と合同チームを組めたことも大きいです。データエンジニア2名がドキュメントを解析して、セマンティックなチャンキングを確立してインデックスに導入する部分を担当していただき、大変頼りになりました。

浦上:組織間の調整には時間がかかるものですが、この点は組織長が具体的に働きかけてくれたことで実現しました。その点も職能横断的でしたね。RAGはデータの品質もとても重要ですので、ドメイン有識者との連携も必要となります。
開発メンバーだけでは改善を進めることはできません。「組織横断、職能横断の体制がなければ社内AIチャットの改善は進まない」ということは強調してお伝えしたい点です。
ー理想的な役割分担のバランスについてはいかがでしょうか?
浦上:LLM回答精度の評価は全員が未経験でノウハウがない分野でしたが、今回のプロジェクトでノウハウが蓄積されてきています。今後の回答精度の評価は経験豊富なメンバーがサポートすることで、よりスムーズかつ効果的に進められる可能性があると感じています。
今後の展望
ー社内の利用状況と今後の展望を教えてください。
浦上:昨年度はRAGの特定の文書への応答精度の向上を達成しました。今回のプロジェクトの目標は、限られた期間で特定領域のユースケースで応答精度を担保すること、利用者にUXの変化を印象づけられることを目標としていました。最終的には応答精度を改善させることができました。利用者やステークホルダーからも、精度向上の声が届いています。投入データを増やして回答可能なデータの範囲も広がったことも大きいです。
今期は応答品質を担保するデータ領域を拡大していきます。TIS AIChatLabの社内の利用者は増えていますし、さらに増やそうとしています。

浦上:また、今期は利用のしやすさに重点を置いて活動しています。使ってもらうことで改善点も多く見つかりますし、何より利用者の業務効率が改善されることを狙っています。生成AIによって業務全体の効率化を図るという会社としての目標があり、TIS AIChatLabもその一環として活用しています。経営層や一部の部門だけでなく、全社的に生成AIを活用していく流れがあります。
ーTIS AIChatLabの社内外への影響に関してはどうでしょうか?
浦上:TIS AIChatLabは生成AIを使ったシステム開発の実践の場でした。今後は培ったノウハウをビジネスに繋げ、収益に貢献することが重要だと考えています。さらに、お客様のプロジェクトでも生成AIの活用が進められており、今回のプロジェクトを皮切りに、今後もTISは生成AIに深く関わっていくと考えています。お客様の業務変革の実現と提供価値の向上に向けて、私たちの強みを届けていきます。
また、このインタビュー記事を通して、TISが生成AI、RAGの実践に取り組んでいることを社内外にアピールできると嬉しいです。生成AI関連の仕事を求めるAI人材の獲得にも繋げたいです。
まとめ
TISでは、自社データと連携するチャットシステム「TIS AIChatLab」の開発を通して、生成AIの活用に積極的に取り組んでいます。
TIS AIChatLabは、社内の様々なデータと連携し、利用者からは精度向上の声が上がっており、利用者数も増加傾向にあります。TISでは全社的に生成AIを活用していく流れがあり、TIS AIChatLabで培ったノウハウをビジネスに繋げ、収益に貢献することを目指しています。
今回はプロジェクトメンバーへのインタビューを通して、TIS AIChatLabの性能改善における開発過程や課題、役割分担、社内での反響などを知ることができました。
次回は、AIChatLabの性能改善”評価”にフォーカスしてお届けします。ぜひご覧ください!
「TIS AIChatLab」:RAG応答評価の仕組みとプロセス
1. LangChainは、以下ライセンスに基づいて利用しています。↩︎
MIT License
Copyright (c) LangChain, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
